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

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

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

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

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

HelloInside

Ученик
Регистрация
15 Май 2012
Сообщения
6
Реакции
0
Баллы
0
Текстовые файлы. Сведения об автомобилях. 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:
 
Вот входной файл:

3
BMW
10000
129723
Lada
5000
777
Honda
50000
923823
 
Упорядочить строки по алфавиту марки автомобиля, в каждую строку файла прибавить средний километраж по всем маркам в файле. Последняя строка нового файла должна содержать количество фирм, выпускающих все перечисленные в файле автомобили.
Вы знаете - хотел бы Вам помочь, но ни-че-го не понимаю! Совсем, видать, отупел... Какой "средний километраж по всем маркам"? Это как? В каждую строку добавить одно и то же число - средний километраж по всем машинам? Или как? И что значит "количество фирм, выпускающих все перечисленные в файле автомобили"? В жизни каждая фирма выпускает одну марку, а так, чтобы фирма выпускала "Жигули" и BMW - я таких не знаю. И вообще, в условии задачи и Вашем файле ни звука, ни пол звука ни про какие "фирмы". Подозреваю, что под "фирмой" понимается марка. Но тогда, чтобы задача имела смысл, хотя бы некоторые марки-фирмы должны присутствовать в нескольких экземплярах, например, 2-3 BMW с разными пробегами и стоимостями.
В общем, пока туманная мгла беспросветная.
 
Я тоже не понимал, спросил у одногрупников, сказали что просто нужно взять километраж всех машин, и вычислить средний. А нащет фирм, ето да тоесть марка. Ну например в файле введены bmw , Audi , Opel , - и что бы в низу в строке вывело ети марки bmw, Audi , Opel. Или же например если у нас будет задано Fiat, Honda, Suzuki, и что бы нам вывели внизу - Fiat, Honda, Suzuki. Ну типа в таком смысле.
 
Код:
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.
 
Вот выложил код там определяет средний километраж. Теперь осталось написать: последняя строка нового файла должна содержать количество фирм (тоисть марок), тех что были перечислены в файле.
 
Назад
Сверху