0 / 0 / 0
Регистрация: 28.12.2016
Сообщений: 1
1

Найдите в базе всех жителей, живущих в разных городах по одинаковому адресу.

29.12.2016, 17:54. Показов 1957. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть база данных по жителям красноярского края, содержащая город, улицу,
номер дома и квартиры. Найдите в ней всех жителей, живущих в разных городах по
одинаковому адресу.
Помогите решить задачу.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.12.2016, 17:54
Ответы с готовыми решениями:

Напечатать фамилии двух (любых) жителей из списка S, живущих в разных городах по одинаковому адресу
Доброе время суток у меня трабл с прогой :wall: вот задание type stroka=packed array of...

Поиск фамилий двух людей, живущих в разных городах по одному адресу
составьте программу,осуществляющую поиск фамилий двух людей, живущих в разных городах по одному...

Написать программу, определяющую , есть ли 2 человека, живущих в разных городах по одному адресу
Написать программу *Ирония судьбы*, определяющую , есть ли 2 человека, живущих в разных городах по...

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

28
0 / 0 / 0
Регистрация: 14.11.2022
Сообщений: 17
14.03.2023, 20:59 21
Студворк — интернет-сервис помощи студентам
Проблема в том, что я не совсем понимаю как надо переписать данные в типизированный файл. Я смотрел примеры, но до конца не понял. (Смотрел тут Преобразовать данные из текстового файла в типизированный , с 19 строки там начинается подпрограмма перезаписи данных в тип-ый файл) Я попытался встроить эту подпрограмму, но в итоге в тип-ом файле просто не было никаких данных. Либо это я совсем тупой, либо нужно как-то по другому их написать.
P. S. Раз уж нам нужны только текстовый и типизированный файлы, массив по большей части не к чему.
0
Модератор
9608 / 4928 / 3252
Регистрация: 17.08.2012
Сообщений: 15,370
14.03.2023, 21:17 22
GoloshchapovMax, как Вы определили, что в типизированом файле нет данных? Вы его чем открывали на чтение?
0
0 / 0 / 0
Регистрация: 14.11.2022
Сообщений: 17
14.03.2023, 21:54 23
Открывал его Rewrite
0
Модератор
9608 / 4928 / 3252
Регистрация: 17.08.2012
Сообщений: 15,370
14.03.2023, 22:22 24
Зачем?

Ликбез:

Rewrite - открывает типизированный файл на чтение/запись и устанавливает указатель в нулевую позицию. Если файл не существует, то он создаётся, если файл существует, то содержимое файла уничножается.

Reset - открывает существующий типизированный файл на чтение/запись и устанавливает указатель в нулевую позицию. Если файла не суествует, то генерируется ошибка.
1
2902 / 1552 / 624
Регистрация: 19.03.2019
Сообщений: 5,152
15.03.2023, 10:34 25
Цитата Сообщение от GoloshchapovMax Посмотреть сообщение
Проблема в том, что я не совсем понимаю как надо переписать данные в типизированный файл
давай сюда свой код. без кода разговор пустая болтовня.

только определись сначала, что тебе нужно:
- Преобразовать данные из текстового файла в типизированный
- читать данные из типизированного файла.

это два разных (я бы даже сказал - "противоположных") алгоритма.

в первом случае открываем текстовый файл на чтение (Reset() ), а выходной типизированный файл или полностью перезаписываем с нуля через Rewrite() (либо открываем через Reset() и дописываем в конец файла добавочные данные)

во втором случае, типизированный файл есть, его нужно открывать на чтение через Reset()

в чём у тебя конкретно проблема?
0
0 / 0 / 0
Регистрация: 14.11.2022
Сообщений: 17
28.03.2023, 22:49 26
Я смог сделать так чтобы можно было сначала ввести данные , а потом создать типизированный файл и чтобы программа его прочитала (не без помощи ваших советов, конечно). Но теперь у меня проблема в том что, нужно как-то сравнить их и составить результат.
0
2902 / 1552 / 624
Регистрация: 19.03.2019
Сообщений: 5,152
29.03.2023, 09:15 27
Цитата Сообщение от GoloshchapovMax Посмотреть сообщение
Я смог сделать так чтобы можно было сначала ввести данные , а потом создать типизированный файл и чтобы программа его прочитала
молодец.

Цитата Сообщение от GoloshchapovMax Посмотреть сообщение
Но теперь у меня проблема в том что, нужно как-то сравнить их и составить результат.
пост #2 в этой теме смотрел?
прочитать все записи из файла в массив получилось?

а так всё просто, я бы не парился - создал ключ из адреса (город НЕ ВКЛЮЧАТЬ!), отсортировал и дальше у всех записей с одинаковым ключом проверял, если город не совпадает, то выводил.

либо ещё проще алгоритмически, но медленнее в плане выполнения - цикл по жителям и для каждого жителя поиск такого же адреса с несовпадающим городом.
этот простой алгоритм выглядит примерно так:
Pascal
1
2
3
4
5
for i:=1 to CountRecord-1 do
   for j:=i+1 to CountRecord do
      if  (ArrayCitizen[i].city <> ArrayCitizen[j].city)
          and (ArrayCitizen[i].street = ArrayCitizen[j].street)
          and (ArrayCitizen[i].houseNumber = ArrayCitizen[j].houseNumber) then // адреса совпали, выводим на экран
вот и вся "программа"...
0
0 / 0 / 0
Регистрация: 14.11.2022
Сообщений: 17
19.04.2023, 15:13 28
Теперь он почему-то не выводит результат. Он пишет, что компиляция успешна, но результат он не выводит.
Я прикрепил файл с этой программой, надеюсь вы сможете объяснить, что я сделал не так.
Вложения
Тип файла: zip spisok.zip (723 байт, 5 просмотров)
0
2902 / 1552 / 624
Регистрация: 19.03.2019
Сообщений: 5,152
20.04.2023, 09:45 29
Цитата Сообщение от GoloshchapovMax Посмотреть сообщение
Теперь он почему-то не выводит результат.
во-первых.

вот это что за бред?!!!!
Pascal
1
2
3
4
5
type
  TCitizen = record
    city, street, houseNumber: integer;
    apartamentNumber: integer; //0 - частный дом
  end;
ты уверен, что у тебя поля сity, street - это ЧИСЛА?!!!!!

А дальше уже почти не смотрел.

и что там за алгоритм расписан - я не всё равно не понимаю.
Pascal
1
2
3
4
5
6
7
8
9
  for i := 1 to 3 do
    if not (i in used)
        then
    begin
      j := i + 1;
      repeat
        flag := ((ar[i].city <> ar[j].city) And (ar[i].street = ar[j].street) And (ar[i].houseNumber = ar[j].houseNumber) And (ar[i].apartamentNumber = ar[j].apartamentNumber) And not (j in used));
        Inc(j);
      until ((flag) Or (j >= 3));
почему цикл по i от 1 до 3, например.

ну и учти, что ты забыл сохранить, сколько у тебя записей в массиве ar - ты же банально не знаешь, сколько записей нужно обработать!
Про такие "мелочи", кто то, что нулевой элемент массива вообще не используется - я уже вообще молчу.

я тебе написал два варианта решения, как я это вижу.
ты придумал что-то своё. то, что придумал - это молодец!. теперь разбирайся в том, что придумал, я тебе тут не помощник.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.04.2023, 09:45
Помогаю со студенческими работами здесь

Структура: Вывести фамилии людей, живущих в разных городах по одинаковым адресам
Добрый день! Есть задачка: Даны адреса n человек ( n = const). Вывести фамилии людей, живущих в...

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

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

Чему равно общее число жителей в двух городах A и B
Средний возраст жителей города A равен 32 года, а средний возраст жителей города B – 45 лет. Одна...

Вывести данные о городах, количество жителей которых меньше 5 млн. чел
Создать динамический массив структур и вывести данные о городах, количество жителей которых меньше...

Выведите информацию о городах, где количество жителей больше пятидесяти тысяч
Здравствуйте, не могу понять как правильно написать программу которая работает с файлами. Вот мой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru