Помощь - Поиск - Пользователи - Календарь
Полная версия: Процедуры Паскаль АВС
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
swe-4a
Пожалуйста ПОМОГИТЕ исправить!

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
Во-первых: массив должен передаваться как Var-параметр, иначе ты его что вводишь, что не вводишь - он не запоминается. Во-вторых: у тебя должен находиться максимум, ты зачем-то заходишь минимум. Знак поменять надо. И в третьих: нашла imax, теперь M := A[imax] надо делать в самом конце процедуры. Иначе значение не передается назад...
swe-4a
Цитата(volvo @ 5.02.2011 16:21) *

Во-первых: массив должен передаваться как Var-параметр, иначе ты его что вводишь, что не вводишь - он не запоминается. Во-вторых: у тебя должен находиться максимум, ты зачем-то заходишь минимум. Знак поменять надо. И в третьих: нашла imax, теперь M := A[imax] надо делать в самом конце процедуры. Иначе значение не передается назад...

blink.gif Спасибо большое за советы, со знаком действительно напортачила. Насчет 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
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
Цитата(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;
(остальное из первой программы, без изменений)


good.gif СПАСИБО ОГРОМНОЕ! ОНА РАБОТАЕТ!!!!!!!!!)) give_rose.gif
СнежинКа
а можешь написать что именно получится? а то я не знаю даже как это все делать... =(
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.