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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.06.2009, 08:39   #1
Viata
 
Аватар для Viata
 
Регистрация: 24.06.2009
Сообщений: 3
По умолчанию Работа с записями

Здравствуйте!
Задача с записями на Паскале.
Известны данные о 4 сотрудниках: фамилия, возраст и отношение к воинской службе (военнообязанный или нет). Определить фамилии самых старших по возрасту людей среди военнообязанных, и старших по возрасту среди невоеннообязанных (считать, что такие есть).

Вот мой код программы:
Код работает, но проблема- не в том направлении. Результат выводит- первого введенного человека среди военнослужащих, и первого введенного среди невоеннослужащих. Что делать? Возможно, нужно использовать индексное заполнение, но как с этим работать, я не знаю.. помогите пожалуйста, найти ошибки!

uses crt;
const n=4;
type sotr=record {тип-запись с полями по условию}
fam:string[50]; {!!!!!!!!}
vozrast:integer;
voj: char;
end;

var
voj:sotr;
st:array[1..n] of sotr;
mx1, mx2: byte;
i,imx: byte;
begin

clrscr;
writeln('Введите данные о сотрудниках:');
for i:=1 to n do
begin
writeln('Сотрудник ',i);
write('Фамилия: ');readln(st[i].fam);
write('Возраст: ');readln(st[i].vozrast);
repeat
write('Отношение к воинской службе (В, н): ');
readln(st[i].voj);
until st[i].voj in ['В','н'];
end;
{_____________________}

mx1:=0; mx2:=0; imx:=0;
for i:=1 to n do
begin
if (st[i].vozrast>=mx1)and(st[i].voj='В') then
begin
mx1:=st[i].vozrast;
imx:=i;

for i:=1 to n do
if (st[i].vozrast>=mx2)and(st[i].voj='н') then
begin
mx2:=st[i].vozrast;
imx:=i;
end;

clrscr;
writeln('Список сотрудников:');
writeln('----------------------------');
writeln('| Фамилия | Возраст | Отношение к воинской службе |');
writeln('----------------------------');
writeln;
end;
gotoXY(1,whereY);
write('| ',st[i].fam);
gotoXY(13,whereY);
write('| ',st[i].vozrast);
gotoXY(24,whereY);
write('| ',st[i].voj);
gotoXY(28,whereY);
write('|');
writeln;
end;
mx1:=0; mx2:=0; imx:=0;
for i:=1 to n do

begin
if (st[i].vozrast>=mx1)and(st[i].voj='В') then
begin
mx1:=st[i].vozrast;
imx:=i;
write('Самые старшие по возрасту среди Военнообязанных:',st[imx].vozrast);
writeln;
end;

for i:=1 to n do
if (st[i].vozrast>=mx2)and(st[i].voj='н') then
begin
mx2:=st[i].vozrast;
imx:=i;{его индекс в массиве}
write('Самые старшие по возрасту среди невоеннообязанных:',st[imx].vozrast);
writeln;
writeln;

readln
end;
end;
end.
Все любят прозрачность, но больше всего боятся, когда их видят насквозь.
Viata вне форума Ответить с цитированием
Старый 24.06.2009, 08:48   #2
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

Код:
uses crt;
const n=4;
type sotr=record {тип-запись с полями по условию}
fam:string[50]; {!!!!!!!!}
vozrast:integer;
voj: char;
end;

var
voj:sotr;
st:array[1..n] of sotr;
mx1, mx2: byte;
i,imx1,imx2: byte;
begin

clrscr;
writeln('Введите данные о сотрудниках:');
for i:=1 to n do
begin
writeln('Сотрудник ',i);
write('Фамилия: ');readln(st[i].fam);
write('Возраст: ');readln(st[i].vozrast);
repeat
write('Отношение к воинской службе (В, н): ');
readln(st[i].voj);
until st[i].voj in ['В','н'];
end;
{_____________________}

mx1:=0; mx2:=0; imx1:=0;imx2:=0;


clrscr;
writeln('Список сотрудников:');
writeln('----------------------------');
writeln('| Фамилия | Возраст | Отношение к воинской службе |');
writeln('----------------------------');
writeln;

for i :=1 to n do begin
gotoXY(1,whereY);
write('| ',st[i].fam);
gotoXY(13,whereY);
write('| ',st[i].vozrast);
gotoXY(24,whereY);
write('| ',st[i].voj);
gotoXY(28,whereY);
write('|');
writeln;
end;

for i:=1 to n do
if (st[i].vozrast>mx1)and(st[i].voj='В') then
begin
mx1:=st[i].vozrast;
imx1:=i;
end;

for i:=1 to n do
if (st[i].vozrast>mx2)and(st[i].voj='н') then
begin
mx2:=st[i].vozrast;
imx2:=i;
end;
// так как по условию надо фамилии
writeln('Самые старшие по возрасту среди Военнообязанных:',st[imx1].fam);
writeln('Самые старшие по возрасту среди неВоеннообязанных:',st[imx2].fam);
writeln;
readln;
end.
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.

Последний раз редактировалось ОДИНОЧЕСТВО В СЕТИ; 24.06.2009 в 09:09.
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Старый 24.06.2009, 09:02   #3
Viata
 
Аватар для Viata
 
Регистрация: 24.06.2009
Сообщений: 3
По умолчанию Спасибо!

Цитата:
Сообщение от ОДИНОЧЕСТВО В СЕТИ Посмотреть сообщение
Код:
uses crt;
const n=4;
type sotr=record {тип-запись с полями по условию}
fam:string[50]; {!!!!!!!!}
vozrast:integer;
voj: char;
end;

var
voj:sotr;
st:array[1..n] of sotr;
mx1, mx2: byte;
i,imx: byte;
begin
Единственное, imx1 нужно было прописать.

i,imx, imx1: byte;
...
и
imx1:=0;

А за помощь спасибо огромное!
Все любят прозрачность, но больше всего боятся, когда их видят насквозь.
Viata вне форума Ответить с цитированием
Старый 24.06.2009, 09:03   #4
Viata
 
Аватар для Viata
 
Регистрация: 24.06.2009
Сообщений: 3
По умолчанию

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


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с файлами и записями. Помощь с итоговой Refenement Помощь студентам 13 19.03.2009 08:42
Работа с записями (pascal) Siroga35 Помощь студентам 2 17.03.2009 18:58
Паскаль, работа с записями Veselyn Помощь студентам 11 08.03.2009 10:49
Работа с записями, паскаль Дядька Помощь студентам 5 13.02.2009 18:44
работа с записями Mango Помощь студентам 2 12.10.2008 23:54