Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2014, 16:44   #1
Алексей1994
Пользователь
 
Регистрация: 25.03.2014
Сообщений: 21
По умолчанию Двумерные массивы!

Здравствуйте уважаемые программисты. Не сочтите за наглость, обратится вам за помощью. Вот такое задание. Не могу написать текст программы. Вот задача: Дан двумерный массив. Найти номера всех максимальных элементов. Спасибо за внимание!
Код:
const M_max=100;
type TMyArray=Array [1..M_max] of Integer;
var A:TMyArray;
n, m, t: Integer;
procedure Zapolnenie(var a:TMyArray);
var i, j:byte;
result: integer;
begin
For i:=1 to n do
For j:=1 to m do
a[i, j]:=random(20)-10;
end;
Procedure Poisk( var a:TMyArray);
var i,j: byte;
max1:integer;
begin
Writeln ('введите количество строк и столбцов матрицы');
Readln (n,m);
for i:=1 to n do begin
max1:=a[i, 1];
for j:=2 to m do
if a[i, j]>max1 then begin max1:=a[i, j];
end;
writeln('максимальный элемент в ' , i, '- й строке'  max1);
end;
Procedure Vivod ( var a:TMyArray);
begin
for i:=1 to n do
begin
for j:=1 to m do  write(a[i,j], '  ');
writeln;
end;
end;
begin
Zapolnenie(a);
Poisk(a);
Vivod(a);
end.

Последний раз редактировалось Stilet; 22.05.2014 в 17:19.
Алексей1994 вне форума Ответить с цитированием
Старый 22.05.2014, 16:46   #2
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

Исправьте, пожалуйста, ваше сообщение, заключив программу в тэги сode. Читать невозможно.
ZX Spectrum-128 вне форума Ответить с цитированием
Старый 22.05.2014, 16:49   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
const M_max=100;
type TMyArray=Array [1..M_max] of Integer;
var A:TMyArray;
n, m,maxx, t: Integer;

procedure Zapolnenie(var a:TMyArray);
var i, j:byte;
result: integer;
begin
For i:=1 to n do
For j:=1 to m do begin
a[i, j]:=random(20)-10;
if ((i=1)and(j=1)) or (a[i,j]>maxx) then maxx:=a[i,j];
end;
end;

Procedure Poisk( var a:TMyArray);
var i,j: byte;
begin
for i:=1 to n do begin
 for j:=1 to m do
  if a[i, j]=maxx then  write(j:5) else write('     ');
 writeln;
end;
end;

Procedure Vivod ( var a:TMyArray);
begin
for i:=1 to n do
begin
for j:=1 to m do  write(a[i,j], '  ');
writeln;
end;
end;

begin
Zapolnenie(a);
Vivod(a);
Poisk(a);
readln;
end.
Годится?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.05.2014, 16:52   #4
Алексей1994
Пользователь
 
Регистрация: 25.03.2014
Сообщений: 21
По умолчанию Изменил

Исправил! Так можно прочитать думаю, хоть и корява написано.
Алексей1994 вне форума Ответить с цитированием
Старый 22.05.2014, 16:54   #5
Алексей1994
Пользователь
 
Регистрация: 25.03.2014
Сообщений: 21
По умолчанию Не пойму.

А что означает массив имеет другое количество размерности? Выдаёт когда запускаю. Конечно пойдёт. Спасибо огромное за помощь!
Алексей1994 вне форума Ответить с цитированием
Старый 22.05.2014, 17:02   #6
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

Массив то одномерным описан, а работаете (пытаетесь) как с двумерным.
Код:
type TMyArray=Array [1..M_max,1..M_max] of Integer;
Надо исправить.

Последний раз редактировалось ZX Spectrum-128; 22.05.2014 в 17:05.
ZX Spectrum-128 вне форума Ответить с цитированием
Старый 22.05.2014, 21:48   #7
Алексей1994
Пользователь
 
Регистрация: 25.03.2014
Сообщений: 21
По умолчанию Правильно?

Вот так?
const M_max=100;
type TMyArray=Array [1..M_max,1..M_max] of Integer;
var A:TMyArray;
n, m,maxx,i,j,t: Integer;
procedure Zapolnenie(var a:TMyArray);
var i, j:byte;
result: integer;
begin
For i:=1 to n do
For j:=1 to m do begin
a[i, j]:=random(20)-10;
if ((i=1)and(j=1)) or (a[i,j]>maxx) then maxx:=a[i,j];
end;
end;
Procedure Poisk( var a:TMyArray);
var i,j: byte;
begin
for i:=1 to n do begin
for j:=1 to m do
if a[i, j]=maxx then write(j:5) else write(' ');
writeln;
end;
end;

Procedure Vivod ( var a:TMyArray);
begin
for i:=1 to n do
begin
for j:=1 to m do write(a[i,j], ' ');
writeln;
end;
end;

begin
Zapolnenie(a);
Vivod(a);
Poisk(a);
readln;
end.
Только не совсем пойму как работает. Какое число вводит, такое и выводит. Но внизу пишет номер строки и столбца.
Алексей1994 вне форума Ответить с цитированием
Старый 22.05.2014, 22:04   #8
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

Код:

if a[i, j]=maxx then write('Строка N ',i,' столбец N ',j)
 else 
write(' ');
А так?
Ааааа, дошло
N и m ничему не равны, присвойте им значения до процедуры заполнения.

Последний раз редактировалось ZX Spectrum-128; 22.05.2014 в 22:07.
ZX Spectrum-128 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двумерные массивы Dumbl-D Помощь студентам 3 07.12.2013 20:21
Двумерные массивы Oksik_ Паскаль, Turbo Pascal, PascalABC.NET 1 05.11.2012 17:06
Одномерные массивы, двумерные массивы, строки Sand093 C++ Builder 11 20.05.2012 21:48
Двумерные массивы(матрица) 2)Строковые массивы(строки): 3)Структуры nuriyat Помощь студентам 1 21.01.2012 16:16
Двумерные массивы(массивы указателей на массивы) krytishka99 Помощь студентам 1 29.12.2011 19:51