Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Алгоритм. 1. Создание двумерного массива с помощью функции случайных чисел с одновременным



Читайте также:
  1. Алгоритм
  2. Алгоритм
  3. Алгоритм 11.1. Контроль столкновений с помощью описанных прямоугольников.
  4. Алгоритм 13.1. Алгоритм Преследования.
  5. Алгоритм 13.2. Алгоритм Уклонения.
  6. Алгоритм 13.3. Шаблоны со случайным выбором.

 

1. Создание двумерного массива с помощью функции случайных чисел с одновременным выводом на экран.

2. Задать первоначальное значение для наибольшего элемента, в качестве такого значения можно взять значение любого элемента массива. Чаще всего в качестве наибольшего элемента принимают элемент первой строки первого столбца, т.е. a[1, 1].

3. Далее организуются два цикла, с помощью которых перебираются последовательно элементы массива и сравниваются с первоначально принятым за наибольший.

Если элемент массива больше максимального, тогда надо присвоить максимальному значение этого элемента, а переменным- счетчикам присваиваются значения номеров строки и столбца этого нового максимального элемента.

Циклы заканчиваются.

4. На экран выводится максимальный элемент, номер строки и номер столбца, в которых он находится.

 

Составим процедуру определения наибольшего элемента двумерного массива.

 

Procedure maximum_two(n, m:integer; var max, k, p: integer);

Var

i, j: integer;

Begin

max:= a[1, 1];

for i:= 1 to n do

for j:= 1 to m do

if a[i, j] > max then

Begin

max:= a[i, j];

k:= i;

p:= j

End

End;


Программа

Program Problem2;

Const

n = 5; m = 6;

Type

t = array [1..m,1..n] of integer;

Var

a: t;

k, p, max: integer;

{----------------------------------------------------------------------------------------}

Procedure create_two(n, m: integer; var a: t);

Var

i, j: integer;

Begin

writeln('Заданный двумерный массив целых чисел');

randomize;

for i:= 1 to n do

Begin

for j:= 1 to m do

Begin

a[i, j]:= random(201) - 100;

write(a[i, j]:6, ' ')

end;

writeln

End

end;

{----------------------------------------------------------------------------------------}

Procedure maximum_two(n, m:integer; var max, k, p: integer);

Var

i, j: integer;

Begin

max:= a[1, 1];

for i:= 1 to n do

for j:= 1 to m do

if a[i, j] > max then

Begin

max:= a[i, j];

k:= i;

p:= j

End

end;

{----------------------------------------------------------------------------------------}

Begin

create_two(n, m, a);

maximum_two(n, m, max, k, p);

writeln('Наибольший элемент массива ', max);

writeln('Находится в ', k, '-й строке ', p, '-ом столбце')

end.

 


Пример 3. В двумерном массиве найдите наибольшие элементы каждой строки.

 

Вот здесь уже необходим одномерный массив по количеству строк массива. Каждый его элемент, в конечном итоге, даст нам значение максимального элемента каждой строки.

В цикле, который организован по числу строк, в наших программах это цикл по i, надо элементам одномерного массива присваивать первоначальные значения первых элементов строк, а затем брать элементы строки, начиная со второго и сравнивать с выбранным в качестве наибольшего.

Если элемент строки больше выбранного наибольшего, тогда присваивать максимальному элементу значение этого элемента, оказавшегося больше максимального.

После завершения работы циклов, одномерный массив, в котором накопились наибольшие элементы строк вывести на экран.

Вот в этой программе удобно описать массив так (подумайте почему?):

 

Const

n = 4; m = 5;

Type

s = array [1..m] of integer;

t = array [1..n] of s;

Var

a: t;

b: s;

 

Составим процедуру определения наибольшего элемента в каждой строке:

 

Procedure maxim_line(n, m: integer; a:t; var b: s);

Var

i, j: integer;

Begin

for i:= 1 to n do

Begin

b[i]:= a[i, 1];

for j:= 1 to m do

if a[i, j] > b[i] then b[i]:= a[i, j];

End;

writeln('Наибольшие элементы каждой строки массива');

for i:= 1 to n do write(b[i]:6, ' ');

writeln

End;

 


Дата добавления: 2015-07-11; просмотров: 241 | Нарушение авторских прав






mybiblioteka.su - 2015-2024 год. (0.009 сек.)