Егор1337 |
14.12.2015 01:10 |
Цитата:
Сообщение от Vladimir_S
(Сообщение 846524)
Вы знаете, не имея программы, очень трудно дать ответ.
Но так, в общем, очень просто:
строится цикл типа
Код:
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;
Здесь во вспомогательном массиве записей Q мы собрали данные о людях, имеющих одинаковые адреса, но в разных городах. Беда только в том, что если таких людей (имеющих одинаковый адрес в разных городах) больше двух, то возникнут повторы, которые нужно как-то исключить. Это можно сделать, например, так. Пусть количество элементов в массиве Q равно k - так и получится после предыдущей фильтрации. Тогда
Код:
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;
Попробуйте. К сожалению, честно признаюсь, сейчас я сильно занят и возможности тестирования нет, так что Вы уж сами.
|
Помогите сделать это в моем коде, уже день сижу не могу понять куда и что вставлять что бы не было повторов!
Код:
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.
файл txt_file.txt если нужно.
Код:
Василий
Глушков
Петрович
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
|