Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.02.2014, 20:24   #1
serge-first
Пользователь
 
Регистрация: 27.02.2013
Сообщений: 66
По умолчанию Программы обработки текстовых файлов в PascalABC.NET

Задание 1 Текстовый файл содержит сведения о кольцевых туристических маршрутах: список городов и стоимость тура в рублях, в каждой строке файла один маршрут (например, «Челябинск – Екатеринбург – Казань – Москва – Самара – Уфа – Челябинск. 5000»). Требуется найти маршрут с наибольшим количеством городов и указать его стоимость. Полученные данные записать в текстовый файл.

Задание 2 Из ассортимента конфет, выпускаемых пермской кондитерской фабрикой, выбрать те, стоимость которых за 1 кг попадает в указанный диапазон. Указать срок их годности и номера магазинов, в которых они имеются в продаже.
Указание: При решении задачи, использовать тип данных Записи (record). Исходные данные должны содержаться в текстовом файле. Количество записей в файле не меньше 20 и заранее неизвестно, сколько их. Результат работы программы записать в файл с другим именем.
serge-first вне форума Ответить с цитированием
Старый 01.03.2014, 08:21   #2
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Ну и? Наработки или оплата?
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 01.03.2014, 11:22   #3
serge-first
Пользователь
 
Регистрация: 27.02.2013
Сообщений: 66
По умолчанию

По первой задачи я кое-что начудил:

s1:='';
i:=length(s);
while (i>=1) and(s[i] in ['0'..'9']) do
begin
s1:=s[i]+s1;
i:=i-1
end;
serge-first вне форума Ответить с цитированием
Старый 01.03.2014, 14:00   #4
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,602
По умолчанию

Читаете строчку из файла, подсчитываете количество тире. Строчку с аибольшим кол-вом выводите.
По первой задачке
Код:
var
  f:textfile;
  max,sum,i:integer;
  outs,s:string;
begin
  assignfile(f,'text.txt');
  reset(f);
  readln(f,s);
  outs:=s;
  sum:=0;
  for i:=1 to length(s) do
   if s[i]='–' then
     sum:=sum+1;
  max:=sum;   
  while not eof(f) do
    begin
      readln(f,s); 
      sum:=0;      
      for i:=1 to length(s) do
        if s[i]='–' then
          sum:=sum+1;
      if sum>max then 
        begin
          max:=sum;
          outs:=s;
        end;
    end;
  writeln('Самый длинный маршрут:');   
  writeln(outs);   
  readln;
  closefile(f);
end.
Как выделить сумму билета из строки, подумайте сами.

Текстовый файл для проверки
Цитата:
«Челябинск – Екатеринбург – Казань – Москва – Самара – Уфа – Челябинск. 5000»
«Челябинск – Екатеринбург – Самара – Уфа – Челябинск. 3000»
«Челябинск – Екатеринбург – Казань – Москва – Уфа – Челябинск. 3500»

Последний раз редактировалось ZX Spectrum-128; 01.03.2014 в 14:28.
ZX Spectrum-128 вне форума Ответить с цитированием
Старый 01.03.2014, 18:10   #5
serge-first
Пользователь
 
Регистрация: 27.02.2013
Сообщений: 66
По умолчанию

Спасибо огромное! Вы помогли мне более чем)
serge-first вне форума Ответить с цитированием
Старый 03.03.2014, 10:15   #6
serge-first
Пользователь
 
Регистрация: 27.02.2013
Сообщений: 66
По умолчанию

Цитата:
Сообщение от ZX Spectrum-128 Посмотреть сообщение
Читаете строчку из файла, подсчитываете количество тире. Строчку с аибольшим кол-вом выводите.
По первой задачке
Код:
var
  f:textfile;
  max,sum,i:integer;
  outs,s:string;
begin
  assignfile(f,'text.txt');
  .....
  writeln('Самый длинный маршрут:');   
  writeln(outs);   
  readln;
  closefile(f);
end.
А я вот немного переделал, по задаче ведь мне нужно, чтобы ответ сохранялся в другом текстовом файле.
Но мне сказали, что здесь много лишнего?

Код:
{
	Автор: Швайко Сергей.
}
program zadanie1;
var
  a,b:text;
  max,sum,i:integer;
  outs,s:string;
begin
  assign(a,'a.txt');
  assign(b,'b.txt');
  reset(a);
  rewrite(b);
  readln(a,s);
  outs:=s;
  sum:=0;
  for i:=1 to length(s) do
   if s[i]='–' then
     sum:=sum+1;
  max:=sum;   
  while not eof(a) do
    begin
      readln(a,s); 
      sum:=0;      
      for i:=1 to length(s) do
        if s[i]='–' then
          sum:=sum+1;
      if sum>max then 
        begin
          max:=sum;
          outs:=s;
        end;
    end; 
  writeln('Самый длинный маршрут:');
  writeln(b,'Самый длинный маршрут: ',outs);  
  writeln(outs);   
  readln;
  close(a);
  close(b);
end.


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(кнопочка на панели форматирования с решёточкой #)

И не злоупотребляйте избыточным цитированием. Оверквотинг (overquoting) на форуме запрещён.

Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 03.03.2014 в 10:42.
serge-first вне форума Ответить с цитированием
Старый 03.03.2014, 10:52   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

ничего принципиально "ЛИШНЕГО" я в коде от ZX Spectrum-128 не увидел.
можно сократить код поиска максимального на несколько строк (max присвоить не длине первого маршрута, а нулю):
Код:
program zadanie1;
var
  a,b:text;
  max,sum,i:integer;
  outs,s:string;
begin
  assign(a,'a.txt');
  reset(a);
  max := 0;
  while not eof(a) do
    begin
      readln(a,s);
      sum:=0;
      for i:=1 to length(s) do
        if s[i]='-' then
          sum:=sum+1;
      if sum>max then
        begin
          max:=sum;
          outs:=s;
        end;
    end;
  close(a);

  assign(b,'b.txt');
  rewrite(b);
  if max>0 then
     writeln(b,'Самый длинный маршрут: ',outs)
  else
     writeln(b, 'Нет маршрутов в исходном файле! ');
  close(b);
  WriteLn('Работа программы завершена.');
  Readln
end.

Цитата:
Требуется найти маршрут с наибольшим количеством городов и указать его стоимость.
p.s. как в исходном примере кода, выделением стоимости из строки я не стал заниматься, сделайте это самостоятельно!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.03.2014, 10:55   #8
serge-first
Пользователь
 
Регистрация: 27.02.2013
Сообщений: 66
По умолчанию

Точно! Спасибо!!!
serge-first вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Составление и отладка программ для создания и обработки типизированных, и текстовых файлов. Makos Паскаль, Turbo Pascal, PascalABC.NET 1 21.04.2013 21:26
Файловый тип. Переменная для обработки текстовых файлов(pascal)) Георгий Златов Помощь студентам 1 27.01.2013 18:22
Алгоритмизация и программирование задач создания и обработки типованих и текстовых файлов Саша1194 Паскаль, Turbo Pascal, PascalABC.NET 4 20.03.2012 22:14
Добавление данных в текстовые файлы. Другие процедуры и функции для обработки текстовых файлов student2009 Помощь студентам 1 02.06.2009 08:44
Добавление данных в текстовые файлы. Другие процедуры и функции для обработки текстовых файлов student2009 Паскаль, Turbo Pascal, PascalABC.NET 5 01.06.2009 21:27