Консультация № 138859
01.06.2008, 01:49
0.00 руб.
0 2 2
Здравствуйте Уважаемые эксперты!!! нуждаюсь в Вашей помощи, в решении задачи!!
>>> Ввести информацию об автолюбителях: фамилия, марка автомобиля, цвет машины.
1. Данные хранить в виде записи с полями – фамилия и инициалы, марка автомобиля, цвет машины.
Вывести на экран дисплея сведения об автолюбителях, имеющих автомобиль "Жигули" зеленого цвета.
Результат работы программы записать в файл REZ.DAT.
2. Данные хранить в виде записи с полями – фамилия и инициалы, автомобиль - являющаяся записью из трех полей:
марка автомобиля, цвет машины, год выпуска. Вывести на экран дисплея сведения об автолюбителях,
имеющих автомобиль "Жигули" зеленого цвета, список упорядочить по году выпуска.
Результат работы программы записать в файл REZ.DAT.

Приложение:
(задача на тему: "типизированные файлы")

Обсуждение

Неизвестный
01.06.2008, 13:49
общий
это ответ
Здравствуйте, Dextrous!
Я написал вторую задачу. Поиск осуществляется по марке и по цвету, но если нужно именно с "Жигули" и "зеленого цвета" то уберите это:
write(‘vvedite marky avto:‘);
readln(marka);
write(‘vvedite color avto:‘);
readln(col);
и напишите так:
If (avto.mark="Жигули") and (avto.color="зеленый") then..
В первой задаче нужно лишь изменить описание записи вначале:

type Tstudent2=record
name:string[20];
mark:string[10];
color:string[30];
end; и нужно обращатся не Avto.color или avto.mark,
а просто color, mark.
Удачи!!!



Приложение:
uses crt;type Tstudent2=recordname:string[20];avto:recordmark:string[10];color:string[30];end;end;var name_file:string;ch:char;procedure input(var name_file:string);var f:file of Tstudent2;x:Tstudent2; i,n:integer;beginclrscr;write(‘vvedite imya filya‘);readln(Name_file);Assign(f,name_file);rewrite(f);writeln(‘kol-vo zapisei‘);readln(n);if n>0 thenbeginFor i:=1 to n dobeginwith X dobeginwriteln(‘vvedite dannie ‘,i,‘-go avtolife‘);write(‘vvedite FIO:‘);readln(name);write(‘vvedite mark:‘);readln(avto.mark);write(‘vvedite color:‘);readln(avto.color);end;write(f,X)end;writeln(‘sozdan file iz ‘,n,‘zapisei‘);endelse writeln(‘file pystoi‘);Close(f);readkey;end;Procedure Open(var name_file:string);varf:file of Tstudent2;beginclrscr;writeln(‘vvedite imya file:‘);readln(name_file);Assign(f,name_file);{$I-}reset(f);{$I+}If IOResult<>0 thenbeginwriteln(‘net file with name‘,name_file);name_file:=‘‘;endelse beginwriteln(‘file‘,name_file,‘open‘);Close(f);end;readkey;end;Procedure Add_Record(var Name_file:string);varf:file of Tstudent2;X:Tstudent2;beginclrscr;assign(f,name_file);{$I-}reset(f);{$I+}If IOResult<>0 thenwriteln(‘net file with this name‘,name_file) elsebeginSeek(f,Filesize(f));with X dobeginWriteln(‘vvedite dannie‘,FileSize(f)+1,‘-go avtolybitela‘);write(‘vvedite Fio‘);readln(name);write(‘vvedite mark‘);readln(avto.mark);write(‘vvedite color‘);readln(avto.color);end;write(f,X);writeln(‘zapis dobavlena‘);close(f);end;readkey;end;Procedure View(Name_file:string);Varf:file of Tstudent2;X:Tstudent2;beginclrscr;Assign(f,Name_file);{$I-}reset(f);{$I+}If IOResult<>0 then writeln(‘net file with this name‘,name_file) elsebeginwriteln(‘soderzhimoe file:‘,name_file);writeln(‘soderzhimoe file:‘,name_file);writeln(‘| FIO | mark | color |‘);writeln(‘_______________________________‘);while not Eof(f) dobeginread(f,X);with X dowriteln(name:10,avto.mark:10,avto.color:10);end;close(f);end;readkey;end;Procedure del(name_file:string);varf,temp:file of Tstudent2;x:Tstudent2;k,i:integer;beginclrscr;Assign(f,name_file);{$I-}reset(f);{$I+}If IOResult<>0 then writeln(‘net file with this name‘,name_file) elsebeginwriteln(‘FILE‘,name_file,‘imeet‘,Filesize(f),‘zapisei‘);write(‘vvedite nomer zapisi dlya delete #=‘);readln(k);if (k<1) or (k>Filesize(f)) then Writeln(‘net zapisi c #=‘,k) elsebeginAssign(temp,‘1.tmp‘);Rewrite(temp);For i:=1 to filesize(f) dobeginread(f,X);if i<>k then write(temp,X);end;close(f); Close(temp);Erase(f);ReName(temp,Name_file);Writeln(‘zapis deleted‘);end;end;Readkey;end;Procedure Search(Name_file:string);varf:file of Tstudent2; f1:file of Tstudent2;X:tstudent2;Marka:string[10];Col:string[30];poisk:boolean;beginclrscr;Assign(f,name_file);Assign(f1,‘Rez.dat‘); rewrite(f1);{$I-}reset(f);{$I+}If IOResult<>0 then writeln(‘net feli with this name‘,name_file) elsebeginwrite(‘vvedite marky avto:‘);readln(marka);write(‘vvedite color avto:‘);readln(col);writeln(‘| FIO | mark | color |‘);writeln(‘_______________________________‘);Poisk:=false;while not Eof(f) dobeginread(f,X);with X doIf (avto.mark=marka) and (avto.color=col) thenbeginwriteln(name:10,avto.mark:10,avto.color:10);Poisk:=true;end;end;Close(f);if not Poisk then writeln(‘net takoi marki i color‘,marka,col);end; write(f1,x);Readkey; Close(f1);end;beginName_file:=‘‘;repeatclrscr;Writeln(‘1-creat file‘);Writeln(‘2-open file‘);Writeln(‘3-view dannie‘);Writeln(‘4-dobavit dannie‘);Writeln(‘5-delete dannie‘);Writeln(‘6-Search dannie‘);Writeln(‘7-end‘);Writeln;Write(‘viberete pynkt menu‘);Readln(ch);Case ch of‘1‘:Input(name_file);‘2‘:Open(name_file);‘3‘: if name_file <> ‘‘ then View(name_file) elsebeginWriteln(‘net name of file(viberite 1 or 2)‘);readkey;end;‘4‘:if name_file <> ‘‘ then Add_record(name_file) elsebeginWriteln(‘net name of file(viberite 1 or 2)‘);readkey;end;‘5‘:if name_file <> ‘‘ then Del(name_file) elsebeginWriteln(‘net name of file(viberite 1 or 2)‘);readkey;end;‘6‘:if name_file <> ‘‘ then Search(name_file) elsebeginWriteln(‘net name of file(viberite 1 or 2)‘);Readkey;end;end;until Ch = ‘7‘;end.
давно
Профессор
401888
1232
01.06.2008, 14:49
общий
это ответ
Здравствуйте, Dextrous!
Решение обеих задач, выполненных в едином стиле, в приложении. Пояснений ко второй задаче мало, т.к. почти все повторяется.

Приложение:
Задача 1.uses crt;type Tavlub=record {тип запись с полями} fio:string[20];{фио} mar:string[20];{марка} clr:string[20];{цвет} end;var sp:array[1..50]of Tavlub;{массив записей, список а-любителей} i,n:integer; {счетчикм} c:char; {переменная символьного типа} f:file of Tavlub;{типизированный файл}beginclrscr;n:=0;repeatn:=n+1;writeln(‘Avtolubitel ‘,n); {вводим данные в список}write(‘Familia I.O.: ‘);readln(sp[n].fio);write(‘Marka: ‘);readln(sp[n].mar);write(‘Color: ‘);readln(sp[n].clr);{после ввода 2 раза Enter}c:=readkey; {если конец ввода, то Esc}until c=#27;assign(f,‘REZ.DAT‘);{создаем и связываем с переменной файл}rewrite(f);{открываем для записи}writeln;writeln(‘Vladelcy zelenyh zigulej:‘);writeln;for i:=1 to n do {ищем по условию}if (sp[i].mar=‘ziguli‘)and(sp[i].clr=‘green‘) then begin writeln(sp[i].fio); {выводим на экран} write(f,sp[i]); {записываем в файл} end;readln;close(f); {закрываем файл}end.Задача 2.uses crt;type Tavlub=record fio:string[20]; {поля владельца} auto:record mar:string[20];{поля авто} clr:string[20]; god:word; end; end;var sp:array[1..50]of Tavlub; i,n,j:integer; c:char; bf:Tavlub; {буфер при сортировке} f:file of Tavlub;beginclrscr;n:=0;repeatn:=n+1;writeln(‘Avtolubitel ‘,n);write(‘Familia I.O.: ‘);readln(sp[n].fio);write(‘Marka: ‘);readln(sp[n].auto.mar);write(‘Color: ‘);readln(sp[n].auto.clr);write(‘God vypuska: ‘);readln(sp[n].auto.god);c:=readkey;until c=#27;assign(f,‘REZ.DAT‘);rewrite(f);writeln;writeln(‘Vladelcy zelenyh zigulej:‘);writeln;for i:=1 to n doif sp[i].auto.clr=‘green‘ then begin writeln(sp[i].fio); write(f,sp[i]); end;readln;for i:=1 to n-1 dofor j:=1 to n-1 doif sp[j].auto.god>sp[j+1].auto.god then {по полю год} begin bf:=sp[j]; sp[j]:=sp[j+1]; {сортируем всю запись} sp[j+1]:=bf; end;writeln;writeln(‘Spisok po vozrastaniu goda vypuska:‘);writeln;for i:=1 to n do begin writeln(sp[i].fio:10,sp[i].auto.mar:8,sp[i].auto.clr:8,sp[i].auto.god:6); write(f,sp[i]); end;readln;close(f);end.end.
Форма ответа