Консультация № 137169
17.05.2008, 06:07
0.00 руб.
0 1 1
Уважаемые эксперты.
Помогите реализовать данну программу.

Результаты переписи населения хранятся в файле, имеющую следующую структуру: Ф.И.О. жителя, его год рождения, пол, адрес местожительства (город), образование, количество детей, место работы. Написать программу, обрабатывающую эти сведения и позволяющую определить: средний возраст жителей (мужчины, женщины); Организовать поиск сведений о человеке по его фамилии и году рождения.

Спасибо за помощь.

Обсуждение

давно
Профессор
401888
1232
17.05.2008, 11:10
общий
это ответ
Здравствуйте, Корчагин Петр Александрович!
Решение задачи с пояснениями в приложении. Думаю все должно быть понятно. Если что, пишите. Успехов!

Приложение:
uses crt;type Tperep=record {тип запись с полями по условию} fio:string[20]; god:word; pol:string[3]; gor:string[20]; obr:string[20]; kdt:byte; rab:string[20]; end;var sp:array[1..100]of Tperep; {массив записей-список} n,i,km,kz:integer; {km,kz – количество мужчин, женщин} srvm,srvz:real; {средний возраст мужчин, женщин} fm:string[20]; {переменная для ввода фамилии} gd:word; { переменная для ввода года}beginclrscr;write(‘Kolichestvo grazdan=‘);readln(n);for i:=1 to n do begin writeln(‘Grazdanin ‘,i); {вводим данные} write(‘F.I.O: ‘);readln(sp[i].fio);{в виде Popov L.K.} write(‘God rozdenia: ‘);readln(sp[i].god);{в виде 1958} write(‘Pol: ‘);readln(sp[i].pol); {vvodit muz ili zen} write(‘Gorod: ‘);readln(sp[i].gor); write(‘Obrazovanie: ‘);readln(sp[i].obr); write(‘Kolichestvo detej: ‘);readln(sp[i].kdt); write(‘Mesto raboty: ‘);readln(sp[i].rab); end;srvm:=0;srvz:=0;km:=0;kz:=0; {}for i:=1 to n do begin if sp[i].pol=‘muz‘ then {если мужчина} begin srvm:=srvm+(2008-sp[i].god); {вычитаем год рождения из текущего года} km:=km+1; {считаем количество} end else if sp[i].pol=‘zen‘ then {то же самое для женщин} begin srvz:=srvz+(2008-sp[i].god); kz:=kz+1; end; end;writeln;writeln(‘Srednij vozrast muzchin=‘,srvm/km:3:0,‘ zenshin=‘,srvz/kz:3:0);writeln;write(‘Familia:‘);readln(fm); {вводим фамилию и год рождения}write(‘god rozdenia:‘);readln(gd);for i:=1 to n do{Если начало строки fio до первого пробела (фамилия) совпадает с введенной фамилией и год совпадает то выводим данные}if (copy(sp[i].fio,1,pos(‘ ‘,sp[i].fio)-1)=fm)and(sp[i].god=gd) then begin write(‘Familia: ‘,sp[i].fio,‘ God: ‘,sp[i].god,‘ Pol: ‘,sp[i].pol,‘ Adres: ‘,sp[i].gor); writeln(‘ Obrazovanie: ‘,sp[i].obr,‘ Deti: ‘,sp[i].kdt,‘ Mesto raboty: ‘,sp[i].rab); writeln; endelse writeln(‘Takogo grazdanina v spiske net!‘);readlnend.
Форма ответа