Здраствуйте ребят, очень надеюсь на вашу помощь. Создайте массив, содержаший оценки десяти учеников за выполнение трёх контрольных работ (по 3 оценки для каждого). Выведите на экран средний балл ученика. Подсчитайте число учеников: б) выполнившых хотя бы одну работу на 5. Проблема в создании счетчика на внешний оператор for , который подсчитывает кол-во учеников. То есть если бы мне надо было подсчитать колво пятерок то я бы сделал так:
for i := 1 to 10 do for j := 1 to 3 do if a[i,j]=5 then k := k+1
Но как сделать чтобы подсчитывало колво строк содержащих хотя бы одну 5? Заранее спасибо
klem4
14.05.2007 21:57
var flag: Boolean; sr: Integer; // ...
for i := 1 to 10 do begin sr := 0; flag := false; for j := 1 to 3 do begin sr := sr + x[i, j]; if x[i, j] = 5 then flag := true; end; writeln('sr = ', (sr / 3):5:2, ' 5? ', flag); end;
inviceble
14.05.2007 23:34
Извиняюсь за свою не понятливость. но
sr := sr + a[i,j]; if x[i,j] = 5 then flag := true;
первая строка дает значение переменной sr складывая значение sr со значением числа в матрице. вторая строка оператор - если a[i,j] равен 5 то переменная flag - верна. Это либо я чтото не допонимаю и не так делаю либо ты меня не допонял Насколько я понимаю эти операторы только проверяют значение flag, и выводят результат складывания 0 с числом из матрицы. Подскажите пожалуйста как мне сделать счетчик, который будет считать кол-во строк в котором есть хотя бы одна 5. В чем моя проблема я не могу составить алгоритм, для дальнейшего написания, математически не понимаю, хотя одна мысль уже давно крутиться, но осуществить ее не получается - если в строке есть 5, то к переменной добавляется единица, примерно так:
for i := 1 to 4 do begin for j := 1 to 3 do begin if a[i,1]=5 or a[i,2]=5 or a[i,3]=5 then k:= k+1;
но с другой стороны эти три условия можно заменить одним a[i,j]=5, но тогда при любой встрече числа 5 к переменной k будет добавляться единица. Если же использовать исключающее или то тогда при встрече двух 5 в одной строке будет неправильный подсчет
inviceble
15.05.2007 0:14
ааа, извините меня пожалуйста не до понял вас. Тот оператор выводит 10 результатов, если есть 5 в строке то ответ тру если нет пятерки то фолс. Но вопрос: зачем тогда число sr?
Renbo
15.05.2007 0:58
Цитата(inviceble @ 14.05.2007 15:07)
Выведите на экран средний балл ученика. Подсчитайте число учеников: б) выполнившых хотя бы одну работу на 5.
SR- это сумма баллов каждого ученика, а если заглянешь сюда:
и увидишь вот это (sr / 3), то поймёшь, что первый ответ получен...
а посмотрев дальше: ' 5? ', flag увидишь, что выводит значение флажка, тоесть буквами непишет TRUE или FALSE в соотвтетствии с тем, получил ли ученик хотя бы одну петёрнку за 3 своих работы
inviceble
15.05.2007 21:12
в общем справился с этой задачи и благодаря вашей помощи тоже. просто вы меня не допоняли в задании.
for i := 1 to 10 do begin c:=0; for j := 1 to 3 do if a[i,j]=5 then c:=c+1; if c>0 then x:=x+1; end; writeln(x);
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.