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

Тема в разделе "Pascal and Delphi", создана пользователем nick6161, 9 ноя 2010.

Статус темы:
Закрыта.
  1. nick6161

    nick6161 Гость

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

    Dock1100 :-]

    Регистрация:
    9 ноя 2009
    Сообщения:
    678
    Симпатии:
    0
    +1
    максимальное количество нулевых элементов в массиве- э, может рядок или столбик с максимальным количеством елементов?
     
  3. nick6161

    nick6161 Гость

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

    А вот мой нерабочий код
    Код (Delphi):
    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.
     
  4. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    1. циклы везде от 1.
    for n:=1 to 5 do
    for m:=1 to 8 do
    2. Инициализация Max, Min в 1 - не есть хорошо. Нужно брать 1й элемент массива, либо допустимые по типу элементов массива минимальное и максимальное значение.
    3. процедура с параметром...
     
  5. Dock1100

    Dock1100 :-]

    Регистрация:
    9 ноя 2009
    Сообщения:
    678
    Симпатии:
    0
    Вот должно работать:
    Код (Text):
    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.
     
  6. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    Dock1100
    MinValue - п.1 посмотри. я тож невнимательно прочитала, свое подправила
     
  7. Dock1100

    Dock1100 :-]

    Регистрация:
    9 ноя 2009
    Сообщения:
    678
    Симпатии:
    0
    Да, недосмотрел. :)
     
  8. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    кстати, а нам вроде как говорили в свое время, что не очень кошерно называть совсем-совсем одинаково глобальные и локальные (ф-ций, процедур) переменные. =)
    Типа лучше использовать префикс к имени и т.п. (ну, чет подобное было).
     
  9. nick6161

    nick6161 Гость

    Спасибо вам огромное!!! :)
     
  10. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    еще желательно и константы для задания верхних границ массива и индексов.
    похоже, народу про const говорили, по крайней мере в передаче параметров юзать пытались.
     
  11. Dock1100

    Dock1100 :-]

    Регистрация:
    9 ноя 2009
    Сообщения:
    678
    Симпатии:
    0
    Вот, но в задание про это ничего не сказано, вроде:
    Код (Text):
    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.
    А как по мне - без разницы, главное что бы работало, и более-менее наглядно выглядело, хотя мне тоже что-то похожее говорили, но толко для функций.
     
Загрузка...
Похожие Темы - Задача на функции
  1. elzim
    Ответов:
    0
    Просмотров:
    929
  2. ShaoKahn
    Ответов:
    0
    Просмотров:
    1.116
  3. eremin-sanek
    Ответов:
    3
    Просмотров:
    1.102
  4. MonteCristo
    Ответов:
    1
    Просмотров:
    851
  5. bort
    Ответов:
    1
    Просмотров:
    1.177
Статус темы:
Закрыта.

Поделиться этой страницей