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

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

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

> Процедуры Паскаль АВС, Разработать процедуру ввода массивов и вычисления максимальных значени
swe-4a
сообщение 5.02.2011 15:31
Сообщение #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 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 5.02.2011 16:21
Сообщение #2


Гость






Во-первых: массив должен передаваться как Var-параметр, иначе ты его что вводишь, что не вводишь - он не запоминается. Во-вторых: у тебя должен находиться максимум, ты зачем-то заходишь минимум. Знак поменять надо. И в третьих: нашла imax, теперь M := A[imax] надо делать в самом конце процедуры. Иначе значение не передается назад...
 К началу страницы 
+ Ответить 
swe-4a
сообщение 5.02.2011 18:25
Сообщение #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 - 11.07.2011 3:19
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 



- Текстовая версия 21.07.2025 10:32
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"