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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2012, 21:56   #1
HelloInside
 
Регистрация: 13.05.2012
Сообщений: 7
По умолчанию

Задача по текстовых файлах.

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

Так я вот розвязал, но у меня что-то не все получается:

Код:
uses crt;
 
type avto = record
     marka: string;
     st,kilo: real;
     end;
 
var f1,f2: text;
    name1,name2: string;
    a: array [1..100] of avto;
    n,i,j,firms: integer;
    tmp: avto;
 
 
begin clrscr;
write('Imea faila dlea chtenia: '); readln(name1);
assign(f1,name1); reset(f1);
write('Imea faila dlea zapisi: '); readln(name2);
assign(f2,name2); rewrite(f2);
 
readln(f1,n);
 
for i:=1 to n do
 begin
 readln(f1,a[i].marka);
 readln(f1,a[i].st);
 readln(f1,a[i].kilo);
 end;
 
close(f1);
 
for i:=n-1 downto 1 do
 for j:=1 to i do
  if a[j].marka > a[j+1].marka then
   begin
   tmp:=a[j];
   a[j]:=a[j+1];
   a[j+1]:=tmp;
   end;
 
firms:=1;
 
for i:=2 to n do
 if a[i].marka <> a[i-1].marka then inc(firms);
 
for i:=1 to n do
 begin
 writeln(f2,a[i].marka);
 writeln(f2,a[i].st);
 writeln(f2,a[i].kilo);
 end;
writeln(f2,firms);
 
close(f2);
writeln('Dannye byli perepisany v ',name2);
readkey; end.
Только я не знаю как сделать вот ето:
1)
Код:
"в каждую строку файла прибавить средний километраж по всем маркам в файле."
2)
Код:
"Последняя строка нового файла должна содержать количество фирм, выпускающих все перечисленные в файле автомобили."
Вот немного подправил код задачи:

Код:
uses crt;
 
type avto = record
     marka: string;
     st,kilo: real;
     end;
 
var f1,f2: text;
    name1,name2: string;
    a: array [1..100] of avto;
    n,i,j,firms: integer;
    tmp: avto;
 
 
begin clrscr;
write('Imea faila dlea chtenia: '); readln(name1);
assign(f1,name1); reset(f1);
write('Imea faila dlea zapisi: '); readln(name2);
assign(f2,name2); rewrite(f2);
 
readln(f1,n);
 
for i:=1 to n do
 begin
 readln(f1,a[i].marka);
 readln(f1,a[i].st);
 readln(f1,a[i].kilo);
 end;
 
close(f1);
 
for i:=n-1 downto 1 do
 for j:=1 to i do
  if a[j].marka > a[j+1].marka then
   begin
   tmp:=a[j];
   a[j]:=a[j+1];
   a[j+1]:=tmp;
   end;
 
firms:=1;
 
for i:=2 to n do
 if a[i].marka <> a[i-1].marka then inc(firms);
 
for i:=1 to n do
 begin
 writeln(f2,a[i].marka);
 writeln(f2,a[i].st:6:2);
 writeln(f2,a[i].kilo:6:2);
 end;
writeln(f2,firms);
 
close(f2);
writeln('Dannye byli perepisany v ',name2);
readkey; end.
Помогите пожалусто добавить:

1)

Код:
"в каждую строку файла прибавить средний километраж по всем маркам в файле."
2)

Код:
"Последняя строка нового файла должна содержать количество фирм, выпускающих все перечисленные в файле автомобили."

Последний раз редактировалось Stilet; 14.05.2012 в 09:01.
HelloInside вне форума Ответить с цитированием
Старый 13.05.2012, 23:31   #2
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Цитата:
"в каждую строку файла прибавить средний километраж по всем маркам в файле."
Код:
procedure addtoEOLN(S:string; var t:text);//s - добавляемая строка
var
  tmp:string;
  F:text;
begin
  assign(F,'tmp.txt');
  rewrite(F);
  reset(T);
  while not eof(t) do
    begin
      tmp:='';
      readln(T,tmp);
      writeln(F,tmp+S);
    end;
  close(F);
  reset(F);
  rewrite(T);
  while not eof(F) do
    begin
      tmp:='';
      readln(F,tmp);
      writeln(T,tmp)
    end;
  close(T);
  close(F);
  deletefile('tmp.txt')//не знаю, есть ли эта команда в паскале
end;
Цитата:
"Последняя строка нового файла должна содержать количество фирм, выпускающих все перечисленные в файле автомобили."
А тут то что сложного? append и вперед.
Все тривиальное просто

Последний раз редактировалось whatever; 13.05.2012 в 23:33.
whatever вне форума Ответить с цитированием
Старый 14.05.2012, 00:41   #3
HelloInside
 
Регистрация: 13.05.2012
Сообщений: 7
По умолчанию

Куда именно в программу вставить етот код?

Код:
procedure addtoEOLN(S:string; var t:text);//s - добавляемая строка
var
  tmp:string;
  F:text;
begin
  assign(F,'tmp.txt');
  rewrite(F);
  reset(T);
  while not eof(t) do
    begin
      tmp:='';
      readln(T,tmp);
      writeln(F,tmp+S);
    end;
  close(F);
  reset(F);
  rewrite(T);
  while not eof(F) do
    begin
      tmp:='';
      readln(F,tmp);
      writeln(T,tmp)
    end;
  close(T);
  close(F);
  deletefile('tmp.txt')//не знаю, есть ли эта команда в паскале
end;
HelloInside вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
текстовые файлы Funy Помощь студентам 1 16.01.2012 16:38
Сведения о школьниках. Файлы. Паскаль Tagimasad Помощь студентам 4 26.12.2011 23:36
(PAS) Файлы , сведения об учениках. dimokin777 Помощь студентам 6 13.11.2011 18:21
Текстовые файлы Milashka_zp Паскаль, Turbo Pascal, PascalABC.NET 5 24.05.2009 19:19