IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> RECORD, Надо создать программу если Дано, помогите закончить до конца
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 5
Пол: Мужской

Репутация: -  0  +


Надо создать программу, если Дано:
type Data = record
Ziua: 1..31;
Luna: 1..12;
Anul: integer; end;
Persoana = record
NumePrenume: string;
DataNasterii: Data;
end;
ListaPersoane = array[1..50] of Persoana;


Пояснения:
ListaPersoane -список лиц
Persoana-человек
Datanasterii-дата рождения
Ziua-день
anul-год
NumePrenume-имя и фамилия
Dati datele persoanei - введите даты
Data nasterii -день рождения
Ziua cautata - день который ищем
Ну уже комментарии там для себя делал, думаю не надо переводить)

Сделать программу которая будет читать с клавиатуры данные n человек(n< или равно 50) и выводить на экран:
a. людей рожденных в день z месяца;
b. людей рожденных в месяц l года;
c. людей рожденных в год a;
d. Людей рожденных z.l.a числа;
e. Самый старый человек
f. Самый молодой
g. Возраст каждого человека в годах, месяцах, днях
h. Список людей которые имеют больше v лет
i. Список людей в алфавитном порядке
j. Список людей упорядоченный в соответствии с датой рождения
k. Список людей такого же возраста (рожденных в том же году)
Понимаю что много, но помогите если сможете)...только не нужно использовать "сложные" термины, то есть надо на уровне 11 класса, но надо обязательно решить, все не могу..
Вот сколько я смог сделать:...

Program spisok;
type Data = record
Ziua: 1..31;
Luna: 1..12;
Anul: integer; end;
Persoana = record
NumePrenume: string;
DataNasterii: Data;
end;
ListaPersoane = array[1..50] of Persoana;
var a:ListaPersoane; n,i,z,l,an:integer; max,min: persoana;
begin
{Introducerea datelor in tablou}
writeln('Dati numarul de persoane'); readln(n);
For i:=1 to n do
begin
writeln('Dati datele persoanei ',i);
writeln('Numele si Prenumele '); readln(a[i].NumePrenume);
Writeln('Data nasterii '); readln(a[i].DataNasterii.ziua);
Writeln('Luna nasterii '); readln(a[i].DataNasterii.luna);
Writeln('Anul nasterii '); readln(a[i].DataNasterii.anul);
end;
{Introducerea datelor in tablou}

{Afisarea datelor din tablou}
For i:=1 to n do
begin
writeln('Datele persoanei ',i);
writeln('Numele si Prenumele ',a[i].NumePrenume);
Writeln('Data nasterii ',a[i].DataNasterii.ziua);
Writeln('Luna nasterii ',a[i].DataNasterii.luna);
Writeln('Anul nasterii ',a[i].DataNasterii.anul);
end;
{Afisarea datelor din tablou}

{Punctul a}
writeln('Ziua cautata'); readln(z);
For i:=1 to n do
if a[i].DataNasterii.ziua = z then writeln(a[i].NumePrenume);
{Punctul a}

{Punctul b}
writeln('Luna cautata'); readln(l);
For i:=1 to n do
if a[i].DataNasterii.luna = l then writeln(a[i].NumePrenume);
{Punctul b}

{Punctul c}
writeln('Anul cautat'); readln(an);
For i:=1 to n do
if a[i].DataNasterii.anul = an then writeln(a[i].NumePrenume);
{Punctul c}

{Punctul d}
For i:=1 to n do
if (a[i].DataNasterii.ziua = z) and ( a[i].DataNasterii.luna = l) and
( a[i].DataNasterii.luna = l ) then writeln(a[i].NumePrenume);
{Punctul d}
end.


Ещё вроде должны были получиться рабочими пункты e и f, но ничего не делают.., если добавить следующую часть кода перед end.
{Punctul e}
max.DataNasterii.anul := 0;
For i:=1 to n do
if a[i].DataNasterii.anul < max.DataNasterii.anul then max:=a[i];
writeln('samyy molodoy chelovek' ,max.NumePrenume);
{Punctul e}

{Punctul f}
min.DataNasterii.anul := 0;
For i:=1 to n do
if a[i].DataNasterii.anul > min.DataNasterii.anul then max:=a[i];
writeln('samyy staryy chelovek ' ,min.NumePrenume);
{Punctul f}
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

Репутация: -  627  +


Цитата
Ещё вроде должны были получиться рабочими пункты e и f, но ничего не делают.., если добавить следующую часть кода перед end.
Не работают они по твоей собственной невнимательности:

1) когда ищешь самого молодого, надо в min.DataNasterii.anul (логичнее, правда, когда ищешь минимальный возраст - то и используй переменную Min) занести MaxInt - максимально возможное значение для Integer, и потом уже запускать цикл. Если занесёшь 0 - то у тебя условие никогда не выполнится, вряд ли Anul (я, конечно, не знаю, что это такое, но догадываюсь) бывает отрицательным...
{ Пункт e }
min.DataNasterii.anul := MaxInt;
For i:=1 to n do
if a[i].DataNasterii.anul < min.DataNasterii.anul then min:=a[i];
writeln('samyy molodoy chelovek' ,min.NumePrenume);
{Punctul e}

2) когда ищешь самого старого - то у тебя было почти правильно, только в цикле изменялся max, а результат выводился из неизменённого min. Вот так попробуй:

{ Пункт f }
max.DataNasterii.anul := 0; { <--- max, а не min. В следующей строке - тоже }
For i:=1 to n do
if a[i].DataNasterii.anul > max.DataNasterii.anul then max:=a[i];
writeln('samyy staryy chelovek ' ,max.NumePrenume);
{ Пункт f }
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





Группа: Пользователи
Сообщений: 5
Пол: Мужской

Репутация: -  0  +


IUnknown Спасибо за помощь, хоть с этими двумя разобрался, только тут пункт е искал самого молодого а не старого, ну я поменял местами и все работает)
An это год ,в пояснениях написал)..
......а вот пункт G не получается вовсе)..а со списками обращаться не получается...

Сообщение отредактировано: Nagato -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4





Группа: Пользователи
Сообщений: 5
Пол: Мужской

Репутация: -  0  +


Сделал ещё одну) Помогите пожалуйста кто разбирается, осталось ещё 4:
h. Список людей которые имеют больше v лет
i. Список людей в алфавитном порядке
j. Список людей упорядоченный в соответствии с датой рождения
k. Список людей такого же возраста (рожденных в том же году)

{Puctul g}
For i:=1 to n do
begin
writeln('Vozvrast ',i);
writeln('Numele si Prenumele: ',a[i].NumePrenume);
Writeln('Data nasterii: ',a[i].DataNasterii.ziua);
Writeln('Luna nasterii: ',a[i].DataNasterii.luna);
Writeln('Anul nasterii: ',a[i].DataNasterii.anul);
end;


Сообщение отредактировано: Nagato -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 25.04.2024 13:31
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name