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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2012, 19:41   #1
Nerotim
Пользователь
 
Регистрация: 28.10.2012
Сообщений: 16
Хорошо Delphi 7.0 Записи. Не могу найти ошибку в процедуре

Создать базу данных из заданного числа записей, отражающих результаты сессии: Фамилия, группа, 3 предмета, 3 оценки. По запросу о неуспевающих выдать список по алфавиту фамилий студентов по каждой группе, имеющих хоть одну оценку "2". Использовать процедуры.

Ввод и вывод работают исправно, но вот с процедурой nezachet проблема. Программа выдает ошибку при компилировании.

Заранее спасибо



Код

Код:
program ProjectGRUPPA ;

{$APPTYPE CONSOLE}

uses
SysUtils,
math;

Type Tstud= record
fam,grup: string;
mat,inf,fiz:byte;
end;
Tgrup=array[1..4] of Tstud;
//==================================
Procedure vvod(var x:Tgrup; var n:integer);
var i : integer;
Begin
write('vvedite kol-vo studentov ');
readln(n);
for i:=1 to n do
with x[i] do
begin
write(i,'.familiya ');
readln(fam);
write('gruppa ');
readln(grup);
write('matan ');
readln(mat);
write('infa ');
readln(inf);
write('fizika ');
readln(fiz);
writeln;
end;
end;
//=================================== ====]
Procedure nezachet(var x,z: Tgrup; k,m: integer);
var i,j,g:integer;
y: Tstud;
Begin

for i:=1 to k do
begin
if (x[i].mat < 3) or (x[i].inf < 3) or (x[i].fiz < 3)
then
begin
for g:=1 to m do
z[1]:=x[i];
g:=g+1;
end;
end;
//-- --- --- --- --- --- --- ---
for g:=1 to m do
for j:=1 to m do
if (z[j].fam < z[g].fam) then
begin
y:=z[g];
z[g]:=z[j];
z[j]:=y;
end;

writeln('nezachet');
for g:=1 to m do
with z[g] do
begin
write(fam,' ',grup,' ','matan-',mat,' ','infa-',inf,' ','fizika-',fiz);
writeln;
end ;
readln;
end;

//=================================== =======
procedure vivod(x:Tgrup; n: integer);
var i:integer;
begin
writeln('sessia');
for i:=1 to n do
with x[i] do
begin
write(fam,' ',grup,' ','matan-',mat,' ','infa-',inf,' ','fizika-',fiz);
writeln;
end ;

end ;
//=================================== =====
var x,z: Tgrup; n,m,k: integer;
begin
vvod(x,n);
vivod (x,n);
nezachet (x,z,k,m);
readln;



{ TODO -oUser -cConsole Main : Insert code here }
end
Nerotim вне форума Ответить с цитированием
Старый 28.11.2012, 10:40   #2
Александр Павлович
Пользователь
 
Аватар для Александр Павлович
 
Регистрация: 25.11.2012
Сообщений: 13
По умолчанию

На какой строке и какая ошибка выдаётся?
Я отметил пару странностей в процедуре:
Код:
Procedure nezachet(var x,z: Tgrup; k,m: integer);
var i,j,g:integer;
y: Tstud;
Begin

for i:=1 to k do begin
if (x[i].mat < 3) or (x[i].inf < 3) or (x[i].fiz < 3) then begin
for g:=1 to m do z[1]:=x[i]; {переменная g не используется в теле цикла. Зачем тогда цикл? Что он должен делать?}
g:=g+1; {Это вне цикла "for g". Зачем это?}
end;{if}
end;{for i}
//-- --- --- --- --- --- --- ---
for g:=1 to m do
for j:=1 to m do
if (z[j].fam < z[g].fam) then begin
y:=z[g];
z[g]:=z[j];
z[j]:=y;
end;

writeln('nezachet');
for g:=1 to m do
with z[g] do begin
write(fam,' ',grup,' ','matan-',mat,' ','infa-',inf,' ','fizika-',fiz);
writeln;
end ;
readln;
end;
[/QUOTE]
С глубоким уважением,
Александр
Александр Павлович вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не могу найти ошибку Berg_13 Помощь студентам 0 16.05.2010 21:53
Не могу найти ошибку С\С++ Айдар Помощь студентам 1 08.03.2010 18:16
Delphi не могу найти ошибку..... world12_tk Помощь студентам 2 10.10.2009 15:19
массив записи, не могу исправить ошибку Алекс К. Помощь студентам 3 30.05.2009 02:28
Delphi. Не могу найти ошибку. Армана Помощь студентам 4 23.02.2009 23:34