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

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

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

 
 Ответить  Открыть новую тему 
> Задача на список, Упорядочивание и поиск в списке
сообщение
Сообщение #1


Новичок
*

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

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


Здраствуйте, почти все долги сдал, но есть проблемы с задачей на списки, вот задание:
*Создать программу формирования данных о школьниках: фамилия, имя, год рождения, класс. Организовать выбор по возрасту(сравнивая, от 2007 отнимать написанный), упорядочить выдаваемый список по годам рождения.* Моя сегодняшняя программа такова:

program Spisok2;
uses crt;
const N=10;
var
k,j:byte;
t:array[1..N] of record
f:string[15];
i:string[10];
o:string[15];
o1:byte;
end;
begin
clrScr;
writeln('Введите количество школьников');
readln(k);
clrScr;
for j:=1 to k do
begin
writeln('Фамилия');readln(t[j].f);
writeln('Имя');readln(t[j].i);
writeln('Год рождения');readln(t[j].o);
writeln('Класс');readln(t[j].o1);
end;
clrScr;
writeln('Фамилия Имя Год рождения Класс');
for j:=1 to k do
begin
Gotoxy(1,j+1);writeln(t[j].f);
Gotoxy(16,j+1);writeln(t[j].i);
Gotoxy(32,j+1);writeln(t[j].o);
Gotoxy(46,j+1);writeln(t[j].o1);
end;
readln;
end.


Не пойму, как организовать выбор по возрасту( *хотя если по логике нужно от 2007 отнимать написанный, но не знаю как это в программе описать*) и как упорядочить по годам рождения, помогите пожалста!


--------------------
И никто его так и не узнал*)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Вот тут был пример сортировки массива записей: Как упорядочить данные по возрастанию? (меняешь функцию Compare так, чтобы она сравнивала не поля Age, а года рождения (не надо ничего ниоткуда отнимать, сейчас-то еще 2007 год, а через 2 недели?), и меняешь сортировку на "по убыванию") - тогда массив будет упорядочен "по возрастанию" возрастов ( smile.gif ) - сначала младшие, у которых год рождения больше, потом - старшие...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

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

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


Цитата(volvo @ 24.12.2007 17:31) *

Вот тут был пример сортировки массива записей: Как упорядочить данные по возрастанию? (меняешь функцию Compare так, чтобы она сравнивала не поля Age, а года рождения (не надо ничего ниоткуда отнимать, сейчас-то еще 2007 год, а через 2 недели?), и меняешь сортировку на "по убыванию") - тогда массив будет упорядочен "по возрастанию" возрастов ( smile.gif ) - сначала младшие, у которых год рождения больше, потом - старшие...

Извини, может код напишешь? я посмотрел там, фигня какая т, пытался подстроить под свои данные, инфига не вышло...


--------------------
И никто его так и не узнал*)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гуру
*****

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

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


Цитата
пытался подстроить под свои данные, инфига не вышло...

Свои попытки ... в студию! (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

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

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


Ну вот, попытался совместить с тем примером, вроде сортирует, проверьте, если что не так

uses crt;
const N = 4;
type
TInfo = record
Age: integer;
Name: string [20];
end;
List = array [1..N] of TInfo;
function Compare (T1,T2: TInfo): integer;
begin
if T1.Age > T2.Age then Compare := 1
else if T1.Age = T2.Age then Compare := 0
else Compare := -1
end;
procedure QuickSort (var A: List; Lo, Hi: Integer);
var
i,j: integer;
x, y: TInfo;
procedure Sort (l, r: Integer);
begin
repeat
x := A[(l+r) shr 1];
i := l; j := r;
repeat
while Compare( A[i], x ) < 0 do inc(i);
while Compare( A[j], x ) > 0 do dec(j);
if i <= j then
begin
y := A[i]; A[i] := A[j]; A[j] := y;
inc(i); dec(j);
end;
until i > j;
if l < j then Sort (l, j);
l := i;
until l >= r;
end;
begin
Sort (Lo,Hi);
end; {QuickSort}
var
Data: List;
I,k,j: Integer;
t:array[1..N] of record
f:string[15];
i:string[10];
o:string[15];
o1:byte;
end;
begin { Main }
clrScr;
writeln('Введите количество школьников');
readln(k);
clrScr;
for j:=1 to k do
begin
writeln('Фамилия');readln(t[j].f);
writeln('Имя');readln(t[j].i);
writeln('Год рождения');readln(t[j].o);
writeln('Класс');readln(t[j].o1);
end;
QuickSort (Data, 1, N);
clrScr;
writeln('Фамилия Имя Год рождения Класс');
for j:=1 to k do
begin
Gotoxy(1,j+1);writeln(t[j].f);
Gotoxy(16,j+1);writeln(t[j].i);
Gotoxy(32,j+1);writeln(t[j].o);
Gotoxy(46,j+1);writeln(t[j].o1);
end;
readln;
end.



--------------------
И никто его так и не узнал*)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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