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

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

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

 
 Ответить  Открыть новую тему 
> Ирония судьбы, Задача по записям
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





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

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


2 Volvo:Big respect тебе! Работает!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 18.01.2021 13:16
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name