IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Необходимо выяснить сколько студентов группы имеют средний балл, наименее всего отклоняющийся по абсолютному значению от среднего балла всей группы.
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 34
Пол: Женский

Репутация: -  0  +


известно,что в следующем фрагменте программы массив матрица содержит оценки студентов группы,фамилии которых перечислен в типе фамилия.
> type
> фамилия=(Иванов,Просветкин,Ленин,Михайлов,М
аслова,Юрьева,Беляев,Малащенко,Нагайц ев,Семыкин).
> предмет=(матанализ,алгебра,информатика,ист
рия,матлогика,механика,педагогика,диф уруравнения,статистика).
> var
> матрица: array[ фамилия,предметы ] of integer.
Необходимо выяснить сколько студентов группы имеют средний балл, наименее всего отклоняющийся по абсолютному значению от среднего балла всей группы. помогите решить через процедуры и функции.вот,что у меня есть,проверьте.исправьте.а то она работает некорректно.помогите решить через процедуры и функции.вот,что у меня есть,проверьте.исправьте.а то она работает некорректно.

type
fam=(Ivanov, Prosvetkin, Lenin, Mikhaylov, Maslov, Yuryev, Belyaev, Malashenko, Nagaytsev, Semykin);
pred=(matan, algebra, informatics, history, matlogica, mechanics, pedagogics, difururavneniye, statistics);
matr=array[fam ,pred] of integer;
var
a:matr;

Procedure vvodM(var a:matr);
var j: pred;
i:fam;
begin
randomize;
for i:= Ivanov to Semykin do
begin
For j:=matan to statistics do
begin
a[i,j]:=random(4)+2;
write( a[i,j]:3);
end;
writeln
end;
end;

function sred(Student: fam): real;
var
j: pred;
i:fam;
s: real;
begin
s:= 0;
for i:= Ivanov to Semykin do
begin
For j:=matan to statistics do

begin
s:= s + a[Student,j];
sred:= s/9
end;
write(sred(i))
end;
readln
end;

function TotalAverege(var a:matr):real;
var
j: pred;
i:fam;
s: real;
begin
s:= 0;
for i:=Ivanov to Semykin do

begin
For j:=matan to statistics do

begin
s:= s +sred(i);
TotalAverege:= s/9;

end;
write(TotalAverege(a)) ;
end;
readln
end;

Procedure MinDev (a:matr);
var
j: pred;
i:fam;
k:integer;
begin
k:=0;
for i:=Ivanov to Semykin do
begin
For j:=matan to statistics do
begin
if TotalAverege(a)<>abs(TotalAverege(a)-sred(i))then
k:=k+1;
If k>0 then
WriteLn(k,' студентов имеют минимальное отклонение от cреднего балла группы')
else
WriteLn(k,'Таких студентов нет');

end;
end;
end;
begin
setconsolecp(1251);
setconsoleoutputcp(1251);
vvodM(a);
MinDev(a);
readln
end.
Нужно еще сделать так.чтобы выводились все промежуточные действия.т е средний балл каждого ученика,общий средний балл.а только потом уже выводился ответ.помогите!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

Репутация: -  20  +


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

type
fam=(Ivanov, Prosvetkin, Lenin, Mikhaylov, Maslov, Yuryev, Belyaev, Malashenko, Nagaytsev, Semykin);
pred=(matan, algebra, informatics, history, matlogica, mechanics, pedagogics, difururavneniye, statistics);
matr=array[fam ,pred] of integer;
var
a:matr;

Procedure vvodM(var a:matr);
var j: pred;
i:fam;
begin
randomize;
for i:= Ivanov to Semykin do
begin
For j:=matan to statistics do
begin
a[i,j]:=random(4)+2;
write( a[i,j]:3);
end;
writeln
end;
end;

function sred(Student: fam): real;
var
j: pred;
i:fam;
s: real;
res:real;
begin
s:= 0;
For j:=matan to statistics do

begin
s:= s + a[Student,j];
end;
sred:= s/9;
end;

function TotalAverege:real;
var
j: pred;
i:fam;
s: real;
res:real;
begin
s:=0;
for i:=Ivanov to Semykin do
begin
s:= s +sred(i);
end;
TotalAverege:=s/9;
res:=s/9;
writeln('TotalAverege',res:2:2) ;
readln;
end;

Procedure MinDev (a:matr);
var
j: pred;
i:fam;
Count:integer;
temp:real;
Average:real;
MinDev:real;
CurDev:real;
begin
Count:=0;
MinDev:= High(integer);
Average:=TotalAverege;
for i:=Ivanov to Semykin do
begin
temp:=sred(i);
writeln('Sred',temp:2:2);
CurDev := Abs(temp-Average);
if Abs(CurDev - MinDev) < 1e-8 then
begin
Inc(Count);
end
else
if CurDev < MinDev then
begin
MinDev := CurDev;
Count :=1;
end;
end;

If Count>0 then
WriteLn(Count,' студентов имеют минимальное отклонение от cреднего балла группы')
else
WriteLn(Count,'Таких студентов нет');
end;

begin
vvodM(a);
MinDev(a);
readln;
end.


Надеюсь больше портить программы переименовыванием, и игнорировать конструктивные предложения,заменяя их сомнительными решениями, вы не будете,уважайте труд других.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 2.05.2024 17:20
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name