09.01.2013, 19:29 | #1 (permalink) |
Новичок
Регистрация: 09.01.2013
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Массив записей, Pascal
Поразмышляв я решила что нужно использовать массив записей где первая строчка с наименованиями полей будет: Фамилия Город Адресс а потом сравнивать: допустим в первой процедуре узнать все фамилия проживающие в разных городах; во второй процедуре (работая уже с фамилиями из первой процедуры) вывести все фамилии с одинаковыми адресами а в третьей процедуре упорядочить фамилии. Ну а в последней процедуре создать новый файл и перезаписать в него данные. Мой вопрос заключается в следующем: как сравнить города и адреса? Я не понимаю этот нюанс. Нам дано неизвестное количество людей(т.е. решать нужно для любого числа) . Подскажите как отфильтровать |
09.01.2013, 19:29 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Схожие темы можно найти через поиск, но я помогу вам и вышлю их сюда Одномерный массив, Pascal Массивы записей Массив, файлы, подпрограммы. Pascal |
10.01.2013, 11:44 | #2 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Но так, в общем, очень просто: строится цикл типа Код:
for i:=1 to n-1 do for j:=i+1 to n do If (data[i].address=data[j].address) and (data[i].town<>data[i].town) then begin Ink(k); Q[k]:=data[i]; Ink(k); Q[k]:=data[j]; end; Код:
i:=0; Repeat Inc(i); for j:=i+1 to k do if Q[j]=Q[i] then begin for m:=j+1 to k do Q[m-1]:=Q[m]; Dec(k); end; Until i>=k-1; |
|
14.12.2015, 01:10 | #3 (permalink) | |
Новичок
Регистрация: 14.12.2015
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Цитата:
Код:
program lab_9; uses crt; const way='f_file.txt'; waytxt='txt_file.txt'; type el=record name,surname,otchestvo,adres,stat,data:string[40]; end; arr_el=array [1..40] of el; ft=file of el; var f:ft; r1:el; r:arr_el; t:text; str1:string; name,surname,otchestvo,stat,adres,data:string[40]; i,j,q,z,o,m:integer; s:string; begin ClrScr; i:=0; assign(f,way); rewrite(f); assign(t,waytxt); reset(t); while not eof(t) do begin writeln; inc(i); readln(t,name); readln(t,surname); readln(t,otchestvo); readln(t,data); readln(t,stat); readln(t,adres); textcolor(4); write('ФИО: '); textcolor(7); write(surname,' '); write(name,' '); writeln(otchestvo); textcolor(4); write('ДАТА РОЖД.: '); textcolor(7); writeln(data); textcolor(4); write('ПОЛ: '); textcolor(7); writeln(stat); textcolor(4); write('ДОМ. АДРЕСС: '); textcolor(7); writeln(adres); r[i].name:=name; r[i].surname:=surname; r[i].otchestvo:=otchestvo; r[i].data:=data; r[i].stat:=stat; r[i].adres:=adres; write(f,r[i]); end; close(t); close(f); writeln; textcolor(2); writeln('Люди с одинаковыми фамилиями:'); textcolor(7); assign(t,'newtxt.txt'); rewrite(t); for j:=1 to i do for q:=j+1 to i do if (r[j].surname=r[q].surname) then begin write(t,r[j].surname,' '); write(t,r[j].name,' '); write(t,r[j].otchestvo); write(t,r[j].data); write(t,r[j].stat); write(t,r[j].adres); {dwadawdawdawdawdawdawdawdawdwadawdwa} writeln(t,r[q].surname,' '); writeln(t,r[q].name,' '); writeln(t,r[q].otchestvo); writeln(t,r[q].data); writeln(t,r[q].stat); writeln(t,r[q].adres); {dwadawdawdawdawdawdawdawdawdwadawdwa} writeln; textcolor(4); write('ФИО: '); textcolor(7); write(r[j].surname,' '); write(r[j].name,' '); writeln(r[j].otchestvo); textcolor(4); write('ДАТА РОЖД.: '); textcolor(7); writeln(r[j].data); textcolor(4); write('ПОЛ: '); textcolor(7); writeln(r[j].stat); textcolor(4); write('ДОМ. АДРЕСС: '); textcolor(7); writeln(r[j].adres); {dwadawdawdawdawdawdawdawdawdwadawdwa} writeln; textcolor(4); write('ФИО: '); textcolor(7); write(r[q].surname,' '); write(r[q].name,' '); writeln(r[q].otchestvo); textcolor(4); write('ДАТА РОЖД.: '); textcolor(7); writeln(r[q].data); textcolor(4); write('ПОЛ: '); textcolor(7); writeln(r[q].stat); textcolor(4); write('ДОМ. АДРЕСС: '); textcolor(7); writeln(r[q].adres); end; i:=0; close(t); writeln; end. Код:
Василий Глушков Петрович 03.02.98 Mужской Киев, Метталистов, 8\123 Егор Глушков Андреевич 08.12.97 Mужской Киев, 23 августа, 32\32 Константин Глушков Игоревич 12.11.99 Mужской Киев, Хрещатик, 18а\22 Иван Батрудинов Юрьевич 13.01.98 Mужской Харьков, Ленина, 81\33 Иван Батрудинов1 Юрьевич 13.01.98 Mужской Харьков, Ленина, 81\33 |
|
14.12.2015, 12:50 | #4 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Пара замечаний. 1. Не совсем понятно назначение файла f_file: вроде как он и "не играет" в программе. 2. И кстати, если уж Вы вводите типизированный файл, в данном случае - файл записей, то не следует давать ему расширение ".txt". То есть формально можно, но - зачем? Код:
uses crt; const way='f_file'; waytxt='txt_file.txt'; type el=record name,surname,otchestvo,adres,stat,data:string[40]; end; arr_el=array [1..40] of el; ft=file of el; var f:ft; r1:el; r:arr_el; t:text; str1:string; name,surname,otchestvo,stat,adres,data:string[40]; i,j,q:integer; b,b1:boolean; Begin ClrScr; i:=0; assign(f,way); rewrite(f); assign(t,waytxt); reset(t); while not eof(t) do begin writeln; inc(i); readln(t,name); readln(t,surname); readln(t,otchestvo); readln(t,data); readln(t,stat); readln(t,adres); textcolor(4); write('ФИО: '); textcolor(7); write(surname,' '); write(name,' '); writeln(otchestvo); textcolor(4); write('ДАТА РОЖД.: '); textcolor(7); writeln(data); textcolor(4); write('ПОЛ: '); textcolor(7); writeln(stat); textcolor(4); write('ДОМ. АДРЕС: '); textcolor(7); writeln(adres); r[i].name:=name; r[i].surname:=surname; r[i].otchestvo:=otchestvo; r[i].data:=data; r[i].stat:=stat; r[i].adres:=adres; write(f,r[i]); end; close(t); close(f); writeln; textcolor(2); writeln('Люди с одинаковыми фамилиями:'); textcolor(7); assign(t,'newtxt.txt'); rewrite(t); for j:=1 to i-1 do begin b1:=true; for q:=1 to j-1 do if r[j].surname=r[q].surname then b1:=false; if b1 then begin b:=false; q:=j; repeat inc(q); if r[j].surname=r[q].surname then b:=true; until b or (q=i); if b then begin writeln(t,r[j].surname,' '); writeln(t,r[j].name,' '); writeln(t,r[j].otchestvo); writeln(t,r[j].data); writeln(t,r[j].stat); writeln(t,r[j].adres); writeln(t); textcolor(4); write('ФИО: '); textcolor(7); write(r[j].surname,' '); write(r[j].name,' '); writeln(r[j].otchestvo); textcolor(4); write('ДАТА РОЖД.: '); textcolor(7); writeln(r[j].data); textcolor(4); write('ПОЛ: '); textcolor(7); writeln(r[j].stat); textcolor(4); write('ДОМ. АДРЕС: '); textcolor(7); writeln(r[j].adres); writeln; {dwadawdawdawdawdawdawdawdawdwadawdwa} for q:=j+1 to i do if r[j].surname=r[q].surname then begin writeln(t,r[q].surname,' '); writeln(t,r[q].name,' '); writeln(t,r[q].otchestvo); writeln(t,r[q].data); writeln(t,r[q].stat); writeln(t,r[q].adres); writeln(t); textcolor(4); write('ФИО: '); textcolor(7); write(r[q].surname,' '); write(r[q].name,' '); writeln(r[q].otchestvo); textcolor(4); write('ДАТА РОЖД.: '); textcolor(7); writeln(r[q].data); textcolor(4); write('ПОЛ: '); textcolor(7); writeln(r[q].stat); textcolor(4); write('ДОМ. АДРЕС: '); textcolor(7); writeln(r[q].adres); writeln; end; end; end; end; close(t); readln; End. |
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|