IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Ирония судьбы, Задача по записям
Stefan
сообщение 17.05.2007 19:39
Сообщение #1





Группа: Пользователи
Сообщений: 8
Пол: Мужской
Реальное имя: Александр

Репутация: -  0  +


Короче нужно написать программу которая будет печатать фамилии двух людей из списка,живущих в разных городах по одинаковому адресу.
Не могу её осилить,помогите плиз.Вот на что меня хватило:
Код
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;            
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 17.05.2007 20:25
Сообщение #2


Гость






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

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...
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 17:52
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"