Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.01.2018, 17:11   #1
Vera_A
 
Регистрация: 02.01.2018
Сообщений: 5
По умолчанию Помогите пожалуйста с программой в Паскаль. Файловый тип данных

Запросить у пользователя улицу (табл.№21) и цифру из набора [2,3,5,6]. Вывести на экран записи абонентов, живущих на указанной улице и имеющих нечетный номер дома. Вывести записи абонентов, у которых телефон начинается на цифру, указанную пользователем, и указать их количество. Вычислить, у кого из этих абонентов номер телефона – наибольший, рассматривая его как число, у какого - наименьший.
№21. Телефонный справочник
Фамилию абонента Улица Номер дома Номер кварт. Номер телефона
Иванов Агеева 11 3 244556
Петров Пушкина 17 37 277777
Сидоров Ленина 44 78 399695
Мишин Пушкина 19 6 244555
Васин Ушакова 28 88 651313
Андреев Ушакова 20 12 399111
Захаров Ленина 33 45 256782
Тарасов Ленина 37 15 324453
Дмитриев Агеева 13 23 588912
Никитин Францева 45 67 245698
Петин Францева 44 22 511695
Ромин Агеева 56 44 567123
Борисов Ленина 55 19 244333

Часть программы сделана, затруднение вызывают номера телефонов. Не получается выделить первую цифру номера и сравнить с вводимым числом. Помогите пожалуйста.
Vera_A вне форума Ответить с цитированием
Старый 02.01.2018, 19:03   #2
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Покажите, что у вас сделано. Участникам форума будет вам легче помогать.
Не забывайте правильно оформлять исходный код http://www.programmersforum.ru/showp...23&postcount=3
Вадим Мошев вне форума Ответить с цитированием
Старый 06.01.2018, 03:42   #3
Vera_A
 
Регистрация: 02.01.2018
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Vera_A Посмотреть сообщение
Запросить у пользователя улицу (табл.№21) и цифру из набора [2,3,5,6]. Вывести на экран записи абонентов, живущих на указанной улице и имеющих нечетный номер дома. Вывести записи абонентов, у которых телефон начинается на цифру, указанную пользователем, и указать их количество. Вычислить, у кого из этих абонентов номер телефона – наибольший, рассматривая его как число, у какого - наименьший.
№21. Телефонный справочник
Фамилию абонента Улица Номер дома Номер кварт. Номер телефона
Иванов Агеева 11 3 244556
Петров Пушкина 17 37 277777
Сидоров Ленина 44 78 399695
Мишин Пушкина 19 6 244555
Васин Ушакова 28 88 651313
Андреев Ушакова 20 12 399111
Захаров Ленина 33 45 256782
Тарасов Ленина 37 15 324453
Дмитриев Агеева 13 23 588912
Никитин Францева 45 67 245698
Петин Францева 44 22 511695
Ромин Агеева 56 44 567123
Борисов Ленина 55 19 244333

Часть программы сделана, затруднение вызывают номера телефонов. Не получается выделить первую цифру номера и сравнить с вводимым числом. Помогите пожалуйста.
Найти последнюю цифру номера и сравнить с введённой получилось, но не получается найди max и min из этих найденных номеров. Помогите пожалуйста.

Код:
procedure poisk_telefon; {процедура по нахождению номеров телефонов}
   var f1, f2, f3, f4, f5: text; i,k,tel,r,kv,dom:integer; familiya, ylitsa: string; telefon, e, d, max, min: longint;
begin
   assign {далее идёт связывание ф. п. f1, f2, f3, f4, f5 с  файлами ’file1.txt’, ’file2.txt’, ’file3.txt’, ’file4.txt’, ’file5.txt’ }
   reset(f1); reset(f2); reset(f3); reset(f4); reset(f5);
   write('Введите любую из цифр: 2, 3, 5, 6'); readln(tel);
   k:=0;
   for i:=1 to 13 do begin
       readln{далее идёт чтение строк  из  файлов ’file1.txt’,’file2.txt’,’file3.txt’,  ’file4.txt’, ’file5.txt’ };
{нахожу первую цифру номера телефона и сравниваю с введённой(тут уже все работает)}
       d:=telefon;
       telefon:=telefon div 100;
       e:=telefon div 100;
       telefon:=e div 10;
   if telefon=tel then begin
       k:=k+1;
   writeln(familiya:15, ylitsa:15, dom:10, kv:10, d:10);
{далее надо найти max  и min номер из найденных, и вот эта часть программы не получается, программы выводит последний номер как max, а min выводит 0}
   {max:=0;
   for i:=1 to k do 
     if d> max then max:=d;
   min:=0;
   for i:=1 to k do 
     if d< min then min:=d;}
   end; end;
   writeln;
   writeln(k);
   writeln(max);
   writeln(min);
{далее закрытие открытых файлов} end;{конец процедуры}

Последний раз редактировалось Vera_A; 06.01.2018 в 04:55.
Vera_A вне форума Ответить с цитированием
Старый 06.01.2018, 10:48   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
{далее надо найти max и min номер из найденных
из каких? вы пока что нашли только один подходящий номер.
помните вы же написали выше (до начала цикла)
Код:
k:=0;
и что, оно(значение k) волшебным образом превратилось в другое(ненулевое)?
Код:
   for i:=1 to k do
у вас УЖЕ есть цикл перебора значения(все тот же цикл ввода) и других циклов не надобно.
Код:
   {max:=0;// это надо сделать вначале (до начала цикла ввода)
   for i:=1 to k do // смотри замечание о ненужности здесь цикла
     if d> max then max:=d;
   min:=0;//в начало(туда же куда и max:=0;)вот только любое положительное число(номер) всегда будет >0
   for i:=1 to k do 
     if d< min then min:=d;}
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 06.01.2018, 10:55   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

P.S.
Цитата:
№21. Телефонный справочник
Фамилию абонента Улица Номер дома Номер кварт. Номер телефона
Иванов Агеева 11 3 244556
вообще-то это ОДИН единственный файл в котором записана ВСЯ информация(и имя, и адрес, и телефон), каждый абонент на одной строке, а не пять отдельных файлов с именами, с адресами, с телефонами...
Цитата:
Код:
       readln{далее идёт чтение строк  из  файлов ’file1.txt’,’file2.txt’,’file3.txt’,  ’file4.txt’, ’file5.txt’ };
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 07.01.2018, 07:44   #6
Vera_A
 
Регистрация: 02.01.2018
Сообщений: 5
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
у вас УЖЕ есть цикл перебора значения(все тот же цикл ввода) и других циклов не надобно.
Код:

{max:=0;// это надо сделать вначале (до начала цикла ввода)
for i:=1 to k do // смотри замечание о ненужности здесь цикла
if d> max then max:=d;
min:=0;//в начало(туда же куда и max:=0; )вот только любое положительное число(номер) всегда будет >0
for i:=1 to k do
if d< min then min:=d;}
Спасибо вам, но всё ранво есть проблема.
max программа посчитала правильно, а min выводит последний номер из найденных

Последний раз редактировалось Vera_A; 07.01.2018 в 10:00.
Vera_A вне форума Ответить с цитированием
Старый 07.01.2018, 07:46   #7
Vera_A
 
Регистрация: 02.01.2018
Сообщений: 5
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
вообще-то это ОДИН единственный файл в котором записана ВСЯ информация(и имя, и адрес, и телефон), каждый абонент на одной строке, а не пять отдельных файлов с именами, с адресами, с телефонами...
Просто нас учили оформлять так, как у меня в программе
Vera_A вне форума Ответить с цитированием
Старый 07.01.2018, 11:44   #8
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,546
По умолчанию

При чем тут
Цитата:
учили оформлять так, как у меня в программе
?
"Оформлять" надо так, как организовано хранение информации в файле, а разделять инфу одного и того же телефонного справочника в разных файлах - идиотизм, при любой коррекции можно случайно убить весь справочник.
Начальное значение min= должно быть не 0, а максимально возможное, иначе сравнение с min не сработает никогда.

Последний раз редактировалось digitalis; 07.01.2018 в 20:34.
digitalis вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
файловый тип данных ksenija15reg Паскаль, Turbo Pascal, PascalABC.NET 5 03.11.2014 17:13
Файловый тип данных (Pascal) ksenija15reg Помощь студентам 3 07.12.2013 11:14
файловый тип данных zxzxz Помощь студентам 5 07.05.2013 19:34
файловый тип данных и тд. deni007-92 Фриланс 2 03.06.2010 15:09
Файловый тип данных Delphi LastBreath Помощь студентам 2 26.05.2010 14:05