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

RFpro.ru: Программирование на языке Pascal


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

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

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

Асмик Гаряка
Статус: Советник
Рейтинг: 10826
∙ повысить рейтинг »
Орловский Дмитрий
Статус: Мастер-Эксперт
Рейтинг: 7321
∙ повысить рейтинг »
Роман Селиверстов
Статус: Советник
Рейтинг: 5270
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Pascal (Паскаль)

Номер выпуска:1249
Дата выхода:26.06.2013, 10:00
Администратор рассылки:Boriss (Академик)
Подписчиков / экспертов:51 / 56
Вопросов / ответов:2 / 3

Консультация # 187480: Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос: Дан текст. Найти слово в тексте, отличающееся не более, чем на два символа. Например: ищем корова - находим крова, карова, кроова и т.д. Программа на языке Turbo Pascal. ...


Консультация # 187481: Здравствуйте! Прошу помощи в следующем вопросе: Дан файл f, компоненты которого являются действительными числами. Найти: а) наибольшее из значений компонент; б) наименьшее из значений компонент с четными номерами. Программа на языке Turbo Pascal. ...

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

Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос:

Дан текст. Найти слово в тексте, отличающееся не более, чем на два символа. Например: ищем корова - находим крова, карова, кроова и т.д.
Программа на языке Turbo Pascal.

Дата отправки: 23.06.2013, 09:37
Вопрос задал: Aleksandrkib (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Александр Чекменёв (Академик):

Здравствуйте, Aleksandrkib!

Ожидается, что формат строки -- слова, разделённые пробелом.

Код :
function cutChar(s: String; p: Integer): String;
var
    str, ing: String;
begin
    str := copy(s, 1, p-1);
    ing := copy(s, p+1, length(s));
    cutChar := concat(str, ing);
end;

function sameStrings(s1: String; s2: String): boolean;
var
    len, i, p: Integer;
begin
    sameStrings := false;

    len := length(s1);
    if len <> length(s2) then exit;

    for i := 1 to len do
    begin
        p := pos(s1[1], s2);
        if p = 0 then exit;

        sameStrings := sameStrings(cutChar(s1, 1), cutChar(s2, p));
        if sameStrings = false then exit;
    end;

    sameStrings := true;
end;

function difference(s1: String; s2: String): String;
var
    len, i, p: Integer;
    s: String;
begin
    difference := '';

    if length(s1) < length(s2) then
    begin
        s := s1;
        s1 := s2;
        s2 := s;
    end;

    if length(s2) = 0 then
    begin
        difference := s1;
        exit;
    end;

    p := pos(s1[1], s2);
    if p = 0 then
        difference := concat(difference, s1[1], difference(cutChar(s1, 1), s2))
    else
        difference := concat(difference, difference(cutChar(s1, 1), cutChar(s2, p)));
end;

procedure writeDifferNoMore(text: String; word: String; dist: Integer);
var
    next: String;
    spacePos, p: Integer;
    diff: String;
begin
    while length(text) > 0 do
    begin
        spacePos := pos(' ', text);
        if spacePos > 0 then
            p := spacePos
        else
            p := length(text)+1;
        next := copy(text, 1, p-1);

        diff := difference(next, word);
        if length(diff) <= dist then
            write(next, ' ');
        delete(text, 1, p);
    end;
end;


var
    text, word: String;
begin
    //write(difference('abc', 'a1b2c'));
    write('Введите текст: '); readln(text);
    write('Введите слово: '); readln(word);
    writeDifferNoMore(text, word, 2);
end.


Примеры вывода:

© Цитата:
Введите текст: крова карова кроова ололо пышь пышь
Введите слово: корова
крова карова кроова

© Цитата:
Введите текст: можно грабить корованы
Введите слово: корова
корованы

Консультировал: Александр Чекменёв (Академик)
Дата отправки: 23.06.2013, 20:15
Рейтинг ответа:

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

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

Здравствуйте! Прошу помощи в следующем вопросе:

Дан файл f, компоненты которого являются действительными числами. Найти:
а) наибольшее из значений компонент;
б) наименьшее из значений компонент с четными номерами.

Программа на языке Turbo Pascal.

Дата отправки: 23.06.2013, 09:39
Вопрос задал: Aleksandrkib (Посетитель)
Всего ответов: 2
Страница онлайн-консультации »


Консультирует Орловский Дмитрий (Мастер-Эксперт):

Здравствуйте, Aleksandrkib!
По условию задачи дан файл вещественных чисел, а не целых. Привожу переделанный вариант первого решения для данного случая:

Код :
const
  FileName: String = '187481.dat';
  {Имя файла, из которого будут считываться числа}
var
  f: file of Real;
  i: Word;
  w, w_min, w_max: Real;
begin
  Assign(f, FileName);
  i := 0;
  Read(f,w_max);
  w_min := w_max;
  while (not Eof(f)) do begin
    i:=i+1;
    Read(f,w);
    if w > w_max then w_max := w;
    if (((i mod 2) = 0) and (w < w_min)) then w_min := w;
  end;
  WriteLn('w_min= ', w_min,',   w_max= ', w_max);
  Close(f);
  Readln;
end.

Консультировал: Орловский Дмитрий (Мастер-Эксперт)
Дата отправки: 23.06.2013, 17:14
Рейтинг ответа:

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


Консультирует Boriss (Академик):

Здравствуйте, Aleksandrkib!
Вот в приложении в архиве, чтобы было все нормально, два исходных файла: M187481.PAS, который генерирует файл чисел типа Word. Числа случайные.
Второй файл P187481.PAS - собственно, программа, которая анализирует файл
Тщательно работу не анализировал, так что если заметите что-то не так пишите - исправлю

Приложение:

Консультировал: Boriss (Академик)
Дата отправки: 23.06.2013, 13:52
Рейтинг ответа:

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


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

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

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



В избранное