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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2015, 17:00   #1
mannn
Пользователь
 
Регистрация: 16.11.2015
Сообщений: 15
По умолчанию Двумерный массив

Дана матрица А размером M на N, M<=10, N<=20. Найти сумму последней строки матрицы. Если она > 0, записать это значение на место последнего элемента первой строки, иначе - на место максимального элемента матрицы. Полученный массив А распечатать.

Вот тут что-то сделал, но сумму последней строки не считает и не переставляет на место последнего элементы первой строки и на место максимально элемента

Код:
program abc;
const Mmass=10; Nmass=20;
var a:array[1..Mmass,1..Nmass] of integer;
i,j,sum,maxi,maxj,N,M:integer;
begin
write('Введите воличество строк:');
readln(M);
write('Введите воличество стобцов:');
readln(N);
writeln('Введите элементы массива А:');
Randomize;
For i:=1 to M do
begin
For j:=1 to N do
begin
write('A[',i,'][',j,']=');
readln(A[i][j]);
a[i,j]:=-90+Random(181);
end;
Writeln;
end;
Writeln;
Writeln;
sum:=0;
maxi:=0;
maxj:=0;
For j:=1 to n do
sum:=sum+a[m,j];
For i:=1 to m do
For j:=1 to n do
begin
maxi:=i;
maxj:=j;
end;
Writeln('sum = ',sum,'; maxi = ',maxi,'; maxj = ',maxj);
Writeln;
If sum>0 then
a[1,n]:=sum else
a[maxi,maxj]:=sum;
For i:=1 to m do
begin
For j:=1 to n do
Write(a[i,j],'  ');
Writeln;
end;
Writeln;
Readln;
end.

Последний раз редактировалось mannn; 29.11.2015 в 17:43.
mannn вне форума Ответить с цитированием
Старый 29.11.2015, 18:18   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Цитата:
Сообщение от mannn Посмотреть сообщение
Если она > 0, записать это значение на место последнего элемента первой строки, иначе - на место максимального элемента матрицы.
Цитата:
Сообщение от mannn Посмотреть сообщение
Вот тут что-то сделал, но сумму последней строки не считает и не переставляет на место последнего элементы первой строки и на место максимально элемента
Значит не сделал ничего
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 29.11.2015, 18:19   #3
mannn
Пользователь
 
Регистрация: 16.11.2015
Сообщений: 15
По умолчанию

я понимаю, лучше бы помогли
mannn вне форума Ответить с цитированием
Старый 29.11.2015, 18:23   #4
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

пробуй
Код:
program abc;
const Mmass=10; Nmass=20;
var a:array[1..Mmass,1..Nmass] of integer;
i,j,sum,max,maxi,maxj,N,M:integer;
begin
write('Введите воличество строк:');
readln(M);
write('Введите воличество стобцов:');
readln(N);
writeln('Введите элементы массива А:');
Randomize;
For i:=1 to M do
begin
	For j:=1 to N do
	begin
		write('A[',i,'][',j,']=');
		readln(A[i][j]);
		a[i,j]:=-90+Random(181); {тут уже или readln или random, надо определиться}
	end;
	Writeln;
end;
Writeln;
Writeln;
sum:=0;
maxi:=1;
maxj:=1;
max := a[1,1]
For j:=1 to n do
	sum:=sum+a[m,j];
For i:=1 to m do
	For j:=1 to n do
	begin
		if a[i,j] > max then
		begin
			maxi:=i;
			maxj:=j;
			max := a[i,j];
		end;
	end;
Writeln('sum = ',sum,'; maxi = ',maxi,'; maxj = ',maxj);
Writeln;
If sum>0 then
	a[1,n]:=sum 
else
	a[maxi,maxj]:=sum;
For i:=1 to m do
begin
	For j:=1 to n do
		Write(a[i,j],'  ');
Writeln;
end;
Readln;
end.
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 29.11.2015, 18:29   #5
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

как вариант
Код:
program abc;
const Mmass=10; Nmass=20;
var a:array[1..Mmass,1..Nmass] of integer;
i,j,sum,max,maxi,maxj,N,M:integer;
begin
write('Введите воличество строк:');
readln(M);
write('Введите воличество стобцов:');
readln(N);
Randomize;
maxi:=1;
maxj:=1;
max := -200;{a[1,1]};
s:=0;
For i:=1 to M do
begin
	For j:=1 to N do
	begin
		a[i,j]:=-90+Random(181);
		if a[i,j] > max then
		begin
			maxi:=i;
			maxj:=j;
			max := a[i,j];
		end;
		if i = m then sum:=sum+a[i,j];
		write(a[i,j]:4);
	end;
	Writeln;
end;
writeln;
Writeln('sum = ',sum,'; max = ',max,'; maxi = ',maxi,'; maxj = ',maxj);
Writeln;
If sum>0 then
	a[1,n]:=sum 
else
	a[maxi,maxj]:=sum;
For i:=1 to m do
begin
	For j:=1 to n do
		Write(a[i,j],'  ');
	Writeln;
end;
Readln;
end.
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 29.11.2015, 18:33   #6
mannn
Пользователь
 
Регистрация: 16.11.2015
Сообщений: 15
По умолчанию

Спасибо, а можно сделать, чтобы я выводил значения а не рандомом?
mannn вне форума Ответить с цитированием
Старый 29.11.2015, 19:12   #7
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Значение вводятся рандомом, а не выводятся. Чтобы вводить вручную, замени фрагмент рандома на ввод. В чем проблема-то?
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программирование в VBA: двумерный массив M на N, нужно создать новый одномерный массив TheAnnihilyator Помощь студентам 1 04.06.2014 09:16
Java: Дан двумерный массив чисел А размером 6х6 и одномерный массив Х из 6-ти чисел. Заменить первые три строки массива A vikysha55 Помощь студентам 1 16.04.2014 10:50
Двумерный массив развернуть в одномерный массив по строкам[QBASIC] TrueStyle777 Помощь студентам 3 29.05.2013 21:56
Одномерный массив и Двумерный массив eugene1437 Общие вопросы C/C++ 15 25.05.2011 19:17
Двумерный массив, одномерный массив. Branbal Помощь студентам 14 18.11.2009 12:40