Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Опять же записи

Автор: Zundell 17.12.2006 0:32

Ребят,помогите плиз!че за фигню пишет?Задание следующее:
Вычислить средний балл группы и распечатать список студентов, имеющих средний балл ниже среднего балла группы!(Я понял так,что средний бал нам уже дан и его я ввожу с клавивтуры.что я и написал)

Type
student=record
Fio:string[50];
GodRow:integer;
GodPost:integer;
SredOz:real;
Kurs:integer;
Gruppa:string[10];
end;
var
S:student;
grup:array[1..25] of student;
i,j,k,sr:integer;
begin
for i:=1 to 25 do
begin with S do begin
writeln('Vvedite FIO:');
readln(FIO);
writeln('Vvedite GodRow:');
readln(GodRow);
writeln('Vvedite GodPost:');
readln(GodPost);
writeln('Vvedite SredOz:');
readln(SredOz);
writeln('Vvedite Gruppa:');
readln(Gruppa);
writeln('Vvedite Kurs:');
readln(Kurs);
end;
sr:=0;
for i:=1 to 25 do
begin
sr:=sr+S.SredOz;{Пишет Type mismatch}

Автор: volvo 17.12.2006 0:34

Присваивание Integer <- Real недопустимо... Делай Sr типа Real ...

Автор: Zundell 17.12.2006 0:39

Сенкс..говорю же туплю(((

Автор: Zundell 17.12.2006 0:51

sr:=0;
for i:=1 to 25 do
begin
sr:=sr+S.SredOz;
end;
sr:=sr/25;
for i:=1 to 25 do
if sr > S.SredOz then begin
S.SredOz:=


извиняюсь я,но вот терь чет не соображу,как запомнить средний бал меньший общего среднего бала,чтобы его уже потом вывести на печать?

Автор: Zundell 17.12.2006 4:59

Ребят,помогите плиз...нидапераю никак))заранее признателен

Автор: Zundell 17.12.2006 22:13

Если я пытаюсь сохранить например в A[i] массив,то паскаль ругается!

Автор: Zundell 19.12.2006 3:56

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

Uses crt;
Const
n=3;
Type student=record
Fio:string[20];
Grow:integer;
Gpos:integer;
Kurs:integer;
Gruppa:integer;
inf,ist,mat:byte;
sball:real;
Osball:real
end;
var
i,j:integer;S:student;
mas:array[1..5] of student;
s_inf,s_ist,s_mat,osball:real;
begin
for i:=1 to n do with mas[i] do
begin
writeln('i=',i:4);
writeln('FIO');
readln(FIO);
writeln('Grow');
readln(Grow);
writeln('Gpos');
readln(GPos);
writeln('Kurs');
readln(Kurs);
Writeln('Gruppa');
readln(Gruppa);
writeln('Otzenki{[inf,ist,mat]');
readln(inf,ist,mat);
sball:=(inf+ist+mat)/3;
Osball:=(s_inf+s_ist+s_mat)/3;
clrscr;
end;
s_inf:=0;s_ist:=0;s_mat:=0;
for i:=1 to n do
begin
s_inf:=s_inf+mas[i].inf;
s_ist:=s_ist+mas[i].ist;
s_mat:=s_mat+mas[i].mat;
end;
s_inf:=s_inf/n;
s_ist:=s_ist/n;
s_mat:=s_mat/n;
Osball:=(s_inf+s_ist+s_mat)/3;
for i:=1 to n do with mas[i] do
begin
if mas[i].sball<mas[i].osball then
begin
writeln(Fio);




Автор: мисс_граффити 19.12.2006 4:39

речь идет про такую табличку:

Код
           матем.  физик.  ин.яз
Иванов            5          4          5
Петрова           4         3           3
Сидоров          5          5           5

то есть средний балл Иванова (5+4+5)/3, Петровой (4+3+3)/3, Сидорова (5+5+5)/3
Общий средний (5+4+5+4+3+3+5+5+5)/9

Автор: Zundell 20.12.2006 0:45

фуф...вроде все сделал...терь осталась проблема в том,что он выводит на экран только по одному человеку,чей средний бал меньше общего и чтобы просмотреть другого необходимо на enter нажать!как это исправить,сделать чтоб сразу весь список выводился?

uses crt;
Type
student=record
Fam:string[10];
Grow:integer;
Gpost:integer;
Kurs:integer;
Gruppa:integer;
sr_ball:real;
inf,ist,mat:real;
end;
var
s:student;
mas:array[1..10] of student;
i,j:integer;
SR_grup:real;
s_inf,s_ist,s_mat:real;
begin
for i:=1 to 5 do with mas[i] do
begin
write('Vvedite Familiju: ');
readln(Fam);
write('Vvedite God rowdenija: ');
readln(Grow);
write('Vvedite God postuplenija: ');
readln(Gpost);
write('Vvedite Kurs: ');
readln(Kurs);
write('Vvedite gruppu: ');
readln(gruppa);
write('Vvedite ozenki po informatike,istorii,mathematike: ');
readln(inf,ist,mat);
sr_ball:=(inf+ist+mat)/3;
end;
s_inf:=0;s_ist:=0;s_mat:=0;
for i:=1 to 5 do begin
s_inf:=s_inf+mas[i].inf;
s_ist:=s_ist+mas[i].ist;
s_mat:=s_mat+mas[i].mat;
end;
s_ist:=s_ist/5;
s_inf:=s_inf/5;
s_mat:=s_mat/5;
Sr_grup:=sr_grup+s_inf;
Sr_grup:=sr_grup+s_ist;
Sr_grup:=sr_grup+s_mat;
sr_grup:=sr_grup/3;
for i:=1 to 5 do with mas[i] do begin
if sr_grup>sr_ball then begin
clrscr;
writeln(Fam,' ',Gpost,' ',Grow,' ',Kurs,' ',Kurs,' ',sr_ball:3:2);
writeln('Srednij ball po gruppe',sr_grup:3:2);
readln;
end;
end;
end.


в массиве опечатка [1..5] smile.gif

Автор: мисс_граффити 20.12.2006 1:31

Цитата
for i:=1 to 5 do with mas[i] do begin
if sr_grup>sr_ball then begin
clrscr;
writeln(Fam,' ',Gpost,' ',Grow,' ',Kurs,' ',Kurs,' ',sr_ball:3:2);
writeln('Srednij ball po gruppe',sr_grup:3:2);
readln;
end;

что, по-твоему, делает выделенный оператор?

Автор: Zundell 20.12.2006 1:45

дает возможность просмотреть что получилось не нажимая кнтрл ф9! unsure.gif я ошибаюсь?без него у меня не показывает..я попробовал

Автор: мисс_граффити 20.12.2006 2:05

он заставляет программу ждать, пока ты на что-то нажмешь.
и у тебя он ВНУТРИ цикла - то есть ждет после вывода КАЖДОЙ записи.
поставь перед последним end - будет ждать один раз.