Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Текстовые файлы. Сведения об автомобилях. Pascal (http://www.tehnari.ru/f41/t73196/)

HelloInside 15.05.2012 17:32

Текстовые файлы. Сведения об автомобилях. Pascal
 
Задача по текстовых файлах.

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

Вот мой листинг:

Код:

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.

Я получается сделал только пол задачи. Сделал вот по сюда:

Код:

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

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

Vladimir_S 15.05.2012 20:07

Цитата:

Сообщение от HelloInside (Сообщение 732835)
Помогите пожалусто!

Выложите, пожалуйста, Ваш входной файл - можно просто текстом в топике.

HelloInside 16.05.2012 02:06

Вот входной файл:

3
BMW
10000
129723
Lada
5000
777
Honda
50000
923823

Vladimir_S 16.05.2012 20:46

Цитата:

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

Вы знаете - хотел бы Вам помочь, но ни-че-го не понимаю! Совсем, видать, отупел... Какой "средний километраж по всем маркам"? Это как? В каждую строку добавить одно и то же число - средний километраж по всем машинам? Или как? И что значит "количество фирм, выпускающих все перечисленные в файле автомобили"? В жизни каждая фирма выпускает одну марку, а так, чтобы фирма выпускала "Жигули" и BMW - я таких не знаю. И вообще, в условии задачи и Вашем файле ни звука, ни пол звука ни про какие "фирмы". Подозреваю, что под "фирмой" понимается марка. Но тогда, чтобы задача имела смысл, хотя бы некоторые марки-фирмы должны присутствовать в нескольких экземплярах, например, 2-3 BMW с разными пробегами и стоимостями.
В общем, пока туманная мгла беспросветная.

HelloInside 16.05.2012 21:19

Я тоже не понимал, спросил у одногрупников, сказали что просто нужно взять километраж всех машин, и вычислить средний. А нащет фирм, ето да тоесть марка. Ну например в файле введены bmw , Audi , Opel , - и что бы в низу в строке вывело ети марки bmw, Audi , Opel. Или же например если у нас будет задано Fiat, Honda, Suzuki, и что бы нам вывели внизу - Fiat, Honda, Suzuki. Ну типа в таком смысле.

HelloInside 16.05.2012 22:41

Код:

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;
    average: real;


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);

average:=0;
for i:=1 to n do average:=average + a[i].kilo;
average:=average/n;
writeln(f2,'Srednii kilometraj = ',average:6:2);

close(f2);
writeln('Dannye byli perepisany v ',name2);
readkey; end.


HelloInside 16.05.2012 22:46

Вот выложил код там определяет средний километраж. Теперь осталось написать: последняя строка нового файла должна содержать количество фирм (тоисть марок), тех что были перечислены в файле.

HelloInside 16.05.2012 23:01

А все, сделал =)


Часовой пояс GMT +4, время: 22:21.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.