Program prim2; {Даны 3 двумерных массива A, B, C разной длины. Разработать процедуру ввода массивов и вычисления максимальных значений каждого из массивов. Полученные максимумы передать в программу, в которой найти максимум среди 3-х максимальных значений.
Результаты выдать на экран} type mas=array[1..50] of integer; Var A,B,C : mas; mo,ma,mb,mc : integer; procedure Pm(A:mas; Var m:integer); Var i,n,imax: integer; Begin Write('введите длину массива n '); Readln(n); Writeln('введите элементы массива '); For i:=1 to n do Read(A[i]); imax:=1; for i:=1 to n do if a[i]<a[imax] then imax:=i; end; Begin Pm(A, ma ); Pm(B, mb); Pm(C, mc); writeln('max a=', ma,' max b=', mb,' max c=',mc); mo:=0; if ma>mb then{a - большее} if ma>mc then mo:=ma else mo:=mc else {b - большее} if mb>mc then mo:=mb else mo:=mc; {вывод результатов} writeln('max itog(',ma, ',', mb, ',', mc, ')=',mo) End.
volvo
5.02.2011 20:21
Во-первых: массив должен передаваться как Var-параметр, иначе ты его что вводишь, что не вводишь - он не запоминается. Во-вторых: у тебя должен находиться максимум, ты зачем-то заходишь минимум. Знак поменять надо. И в третьих: нашла imax, теперь M := A[imax] надо делать в самом конце процедуры. Иначе значение не передается назад...
swe-4a
5.02.2011 22:25
Цитата(volvo @ 5.02.2011 16:21)
Во-первых: массив должен передаваться как Var-параметр, иначе ты его что вводишь, что не вводишь - он не запоминается. Во-вторых: у тебя должен находиться максимум, ты зачем-то заходишь минимум. Знак поменять надо. И в третьих: нашла imax, теперь M := A[imax] надо делать в самом конце процедуры. Иначе значение не передается назад...
Спасибо большое за советы, со знаком действительно напортачила. Насчет Var-теоретически понимаю, а на практике как сделать не знаю(((. насчет M := A[imax] вообще не поняла. Свою программу пыталась сделать на основании примера в учебном материале..она работает
Program zad; //Даны 5 двумерных массивов A, B, C, D, E разной длины. //Разработать процедуру ввода массивов и вычисления средних //значений среди отрицательных чисел этих массивов. //Полученные средние значения передать в программу, в //которой найти общую сумму всех полученных средних значений. //Результаты выдать на экран Type mas=array [1..100] of real; Var A,B,C,D,E: mas; SRa, SRb, SRc, SRd, SRe, SRo: real; //средние значения массивов
procedure SRED(A:mas; Var SR:real); Var i,n,k: integer; Begin Write('введите длину массива n= '); Readln(n); Writeln('введите элементы массива '); SR:=0;k:=0; For i:=1 to n do begin Read(A[i]); if A[i]<0 then begin Sr:=SR+A[i]; k:=k+1; //считаем отрицательные end; end; if k=0 then SR:=0 //если нет отрицательных else SR:=SR/k; end; Begin SRED(A, SRa); SRED(B, SRb); SRED(C, SRc); SRED(D, SRd); SRED(E, SRE); writeln('SrA=',Sra:8:2,' SRB=',SRb:8:2,' SRC=',Src:8:2,' SRD=',SRd:8:2,' SRE=',SRe:8:2); SRo:=0; SRo:=Sra+SRb+Src+SRd+SRe; writeln ( 'итог программы =' , SRo:8:2) end.
volvo
5.02.2011 22:35
procedure Pm(VAR A:mas; Var m:integer); // <--- Раз Var i,n,imax: integer; Begin Write('введите длину массива n '); Readln(n); Writeln('введите элементы массива '); For i:=1 to n do Read(A[i]);
imax:=1; for i:=1 to n do if a[i] {<}> a[imax] then imax:=i; // <--- Два M := A[imax] // <--- Три end;
(остальное из первой программы, без изменений)
swe-4a
5.02.2011 22:39
Цитата(volvo @ 5.02.2011 18:35)
procedure Pm(VAR A:mas; Var m:integer); // <--- Раз Var i,n,imax: integer; Begin Write('введите длину массива n '); Readln(n); Writeln('введите элементы массива '); For i:=1 to n do Read(A[i]);
imax:=1; for i:=1 to n do if a[i] {<}> a[imax] then imax:=i; // <--- Два M := A[imax] // <--- Три end;
(остальное из первой программы, без изменений)
СПАСИБО ОГРОМНОЕ! ОНА РАБОТАЕТ!!!!!!!!!))
СнежинКа
11.07.2011 6:40
а можешь написать что именно получится? а то я не знаю даже как это все делать... =(
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.