Помощь - Поиск - Пользователи - Календарь
Полная версия: Помогите, пожалуйста, решить задачу с обработкой массивов типа "запись"...
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Snake
Помогите написать программу!

3. Подготовить файл с анкетными данными своих ближайших pодственников. Анкетные данные должны содеpжать:
- фамилию, имя, отчество
- степень pодства (мать, отец, брат, сестpа и т.д.)
- гоpод пpоживания
- год pождения
- социальное положение
Сфоpмиpовать новый файл, содеpжащий сведения о родственниках-пенсионеpах. Входные данные после записи их в файл при дальнейшем решении задачи считывать из файла. Решить с использованием процедур и функций и типом "запись". С записями использовать оператор with

Заранее огромное Вам спасибо!!!
Артемий
Показывай что пробовал делать.
Andrewshkovskii
Ну тут ,как по заданию видно,надо использовать неоднородные структуры данных,типа запись (record).
У тебя будет 1 тип записей,и 1 массив :
 
const
n=10;
nowyear=2007;
BlijRods= record
FIO:string;
rods:string;
Hometown:string;
yofb:integer;
SocP:string;
Age:byte;
Flg:byte; {флаг,если 1 то пенсионер,если 0 то нет}
end;
Arr = array [1..n] of BlijRods;


После ввода делаешь цикл отбора пенсионеров(для начала,вычисли возрасткаждого из родственников),что-то типа
 for i:=1 to n do
begin
arr[i].Age:=nowyear-yofb;
end;


После отбирай пенсионеров, что-то вроде этого :

for i:=1 to n do
begin
if arr[i].Age>60 then
arr[i].Flg:=1
else
arr[i].Flg:=0;
end;

ну и вот ты теперь знаешь,кто пенсионер ,а кто нет.записывай в файл по условию

 for i:=1 to n do
begin
if arr[i].Flg=1 then {Тут !!процедура!!(напиши сам) записи в файл}


Я бы так сделал..может это и не очень оптимальный вариант..
volvo
Цитата
может это и не очень оптимальный вариант..
Это очень неоптимальный вариант... Мало того, что ты модифицировал запись (т.е., она теперь содержит лишнюю информацию, по условию флага и поля Age в записи не предусмотрено), так ты еще и проходишь по массиву (кстати, почему по массиву? Задание на работу с файлами) дважды. Зачем? Что, нельзя при проходе сразу проверить разность текущего года и года рождения, и при необходимости записать данные в другой файл?
Andrewshkovskii
Цитата
так ты еще и проходишь по массиву (кстати, почему по массиву? Задание на работу с файлами) дважды. Зачем?

А как иначе,если у него несколько родственников?сразу Записывать каждую структуру отдельно в файл???
Конечно,ты прав,можно и обойтись без 2х дополнительный элементов(флаг и возраст)а сразу проверять их возраст и записывать в файл, вот так :
 if (a[i].yofb-nowyear)>60 then

Snake
Цитата(Andrewshkovskii @ 8.06.2007 13:05) *

Код
if arr[i].Flg=1 then {Тут !!процедура!!(напиши сам) записи в файл}



Еще бы знать что-то о Паскале )) Я не "сам", я - "сама" rolleyes.gif
Неужели нет каких-нибудь уже готовых похожих программ где-нибудь?!
Andrewshkovskii
нормально так.....А где ты получила это задание?в институте?Тебе надо эту программу сдать и всё?не защищать,ничего?Оо
похожие может и есть,только искать долго...
Snake
Цитата(Andrewshkovskii @ 8.06.2007 13:58) *

нормально так.....А где ты получила это задание?в институте?Тебе надо эту программу сдать и всё?не защищать,ничего?Оо
похожие может и есть,только искать долго...


В универе дали. Целых три задачи! Сдать надо. Защищать, я надеюсь, не заставят... unsure.gif
Andrewshkovskii
блин..ну вам же читают лекции..и я думаю что это не первая задача на паскале..надо что-то знать..а писать за тебя ВСЮ задачу я думаю,мало кто захочет (а студенты,у кот. сейчас сессия темболее)...
Я попытался описать основной алгоритм,осталоное проше некуда,запись и чтения из файлов,да осуществить ввод данных(не забываю про проверку вводимых значений.. )
Snake
Andrewshkovskii

В любом случае спасибо за помощь!!! Будем пытаться что-нибудь делать дальше! give_rose.gif
klem4
М
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...

Andrewshkovskii
в общем смотри,вводишь данные о родственниках,записываешь их в файл ,после чего ищешь пенсионеров,и записываешь их уже в другой файл.вроде тут все просто..
Напиши 4 процедуры,
1 Инициализирует файл с родственниками (создание файл,т.е ты указываешь путь и имя файла)
2 Запись родственников в созданный файл родственников.
3 инициализация файла с пенсионерами.
4 Запись пенсионеров в файл.
а да,забыл,ешё напиши процедуры на ввод данных и их вывод на экран..не забудь про проверку вводмых значений!
Snake
Andrewshkovskii, пасиб
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.