1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
помогите решить задачу!, Нужно решить задачу с помощью процедуры и функции.
В общем надо решить следующую задачу: Известно, что в следующем фрагменте программы массив матрица содержит оценки студентов группы, фамилии которых перечислены в типе фамилий
type fam=(Ivanov,Petrov,Sidorov); pred=(Algebra,Russkii,Informatika); var matr:array[fam,pred] of integer
Необходимо выяснить сколько студентов группы имеют средний балл, наименее всего отклоняющийся по абсолютному значению от среднего балла всей группы. Не могу понять как решать с помощью процедуры и функции.Помогите!!!
Госпади,что вы наворотили,ладно щас разберемся. Ну для начала, переименовывать то ,что было- было плохой идеей.Затем вы ооочень невнимательно пишите, ваш sred периодически становится sped, у вашей функции Total,есть передаваемый параметр,но когда вы ее вызываете вы его не передаете,затем, ваша функция Total должна вычислить общее среднее значение,так зачем же в цикле его каждый раз вычислять??Вычислили, запомнили и используем. В общем исправив все недочеты вышло следующее.
type fam=(Ivanov,Petrov,Sidorov); pred=(Algebra,Russkii,Informatika); matr=array[fam ,pred] of real; var a:matr; res:real;
function sred(Student: fam): real; var i: pred; s: real; begin s:= 0; for i:= Low(pred) to High(pred) do s:= s + a[Student,i]; sred:= s/(Ord(High(pred))+1) end;
function TotalAverege:real; var i: fam; s: real; begin s:= 0; for i:= Low(fam) to High(fam) do s:= s +sred(i) ; { i is ot type fam here } TotalAverege:= s/(Ord(High(fam))+1) end;
Procedure MinDev (a:matr); var i: fam; s: real; MinDev:real; Averege:real; Count:integer; begin MinDev:= High(integer); { MinDeviation ????? ??? real } Averege:=TotalAverege; for i:= Low(fam) to High(fam) do if Abs(sred(i)-Averege)<MinDev then begin MinDev:= Abs(sred(i)-Averege); Count:= 1; end else if Abs(sred(i)-Averege)<1e-8 then Inc(Count); WriteLn(Count,' студентов имеют минимальное отклонение от греднего балла группы'); readln; end;
begin a[Ivanov,Russkii]:=4; a[Petrov,Russkii]:=4; a[Sidorov,Russkii]:=4; MinDev(a); end.