Нужно чтобы при запуске программы выводилось следующие:
1) напишите кол-во студентов
2) напишите кол-во предметов
3) напишите имя первого ученика, потом второго и т.д.
4) напишите название первого предмета, второго и т.д.
5) напишите оценку первого ученика по первому предмету, второго ученика по первому предмету и т.д. и потом 1-го уч-ка по второму предмету и т.д.
6) и чтоб после этого появилась таблица с средним баллом учеников.
Я пытался сделать, но у меня немного не получилось:
Program ifit;
uses crt;
var sub:array[1...3] of string;
grades:array[1..3,1..3] of byte;
i,j,q:integer;
s:string;
begin
ClrScr;
for i:=1 to 3 do
begin
write<'kakoy predmet?'>;
readln<sub[i]>;
for j:=1 to 3 do
begin
repeat
write<'Student',j,' ocenka: '>;
readln<s>;
val<s,grades[i,j],q>;
if q <> 0 then writeln<'eto chislo'>;
until q=0
end;
end;
writeln;
wreteln<'predmet || student 1 || student 2 || student 3 || sredniy ball'>;
for i:=1 to 3 do
writeln<sub[i],' ',grades[i,1],' ',grades[i,2]
, ',grades[i,3],' ',
<grades[i,1]+grades[i,2]+grades[i,3]>/3:1:1>;
writeln<' Sredniy. bal ',<grades[1,1]+grades[2,1]+grades[3,1]>/3:1:1,' ',
<grades[1,2]+grades[2,2]+grades[3,2]>/3:1:1,' ',
<grades[1,3]+grades[2,3]+grades[3,3]>/3:1:1>;
end.
Я просто причесал твою прогу не вникая (и исправил < и > на ( и ) )
Кто-то может поможет по сути..
Program ifit;
uses
crt;
var
sub:array[1..3] of string;
grades:array[1..3,1..3] of byte;
i,j,q:integer;
s:string;
begin
ClrScr;
for i:=1 to 3 do
begin
write('kakoy predmet?');
readln(sub[i]);
for j:=1 to 3 do
begin
repeat
write('Student',j,' ocenka: ');
readln(s);
val(s,grades[i,j],q);
if q <> 0 then writeln('eto chislo');
until q=0
end;
end;
writeln;
writeln('predmet || student 1 || student 2 || student 3 || sredniy ball');
for i:=1 to 3 do
writeln(sub[i],' ',grades[i,1],' ',grades[i,2]
,' ',grades[i,3],' ',
(grades[i,1]+grades[i,2]+grades[i,3])/3:1:1);
writeln(' Sredniy. bal ',(grades[1,1]+grades[2,1]+grades[3,1])/3:1:1,' ',
(grades[1,2]+grades[2,2]+grades[3,2])/3:1:1,' ',
(grades[1,3]+grades[2,3]+grades[3,3])/3:1:1);
end.
Немного по поводу вывода таблицы:
Вместо
writeln(sub[i],' '
Лучше напиши
writeln(sub[i]:20,...
Опять же, вместо
(grades[1,3]+grades[2,3]+grades[3,3])/3:1:1
Лучше написать :20:1, чтобы выровнять ширину.
Camaro, количество предметов и студентов должно вводиться (по условию), а у тебя оно зашито намертво. Надо подходить более гибко. Если хочешь использовать простые массивы, то нужно завести их с запасом. Если можно использовать динамическую память - нужно это делать. При вводе/обработке/выводе - использовать циклы. И нигде явно не использовать числа, кроме как при задании констант.
Ты готов к этому? Могу показать начальные приемы.
в паскале плохо разбираюсь, но можно попробовать. Значит я облажался с самого начала...
const
MaxSubj=10;
MaxStud=100;
var
Subj: array [1..MaxSubj] of String;
Stud: array [1..MaxStud] of String;
Grad: array [1..MaxSubj,1..MaxStud] of byte;
nSubj,nStud: integer;
WriteLn('Введите предметы, по одному на строке. Закончите пустой строкой.');
nSubj:=0;
repeat
ReadLn(s);
if s<>'' then begin
Inc(nSubj);
Subj[nSubj]:=s
end
until s='';
for i:=1 to nStud do begin
WriteLn('Введите оценки студента ',Stud[i]);
for j:=1 to nSubj do begin
Write(Subj[j]',': ');
ReadLn(Grad[j,i])
end
end;
Блин я совсем нуб... Попытался ввести как ты написал, но я походу немного не разобрался куда всё это писать или что... в общем не получается ни фига(((
const
MaxSubj=10;
MaxStud=100;
var
Subj: array [1..MaxSubj] of String;
Stud: array [1..MaxStud] of String;
Grad: array [1..MaxSubj,1..MaxStud] of byte;
i,j,nSubj,nStud: integer;
s: string;
begin
{ввод предметов}
WriteLn('Введите предметы, по одному на строке. Закончите пустой строкой.');
nSubj:=0;
repeat
ReadLn(s);
if s<>'' then begin
Inc(nSubj);
Subj[nSubj]:=s
end
until s='';
{ввод студентов}
WriteLn('Введите студентов, по одному на строке. Закончите пустой строкой.');
nStud:=0;
repeat
ReadLn(s);
if s<>'' then begin
Inc(nStud);
Subj[nStud]:=s
end
until s='';
{ввод оценок}
for i:=1 to nStud do begin
Write('Введите оценки студента ',Stud[i]);
for j:=1 to nSubj do begin
Write(Subj[j],': ');
ReadLn(Grad[j,i])
end
end;
{тут надо сделать вывод таблицы}
end.
пока таблицы нет оно запускаться не будет?
Андрей огромное спасибо тебе за помощь, я сдал паскаль, свой старый прада пришлось попотеть. P.S. Я не то что не люблю отвечать на вопросы я просто не знаю что такое компилятор и т.д. Я наверно где то сделал ошибку при переписывании того что ты написал и из за этого у меня и попросило 4 end, в общем тему можно закрывать))) еще раз спасибо.