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

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

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

 
 Ответить  Открыть новую тему 
> Процедуры Паскаль АВС, Разработать процедуру ввода массивов и вычисления максимальных значени
сообщение
Сообщение #1


Новичок
*

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

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


Пожалуйста ПОМОГИТЕ исправить!

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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






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


Новичок
*

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

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


Цитата(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.


Сообщение отредактировано: Lapp -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






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;
(остальное из первой программы, без изменений)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

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

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


Цитата(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
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






а можешь написать что именно получится? а то я не знаю даже как это все делать... =(
 К началу страницы 
+ Ответить 

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

 





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