Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на Delphi и Lazarus


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты по данной тематике

Асмик Гаряка
Статус: Академик
Рейтинг: 10417
∙ повысить рейтинг »
Орловский Дмитрий
Статус: Мастер-Эксперт
Рейтинг: 7190
∙ повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 2340
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Delphi и Lazarus

Номер выпуска:1625
Дата выхода:04.05.2012, 19:00
Администратор рассылки:Киселёва Алёна aka Verena (Академик)
Подписчиков / экспертов:143 / 95
Вопросов / ответов:1 / 1

Консультация # 185938: Уважаемые эксперты! Пожалуйста, ответьте на вопрос: помогите выполнить вот такие задания на делфи(в консоле): 1)Дан файл f, компоненты которого являются действительными числами. Найти модуль суммы и квадрат компонент файла f. 2)Найти самое длинное общее слово двух заданных предложений. 3)"Порядок" на точках плоскости определи...


Консультация # 185938:

Уважаемые эксперты! Пожалуйста, ответьте на вопрос:
помогите выполнить вот такие задания на делфи(в консоле):
1)Дан файл f, компоненты которого являются действительными числами. Найти модуль суммы и квадрат компонент файла f.
2)Найти самое длинное общее слово двух заданных предложений.
3)"Порядок" на точках плоскости определили следующим образом: (x,y)<=(u,v), если либо x<u, либо x=u b y<=v. Перечислить точки заданного множества точек на плоскости в соот-ветствии с этим порядком.

Дата отправки: 01.05.2012, 18:23
Вопрос задал: Бондаренко Сергей Николаевич (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Сергей Бендер (Профессионал):

Здравствуйте, Бондаренко Сергей Николаевич!

Поскольку вы не пояснили 3-ю задачу, даю решение только для двух.

Код :
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

const MyFileName='chisla.dat'; // имя файла
      n=10;

var f:file of real;
    a,sum1,sum2:real;
    st1,st2,st3,stmax:string;
    i,j,k:integer;

begin
  { TODO -oUser -cConsole Main : Insert code here }

  // Создание файла
  AssignFile(f,MyFileName);
  rewrite(f); // Открытие файла
  for i:=1 to n do // пишем десять чисел
  begin
       a:=10*random; // random -- случайное число от 0 до 1
                     //  10*random -- от 0 до 10
       write(f,a);   // число в файл
  end;
  CloseFile(f);

  // Задание 1)
  AssignFile(f,MyFileName);
  reset(f);   // Открытие файла
  sum1:=0;    // Начальное обнуление сумм
  sum2:=0;
  while not eof(f) do // Пока НЕ дошли до конца файла
  begin
       read(f,a);   // читаем число
       sum1:=sum1+a;  // добавляем к сумме
       sum2:=sum2+sqr(a); // добавляем к сумме квадратов
  end;
  sum1:=abs(sum1); // Вычмсляем модуль суммы
  writeln('Mudul summy: ',sum1); // Вывод на экран
  writeln('Summa kvadratov: ',sum2);

  // Задание 2
  st1:='odin dva tri chetyre piat'; // Исходные строки
  st2:='tridtsat chetyre dvadtsat piat sto';
  i:=1; // Начинаем перебирать буквы строки st1 с первой
  stmax:=''; // Переменная для результата. Начальное значение -- пустая строка,
                           // т.е. строка с минимальной возможной длиной
  while i<=length(st1) do // Пока не добрались до последней буквы
  begin
       // Ищем начало очередного слова.
       // Признак того, что очередной символ строки -- буква
       // это то, что она по ASCII-коду не меньше, чем первая буква алфавита,
       // и не больше, чем послендняя.
       while (i<=length(st1)) and not ((st1[i]>='a') and (st1[i]<='z')) do
       // пока не вышли за конец строки и текущий символ -- не буква
             inc(i); // увеличиваем индекс
       // Ищем конец слова
       j:=i;
       while (j<=length(st1)) and (st1[j]>='a') and (st1[j]<='z') do
       // пока не вышли за конец строки и текущий символ -- буква
             inc(j); // увеличиваем индекс
       if j>i // если конец больше чем начало, т.е. слово найдено
       then begin
            st3:=copy(st1,i,j-i); // командой copy вынимаем слово с i-й позиции
            k:=pos(st3,st2); // командой pos ищем слово другой строке
            if (k<>0) and (length(st3)>length(stmax))
            // если результата pos ненулевой, т.е. слово найдено
            // и если его длина больше, чем длина ранее найденных слов
            then stmax:=st3; // запоминаем его
       end;
       i:=j; // сдвигаем текущую позицию в st1 на конец найденного слова
  end;
  writeln('Samoe dlinnoe obshee slovo: ',stmax);
  readln;
end.

Консультировал: Сергей Бендер (Профессионал)
Дата отправки: 03.05.2012, 21:52
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка  |  восстановить логин/пароль

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!



В избранное