Задача на функции и процедуры в Turbo Pascal

  • Автор темы nick6161
  • Дата начала
Статус
Закрыто для дальнейших ответов.
N

nick6161

#1
Составить программу из 3х частей. В основной вывести элементы двумерного массива [1..5,1..8]. В процедуре найти максимальные и минимальные элементы массива. В функции найти максимальное количество нулевых элементов в массиве. Результаты вывести в основную программу.
Помогите пожалуйста.
 
09.11.2009
665
1
#2
цитата из рекомендаций по созданию тем:
...
+1
В функции найти максимальное количество нулевых элементов в массиве
максимальное количество нулевых элементов в массиве- э, может рядок или столбик с максимальным количеством елементов?
 
N

nick6161

#3
Составить программу из 3х частей. В основной вывести элементы двумерного массива [1..5,1..8]. В процедуре найти максимальные и минимальные элементы массива. В функции найти максимальное количество нулевых элементов в массиве. Результаты вывести в основную программу.
Помогите пожалуйста.
Прошу прощения за свою невнимательность.
Правильная формулировка задачи
Составить программу из 3х частей. В основной вывести элементы двумерного массива [1..5,1..8]. В процедуре найти максимальные и минимальные элементы массива. В функции найти количество нулевых элементов в массиве. Результаты вывести в основную программу.

А вот мой нерабочий код
Код:
program dz3;
Type Tmas=array [1..5,1..8] of integer;
Var n,m:integer;
Mas:tmas;
procedure MaxValue(const a: Tmas);
var
Max, n,m: integer;
begin
Max:=1;
for n:=2 to 5 do
for m:=2 to 8 do
if a[n,m] > Max then Max:=a[n,m];
end;
procedure MinValue(const a: Tmas);
var
Min, n,m: integer;
begin
Min:=1;
for n:=2 to 5 do
for m:=2 to 8 do
if a[n,m] < Min then Min:=a[n,m];
end;
Function o_elm (a:tmas) :integer;
Var n,m:integer;
o_elm:=0;
begin
for n:=1 to 5 do
for m:=1 to 8 do
If a[n,m]=0 then o_elm:=o_elm+1;
End;
begin
for n:=1 to 5 do
For m:=1 to 8 do
readln(mas[n,m]);
Writeln('ìàêñèìàëüíûé ýëåìåíò ìàññèâà=',max);
Writeln('ìèíèìàëüíûé ýëåìåíò ìàññèâà=',min);
Writeln('êîëè÷åñòâî íóëåâûõ ýëåìåíòîâ=',o_elm);
End.
 

hosm

* so what *
18.05.2009
2 442
6
#4
1. циклы везде от 1.
for n:=1 to 5 do
for m:=1 to 8 do
2. Инициализация Max, Min в 1 - не есть хорошо. Нужно брать 1й элемент массива, либо допустимые по типу элементов массива минимальное и максимальное значение.
3. процедура с параметром...
 
09.11.2009
665
1
#5
Вот должно работать:
Код:
program dz3;
Type Tmas=array [1..5,1..8] of integer;
Var n,m,min,max:integer;
Mas:tmas;

procedure MaxValue(const a: Tmas; var max:integer);
var
n,m: integer;
begin
Max:=a[1,1];
for n:=1 to 5 do
for m:=1 to 8 do
if a[n,m] > Max then Max:=a[n,m];
end;

procedure MinValue(const a: Tmas; var min:integer);
var
n,m: integer;
begin
Min:=a[1,1];
for n:=1 to 5 do
for m:=1 to 8 do
if a[n,m] < Min then Min:=a[n,m];
end;


Function o_elm (a:tmas) :integer;
Var n,m,k:integer;

begin
k:=0;
for n:=1 to 5 do
for m:=1 to 8 do
If a[n,m]=0 then k:=k+1;
o_elm:=k;
End;

begin
writeln('enter mass');
for n:=1 to 5 do
For m:=1 to 8 do
readln(mas[n,m]);

maxValue(mas,max);
minValue(mas,min);
Writeln('max = ',max);
Writeln('min = ',min);
Writeln('kolvo 0 =',o_elm(mas));
readln;
End.
 

hosm

* so what *
18.05.2009
2 442
6
#6
Dock1100
MinValue - п.1 посмотри. я тож невнимательно прочитала, свое подправила
 

hosm

* so what *
18.05.2009
2 442
6
#8
кстати, а нам вроде как говорили в свое время, что не очень кошерно называть совсем-совсем одинаково глобальные и локальные (ф-ций, процедур) переменные. =)
Типа лучше использовать префикс к имени и т.п. (ну, чет подобное было).
 

hosm

* so what *
18.05.2009
2 442
6
#10
еще желательно и константы для задания верхних границ массива и индексов.
похоже, народу про const говорили, по крайней мере в передаче параметров юзать пытались.
 
09.11.2009
665
1
#11
Вот, но в задание про это ничего не сказано, вроде:
Код:
program dz3;
Const x=5;
y=8;
Type Tmas=array [1..x,1..y] of integer;
Var n,m,min,max:integer;
Mas:tmas;

procedure MaxValue(const a: Tmas; var max:integer);
var
n,m,max_: integer;
begin
Max_:=a[1,1];
for n:=1 to x do
for m:=1 to y do
if a[n,m] > Max_ then Max_:=a[n,m];
max:=max_;
end;

procedure MinValue(const a: Tmas; var min:integer);
var
n,m, min_: integer;
begin
min_:=a[1,1];
for n:=1 to x do
for m:=1 to y do
if a[n,m] < Min_ then Min_:=a[n,m];
min:=min_;
end;


Function o_elm (a:tmas) :integer;
Var n,m,k:integer;

begin
k:=0;
for n:=1 to x do
for m:=1 to y do
If a[n,m]=0 then k:=k+1;
o_elm:=k;
End;

begin
writeln('enter mass');
for n:=1 to x do
For m:=1 to y do
readln(mas[n,m]);

maxValue(mas,max);
minValue(mas,min);
Writeln('max = ',max);
Writeln('min = ',min);
Writeln('kolvo 0 = ',o_elm(mas));
readln;
End.
кстати, а нам вроде как говорили в свое время, что не очень кошерно называть совсем-совсем одинаково глобальные и локальные (ф-ций, процедур) переменные. =)
Типа лучше использовать префикс к имени и т.п. (ну, чет подобное было).
А как по мне - без разницы, главное что бы работало, и более-менее наглядно выглядело, хотя мне тоже что-то похожее говорили, но толко для функций.
 
Статус
Закрыто для дальнейших ответов.