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
Необходимо выяснить сколько студентов группы имеют средний балл, наименее всего отклоняющийся по абсолютному значению от среднего балла всей группы. Не могу понять как решать с помощью процедуры и функции.Помогите!!!
Делаешь функцию, возвращающую средний балл студента:
function AverageGrade(Student: fam): real; var i: pred; s: real; begin s:= 0; for i:= Low(pred) to High(pred) do s:= s + matr[Student,i]; AverageGrade:= s/(Ord(High(pred))+1) end;
А потом используешь ее.. Для нахождения общего среднего:
s:= 0; for i:= Low(fam) to High(fam) do s:= s + AvegrageGrade(i); // i is ot type fam here TotalAverage:= s/(Ord(High(fam))+1);
И для выяснения наименьшее отклонение от него, тоже в цикле по студентам:
MinDeviation:= High(integer); // MaxDeviation опиши как real for i:= Low(fam) to High(fam) do if Abs(AvegrageGrade(i)-TotalAverage)<MinDeviation then begin MinDeviation:= Abs(AvegrageGrade(i)-TotalAverage); Count:= 1 end else if Abs(Abs(AvegrageGrade(i)-TotalAverage)-MinDiviation)<1e-8 then Inc(Count) //corrected, see post from TarasBer below WriteLn(Count,' студентов имеют минимальное отклонение от среднего балла группы');
Вот, примерно все.. Осталось только собрать все, правильно описать переменные и сделать ввод данных. Спрашивай, что неясно. Успехов тебе.
Сообщение отредактировано: Lapp -
--------------------
я - ветер, я северный холодный ветер я час расставанья, я год возвращенья домой