Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Ирония судьбы

Автор: Stefan 17.05.2007 23:39

Короче нужно написать программу которая будет печатать фамилии двух людей из списка,живущих в разных городах по одинаковому адресу.
Не могу её осилить,помогите плиз.Вот на что меня хватило:

Код
program lr52;
type jitel=record
city:string[25];
street:string[25];
dom:integer;
kvartira:integer;
familia:string[25];
end;
var
spisok:array[1..25] of jitel;
i,n:integer;

procedure IRONIA_SUDBY(var s:jitel);
var i,j,k:integer;
b:boolean;
begin
  for i:=1 to 15 do
  for j:=i+1 to 15 do begin
    if (s[i].dom=s[j].dom)and(s[i].kvartira=s[j].kvartira) then begin
      b:=true;
      for k:=1 to 20 do if s[i].street[k]<>s[j].street[k] then b:=false;
      if not b then continue;
      for k:=1 to 20 do if s[i].city[k]<>s[j].city[k] then b:=false;
      if b then continue;
      for k:=1 to 20 do write(s[i].familia[k]);
      write(' ');
      for k:=1 to 20 do write(s[j].familia[k]);
      writeln;
      exit;
    end;
  end;
end;

begin
write('write dannie');
readln(n);
for i:=1 to n do begin
writeln('write');
with spisok[i] do
begin
writeln('Familia');readln(familia);
writeln('Kvartira');readln(kvartira);
writeln('Dom');readln(dom);
writeln('Ylica');readln(street);
writeln('Gorod');readln(city);
end;

IRONIA_SUDBY(s);
end;            

Автор: volvo 18.05.2007 0:25

Зачем же так сложно? Тебе надо найти ВСЕ совпадения? Тогда так:

procedure IRONIA_SUDBY;
var i,j,k:integer;
b:boolean;
begin
for i:=1 to n - 1 do
for j:=i+1 to n do begin
if (spisok[i].dom=spisok[j].dom) and (spisok[i].kvartira=spisok[j].kvartira) and
(spisok[i].street = spisok[j].street) and (spisok[i].city <> spisok[j].city) then
writeln(spisok[i].familia, ' из ', spisok[i].city, ' и ', spisok[j].familia, ' из ', spisok[j].city,
' живут по адресу: ул. ', spisok[i].street, ', ', spisok[i].dom, ' / ', spisok[i].kvartira);
end;
end;

{ вызывать так: }
...
IRONIA_SUDBY;
...



Добавлено через 1 мин.
Если достаточно только одной пары - после печати выйди из процедуры через Exit...

Автор: Stefan 18.05.2007 0:58

2 Volvo:Big respect тебе! Работает!