|
Главная | Правила | Регистрация | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
|
Опции темы | Опции просмотра |
13.02.2018, 22:59 | #1 (permalink) |
Новичок
Регистрация: 13.02.2018
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Структура: найти работника с возрастом, попадающим в заданный диапазон
Найти работника с минимальным возрастом, попадающим в диапозон 20-30 лет. Начало программы идет вот так: Код:
Type rec=record FIO:string[30]; Vozr:integer; adress:string[30]; end; mas=array[1..10] of rec; var f: text;e1:integer;m:mas; Procedure inp(var a:mas;var n:integer);{Процедура ввода} var i:integer; begin readln(n); for i:=1 to n do begin readln(f,a[i].FIO); readln(f,a[i].Vozr); readln(f,a[i].adress); end; end; Procedure ext(a:mas;n:integer); {Процедура вывода} var i:integer; begin for i:=1 to n do begin writeln(a[i].FIO); writeln(a[i].Vozr); writeln(a[i].adress); end; end; Begin assign(f,'file.txt'); reset(f); inp(m,e1); ext(m,e1); end. file.txt |
13.02.2018, 22:59 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Эти топики очень похожи на ваш и помогут вам разобраться Успешность работника можно определить по браузеру В Косово обнаружен трансформатор возрастом 20.000 лет С Днем работника торговли! |
14.02.2018, 09:18 | #2 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
А продолжение (точнее, программа целиком) бежит вот этак:
Код:
Type rec=record FIO:string[30]; Vozr:integer; adress:string[30]; end; mas=array[1..10] of rec; Var f:text; e1,j,Min_age,k:integer; m:mas; Procedure inp(var a:mas;var n:integer);{Процедура ввода} var i:integer; begin i:=0; Repeat Inc(i); readln(f,a[i].FIO); readln(f,a[i].Vozr); readln(f,a[i].adress); Until EoF(f); n:=i; end; Begin assign(f,'file.txt'); reset(f); inp(m,e1); close(f); Min_age:=100; for j:=1 to e1 do With m[j] do if (Vozr<Min_age) and (Vozr>=20) and (Vozr<=30) then begin k:=j; Min_Age:=Vozr; end; Writeln('Result:'); Writeln(m[k].FIO); Writeln(m[k].Vozr); Writeln(m[k].adress); Readln End. |
15.02.2018, 08:18 | #3 (permalink) |
Новичок
Регистрация: 13.02.2018
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Большое спасибо! Выручили! У меня к Вам просьба,не могли ли бы вы пожалуйста описать каждое действие,что оно значит? Хочу полностью разобраться в коде. Буду очень благодарен!
|
15.02.2018, 14:18 | #4 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Слегка подредактированная процедура inp считывает данные из файла и, кроме того, автоматически определяет количество участников, так что вводить этот параметр отдельно не нужно (счётчик увеличивается на 1 с каждым считыванием данных, пока файл не кончится). Дальше самым стандартным образом ищем минимум возраста, правда, с наложением дополнительных рамок. Для этого сначала присваиваем искомому минимуму заведомо большее значение (100), потом прогоняем весь массив записей. Если возраст меньше минимального и находится в указанных рамках, то он становится минимальным и фиксируется (переменной k) номер этой записи. Дальше выводятся все поля записи с номером k. |
|
01.03.2018, 17:12 | #5 (permalink) |
Новичок
Регистрация: 13.02.2018
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Владимир, день добрый. Не могли ли бы вы меня еще раз выручить, нужно сделать всё тоже самое, НО, на каждое действие должна быть своя процедура, т.е процедура входная (inp), процедура выхода(outp) и процедура поиска(find), и как написал выше, локальные переменные, буду Вам благодарен!
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Опции темы | |
Опции просмотра | |
|
|