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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2009, 21:01   #1
ApXoH
Пользователь
 
Регистрация: 31.03.2009
Сообщений: 11
По умолчанию Помогите((( Завтра сдавать!!!((

Вот программа:
Создать фаил, содержащий сведения о том, какие из пяти предпологаемых дисциплин по выбору желает слушать судент.Структура записи: фамилия студента, индекс группы, 5 дисциплин, средний бал успеваемости .Количество записей - 25
Нужно чтобы программа еще печатала список студентов желающих прослушать дисциплину "X". если число желающих превышает 8 человек, то отобрать студентов, имеющих более высокий средний бал успеваемости.

Я нашел прогу на нее в Нэте, но проблема в том что мой паскаль не хочет включать дерективу {$APPTYPE CONSOLE} и не может работать с SetLength.

Подскажите чем ее заменить хотябы???там вроде немного работы должно быть только процедуру ShareList исправить и все...а если завтра не сдам будет плохо(((

program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;
type stud=record
fio:string[100];
ind:string[10];
discipline:array[1..5] of char;
mark:real;
end;
var
a,i,j,n,w,max:integer;
boo:boolean;
f:file of stud;
st,buf:stud;
gr:array of stud;
procedure CreateList;
begin
ASSIGN(f,'C:/stud.DAT');
REWRITE(f);
RESET(f);
for i:=1 to 25 do begin
writeln('Input record # ',i);
write('Name ');
readln(st.fio);
write('Input group index ');
readln(st.ind);
for j:=1 to 5 do begin
write('Input discipline # ',j);
readln(st.discipline[j]);
end;
write('Input mark ');
readln(st.mark);
WRITE(f,st);
end;
close(f);
writeln
end;
procedure ShowList;
begin
with buf do begin
writeln('Name: ',fio );
writeln('Index: ',ind);
writeln('Mark: ',mark);
end;
end;
procedure ShareList;
begin
writeln('Input discipline number');
readln(a);
SetLength(gr,25);
boo:=false;
ASSIGN(f,'C:/stud.DAT');
RESET(f);
i:=1;
while not eof(f) do
begin
read(f,st);
if st.discipline[a]='1' then begin
boo:=true;
gr[i].fio:=st.fio;
gr[i].ind:=st.ind;
gr[i].mark:=st.mark;
i:=i+1;
end;
end;
if boo=false then writeln('Nobody wants this disciplines')
else begin
n:=i-1;
if n>8 then begin
max:=1;
for j:=1 to 8 do begin
for i:=2 to n do begin
if gr[i].mark>gr[max].Mark
then max:=i;
end;
buf:=gr[max];
gr[max].mark:=0;
showlist;
end;
end
else
for i:=1 to n do begin
buf:=gr[i];
showlist;
end;
end;
SetLength(gr,0);
close(f);
end;


begin
W:=0;
WHILE W<>3 DO
BEGIN
WRITELN('1 - Create List');
WRITELN('2 - Show Discipline List');
WRITELN('3 - Exit');
READLN(W);
CASE W OF
1: CreateList;
2: ShareList;
END;
END;
end.
ApXoH вне форума Ответить с цитированием
Старый 05.05.2009, 21:29   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Программа написана на Делфи под консоль.
Директиву {$APPTYPE CONSOLE} просто удалите.
Вместо SetLength используйте Getmem. Естественно, не просто замените название, а почитайте о ней и исправьте как нужно.

Обращение к динамическим переменным тоже изменится. Будет примерно так:
Код:
gr^[i].fio
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 05.05.2009, 22:51   #3
ApXoH
Пользователь
 
Регистрация: 31.03.2009
Сообщений: 11
По умолчанию

Попробую огромное спасибо!!!
ApXoH вне форума Ответить с цитированием
Старый 05.05.2009, 23:00   #4
ApXoH
Пользователь
 
Регистрация: 31.03.2009
Сообщений: 11
По умолчанию

уффф как жаль что мы всего одну пару с динамическими переменными просидели((( вообще их не понимаю(
Не говоря что о Getmem и Freemem и не слышал никогда....
ApXoH вне форума Ответить с цитированием
Старый 05.05.2009, 23:04   #5
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от ApXoH
Не говоря что о Getmem и Freemem и не слышал никогда....
Пройдите по ссылке "Литература. Паскаль" в моей подписи. Там скачайте какой-нибудь учебник. Перейдите к главе про динамическую память.

Там не очень сложно.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 05.05.2009, 23:35   #6
ApXoH
Пользователь
 
Регистрация: 31.03.2009
Сообщений: 11
По умолчанию

Не получается(((( Хоть бы пример где то нормальный найти....чтоб подглядеть

Последний раз редактировалось ApXoH; 06.05.2009 в 00:45.
ApXoH вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите! Мне завтра сдавать!!! Loren Помощь студентам 1 24.02.2009 15:49
помогите срочно завтра сдавать... Defer Помощь студентам 2 25.01.2009 20:01
Помогите по паскалю завтра сдавать иначе выгонят!!!!! Кристина Паскаль, Turbo Pascal, PascalABC.NET 10 13.01.2007 23:05