Форум
» Назад на решение задач по физике и термеху
Регистрация | Профиль | Войти | Забытый пароль | Присутствующие | Справка | Поиск

» Добро пожаловать, Гость: Войти | Регистрация
    Форум
    Информационные технологии
        Решение задач на Pascal. Форум 3.
Отметить все сообщения как прочитанные   [ Помощь ]
» Добро пожаловать на форум "Информационные технологии" «

Переход к теме
<< Назад Вперед >>
Несколько страниц [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 ]
Модераторы: paradise, KMA
  

Dale



Участник

Как и обещал, пишу пример:
Code Sample:
 
{Решение задач типа
"Вывести все слова, удовлетворяющие определенному  условию"}
uses crt;
const razd=' '; {разделитель}
var s:string;     {входная строка}
    result:string;{результат}
    {дополнительные переменные}
    s1,s2:string;
    l:integer;

function pr(s:string):boolean;{функция для проверки условия}
var i:integer;
     result:boolean;
begin
  result:=false;
  for i:=1 to length(s) do
    if s[ i ]='к' then result:=true;
  pr:=result;
end;

begin
  clrscr;
  writeln('Введите строку:');
  readln(s);

  {------------------------------}
  result:='';
  s:=s+razd;{Прибавляем в конец строки разделитель для того, чтобы каждое
            слово оканчивалось пробелом}
  {Перебор всех слов}
  while length(s)>0 do begin
    l:=pos(razd,s);{Позиция первого разделителя в строке}
    s1:=copy(s,1,l-1);{Выбираем очередное слово (не включая разделитель)}
    if pr(s1) then result:=result+s1+razd;{Если выполняется условие,
                                           прибавляем к результату слово}
    delete(s,1,l);{Удаляем слово из строки}
  end;
  {------------------------------}

  writeln(result);
  readkey;
end.



Как работает, думаю будет ясно из комментариев.

Замечу, что:
1)Пробел к концу слова прибавлять не обязательно, но ИМХО удобно. Вообще, чтобы выделить слова, можно считать, что они:
  1. Разделены пробелами
  2. Оканчиваются пробелами
Условием конца слова  в первом случае выступает "в конце пробел или слово в конце строки". Если прибавить в конце строи пробел, то выйдет, что достаточно условия "В конце слова находится пробел".
2) В принципе можно обойтись без использования функций, но использование функции имеет преимущество: если понадобится не "вывести все слова, содержащие к", а например "вывести все слова, содержащие не менее пяти букв", достаточно просто изменить функцию:
Code Sample:
 
function pr(s:string):boolean;{функция для проверки условия}
begin
 pr:=(length(s)>=5);
end;




Всего сообщений: 139 | Присоединился: май 2009 | Отправлено: 19 янв. 2010 15:12 | IP
Vurdis



Новичок

Dale
Спасибо огромное)

Всего сообщений: 10 | Присоединился: декабрь 2009 | Отправлено: 19 янв. 2010 15:49 | IP
Dale



Участник

На здоровье:-)

Marina0331  


Новичок написала программку в паскале, а мне выдает ошибку, не могу понять почему. помогите пожалуйста.


Пропущена точка с запятой после readln
И еще: pi - стандартная константа паскаля, ее не обязательно объявлять заново


(Сообщение отредактировал Dale 20 янв. 2010 1:39)

Всего сообщений: 139 | Присоединился: май 2009 | Отправлено: 20 янв. 2010 1:38 | IP
homka76



Новичок

Спасайте!!!!!!!! Сдать надо срочно контрольную по пргграммированию. 3 задачи решила, а еще с тремя - проблемы.
1. Дана матрица N x N вещественных чисел. Найти скалярное произведение столбца, содержащего максимальный элемент и строки, содержащей минимальный элемент матрицы. Если элементов несколько, то взять первый из имеющихся.
2. Дана последовательность слов. В каждом из них от 3 до 10 латинских букв; между словами - один пробел; за последним словом точка. Вывести в текстовый файл все слова, преобразовав их по правилу: оставить в слове только первые вхождения каждой буквы.
3. Дана информация о группе студентов, соержащая фамилию, несколько предметов, оценки по предметам.
Вывести название предметов, по которым наилучшая и наихудшая успеваемость.
Использовать структурный тип: массив записей. Исходные данные о студентах должны быть введены в программу из текстового файла.

Заранее огромное спасибо!!!!!!!!!!!!! СПАСАЙТЕ!!!!!!!!!!!!!!! ответ вышлите на почту mkv76@mail.ru

Всего сообщений: 1 | Присоединился: январь 2010 | Отправлено: 22 янв. 2010 6:03 | IP
Alice Depp


Новичок

третью задачу, я  знаю алгоритм решения, но ни разу не сталкивалась вводом из текстового файла(((

Всего сообщений: 8 | Присоединился: январь 2010 | Отправлено: 25 янв. 2010 15:41 | IP
Alice Depp


Новичок

люди помогите плиз)))
Задача

В двумерном массиве верно ли что макс и мин элемент находятся в одной области

я чет набурдыкала, не считает, посмотрите, где ошибка,а??


uses crt;
var A:array [1..50,1..50]of integer;
i,j,n,m,max,min,s,l,h,v:integer;
   begin    clrscr;
   write('vvedite n(stroki)');read (n);
   write('vvedite m(stolbci)');read (m
);
   for i:=1 to n do
   for j:=1 to m do
       read (A[i,j]);

       max:=A[1,1];
       for i:=1 to n do
   for j:=1 to m do
   if A[i,j] >max then max:=A[i,j];

   for i:=1 to n do
   for j:=1 to m do
   if A[i,j]=max then  s:=i;

   for i:=1 to n do
   for j:=1 to m do
   if A[i,j]=max then  l:=j;



   min:=A[1,1];
       for i:=1 to n do
   for j:=1 to m do
   if A[i,j] <min then min:=A[i,j] ;

    for i:=1 to n do
   for j:=1 to m do
   if A[i,j]=min then h:=i;

   for i:=1 to n do
   for j:=1 to m do
   if A[i,j]=min then v:=j;



   if (s< n div 2) and  (h< n div 2) and   (l< m div 2) and   (v< m div 2) then write ('yes');
   if  (s< n div 2) and  (h< n div 2) and   (l> m div 2) and   (v> m div 2) then write ('yes');
   if  (s> n div 2) and  (h> n div 2) and   (l< m div 2) and   (v< m div 2) then write ('yes') ;
  if     (s> n div 2) and  (h> n div 2) and   (l> m div 2) and   (v> m div 2)then write ('yes');

        end.



Всего сообщений: 8 | Присоединился: январь 2010 | Отправлено: 26 янв. 2010 19:28 | IP
Korvet



Новичок


Цитата: Alice Depp написал 26 янв. 2010 19:28

Задача
В двумерном массиве верно ли что макс и мин элемент находятся в одной области



program Alice_Depp;

var
A:array [1..50,1..50] of integer;
i,j,n,m,max,min,imax,imin,jmax,jmin:integer;
  begin

  write('vvedite n(stroki)');readln (n);
  write('vvedite m(stolbci)');readln (m);
  for i:=1 to n do
   for j:=1 to m do
    readln (A[ i,j ]);

  max:=A[1,1];
  min:=A[1,1];
  imin:=1;
  jmin:=1;
  imax:=1;
  jmax:=1;

  for i:=1 to n do
  for j:=1 to m do
   begin
    if A[ i,j ] >max then
     begin
      max:=A[ i,j ];
      imax:=i;
      jmax:=j;
     end;
    if A[ i,j ]<min then
     begin
      min:=a[ i,j ];
      imin:=i;
      jmin:=i;
     end;
   end;


 if (imin<= n div 2) and  (imax<= n div 2) and   (jmin<= m div 2) and   (jmax<= m div 2) then writeln ('da') else
  if  (imin<= n div 2) and  (imax<= n div 2) and   (jmin>= m div 2) and   (jmax>= m div 2) then writeln ('da') else
   if  (imin>= n div 2) and  (imax>= n div 2) and   (jmin<= m div 2) and   (jmax<= m div 2) then writeln ('da') else
    if  (imin>= n div 2) and  (imax>= n div 2) and   (jmin>= m div 2) and   (jmax>= m div 2) then writeln ('da') else
     Writeln('net');
 readln;
       end.

Всего сообщений: 40 | Присоединился: ноябрь 2009 | Отправлено: 27 янв. 2010 1:41 | IP
Alice Depp


Новичок

Спасибо, ОГРОМНОЕ!!!

Всего сообщений: 8 | Присоединился: январь 2010 | Отправлено: 27 янв. 2010 15:23 | IP
westside



Новичок

Доказать (путем перебора возможных значений), что для любых величин A,B,c типа Boolean следующие пары логических выражений имеют одинаковые значения(эквивалентны):
1)А and B и B and A;
2)(A and B) and C и A and (B and C);
3)A or (A and B) и A;
4)A or (b and C) и (A or B) and (A or C).

Всего сообщений: 2 | Присоединился: апрель 2008 | Отправлено: 31 янв. 2010 23:00 | IP
fclm1996


Новичок

помогите плиз с 6 задачами до вторника
1) Написать программу, которая 10 раз выводит на экран имя и фамилию
2) написать программу, которая выводит таблицу квадратов первых десяти положительных чисел
3) написать программу, которая выводит таблицу квадратов первых пяти нечётных чисел
4) написать программу, которая вычисляет сумму первых n целых положительных чисел. Количество суммируемых чисел должно вводиться во время работы программы. Например: количество суммируемых чисел=20, значит ответ=)210
5) написать программу которая вычисляет сумму первых n целых положительных чётных чисел. Количество суммируемых чисел должно вводиться во время работы программы. например количество суммируемых чисел:12, значит сумма первых 12 положительных чисел =156
6) Написать программу, которая вычисляет сумму первых n членов ряда задаётся во время работы компьютера. Например количество суммируемых членов ряда 15, значит суммв первых 15 членов ряда равна 330

Помогите пожалуйста! оч надо! я сам ваще Паскаль не понимаю...

Всего сообщений: 1 | Присоединился: январь 2010 | Отправлено: 1 фев. 2010 11:57 | IP

Отправка ответа:
Имя пользователя   Вы зарегистрировались?
Пароль   Забыли пароль?
Сообщение

Использование HTML запрещено

Использование IkonCode разрешено

Смайлики разрешены

Опции отправки

Добавить подпись?
Получать ответы по e-mail?
Разрешить смайлики в этом сообщении?
Просмотреть сообщение перед отправкой? Да   Нет
 

Переход к теме
<< Назад Вперед >>
Несколько страниц [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 ]

Форум работает на скрипте © Ikonboard.com