• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Работа с текстовым файлом

  • Автор темы Автор темы citrus
  • Дата начала Дата начала

citrus

Новые
Регистрация
29 Сен 2009
Сообщения
32
Реакции
0
Баллы
0
Работа с текстовым файлом

Прошу помощи.
Дан файл. Слова в нем разделены пробелами. Найти самое длинное слово среди тех, вторая буква которых "Е".


Получается, что нужно как-то разбивать каждое слово на буквы и сравнивать вторую, "Е" или нет. Вот не знаю как сделать этот момент.

Заранее благодарю.
 
и еще, скажите пожалуйста, реально эту задачу решить на паскале:

Изобразить на экране треугольник, который движется по сторонам другого треугольника. Причем, когда вершины треугольника совпадают, движущийся треугольник делает поворот.
 
Прошу помощи.
Дан файл. Слова в нем разделены пробелами. Найти самое длинное слово среди тех, вторая буква которых "Е".


Получается, что нужно как-то разбивать каждое слово на буквы и сравнивать вторую, "Е" или нет. Вот не знаю как сделать этот момент.

Заранее благодарю.
Могу предложить такое решение:
Код:
VAR
 f,f1:TEXT;
 c:Char;
 S,Smax:String;
 MaxLeng:WORD;
BEGIN
 Assign(f,'D:\Inp_f');
 ReSet(f);
 Assign(f1,'D:\Out_f');
 ReWrite(f1);
 Repeat
  Repeat
   Read(f,c);
   If c<>' ' then Write(f1,c);
  Until (c=' ') or (EoF(f));
  If (NOT EoF(f)) then WriteLn(f1);
  Repeat
   Read(f,c);
  Until (c<>' ') or (EoF(f));
  If (NOT EoF(f)) then Write(f1,c);
 Until EoF(f);
 Close(f);
 Close(f1);
 MaxLeng:=0;
 ReSet(f1);
 Repeat
  ReadLn(f1,S);
  If (Length(S)>MaxLeng) and ((S[2]='e') or (S[2]='E')) then
   begin
    Smax:=S;
    MaxLeng:=Length(S);
   end;
 Until EoF(f1);
 Close(f1);
 Erase(f1);
 WriteLn('The longest word with second "e" is "'+Smax+'"');
 ReadLn;
END.
Здесь применен следующий алгоритм: создается промежуточный файл, в котором КАЖДОЕ слово исходного файла располагается на СВОЕЙ СТРОКЕ. Далее эти строки поочередно считываются из промежуточного файла и из тех, в которых второй буквой является "e" или "E", выбирается наидлиннейшее. ВНИМАНИЕ - ВАЖНО! Во избежание проблем с кодировками символы "e" и "E" считались ЛАТИНСКИМИ! То есть и текст должен быть написан ЛАТИНИЦЕЙ. Впрочем, это можете поправить. В конце программы промежуточный файл уничтожается.
Имена файлов и пути скорректируйте, если надо.
 
и еще, скажите пожалуйста, реально эту задачу решить на паскале:
Это реально, но ОЧЕНЬ долго и нудно. Я не возьмусь. Просто за неимением чисто временнЫх возможностей. Но если Вы сами попробуете - поможем.
 
Могу предложить такое решение:
Код:
VAR
 f,f1:TEXT;
 c:Char;
 S,Smax:String;
 MaxLeng:WORD;
BEGIN
 Assign(f,'D:\Inp_f');
 ReSet(f);
 Assign(f1,'D:\Out_f');
 ReWrite(f1);
 Repeat
  Repeat
   Read(f,c);
   If c<>' ' then Write(f1,c);
  Until (c=' ') or (EoF(f));
  If (NOT EoF(f)) then WriteLn(f1);
  Repeat
   Read(f,c);
  Until (c<>' ') or (EoF(f));
  If (NOT EoF(f)) then Write(f1,c);
 Until EoF(f);
 Close(f);
 Close(f1);
 MaxLeng:=0;
 ReSet(f1);
 Repeat
  ReadLn(f1,S);
  If (Length(S)>MaxLeng) and ((S[2]='e') or (S[2]='E')) then
   begin
    Smax:=S;
    MaxLeng:=Length(S);
   end;
 Until EoF(f1);
 Close(f1);
 Erase(f1);
 WriteLn('The longest word with second "e" is "'+Smax+'"');
 ReadLn;
END.
Здесь применен следующий алгоритм: создается промежуточный файл, в котором КАЖДОЕ слово исходного файла располагается на СВОЕЙ СТРОКЕ. Далее эти строки поочередно считываются из промежуточного файла и из тех, в которых второй буквой является "e" или "E", выбирается наидлиннейшее. ВНИМАНИЕ - ВАЖНО! Во избежание проблем с кодировками символы "e" и "E" считались ЛАТИНСКИМИ! То есть и текст должен быть написан ЛАТИНИЦЕЙ. Впрочем, это можете поправить. В конце программы промежуточный файл уничтожается.
Имена файлов и пути скорректируйте, если надо.

Огромное Вам спасибо!
 
Назад
Сверху