Помощь - Поиск - Пользователи - Календарь
Полная версия: двумерные массивы
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
pre-dawn-haze
Составить схему алгоритма и программу определения суммы всех четных чисел массива К={kj}, j=1,m, m - число элементов в массиве К (m≤60). Вывести на экран найденное значение суммы, а также все четные числа и их адреса.


не пойму как задать массив
как ограничить
m - число всех элементов?
Lapp
Цитата(pre-dawn-haze @ 15.11.2011 21:36) *
не пойму как задать массив
как ограничить
m - число всех элементов?

Это неравенство, m<=60, просто говорит о том, какой величины массив тебе нужно заводить. Гарантируется, что входные данные (если массив будет вводиться с клавы или из файла) никогда не превысят 60 чисел.

const
m= 60;

var
a: array[1..60] of integer;
i,s: integer;

begin
write('enter total number of elements: ');
readln(n);
for i:=1 to n do a[i]:= Random(100);
s:= 0;
for i:=1 to n do
if not Odd(a[i]) then begin
s:= s+a[i];
writeln('a = ',a[i],' at i = ',i);
end;
end;
writeln('sum of even elements is ',s);
readln
end.

Тут я использовал заполнение массива случайными числами.
pre-dawn-haze
ага, вот оно что=) тогда просто
спасибо
-
а можно еще вопрос?
В прямоугольной матрице размером К*М, имеющей имя МАTR содержаться целые числа. К- число строк, М- число столбцов. Ввести элементы матрицы с клавиатуры. Определить и вывести на экран сумму положительных элементов в каждой строке. Определить строку с максимальным значением этой суммы и вывести ее номер на экран.

я вывожу максимальную сумму, но не могу вывести строку, в которой она находится, как это сделать?

-
program z_122;
var
a:array[1..100, 1..100] of integer;
i, j, st: integer;
m, s, n: integer;
begin
writeln ('Введите количество столбцов' );
readln (m);
writeln ('Введите количество строк');
readln (n);
begin
for i:=1 to n do
for j:=1 to m do
begin
write ('a [ ', i, '' , j, ' ] = ');
read (a[i, j]);
end;
end;
writeln ('Исходная матрица');
for i:=1 to n do
begin
for j:=1 to m do
write (a[i,j]:4);
writeln;
end;

for i:=1 to n do
begin
s:=0;
for j:=1 to m do
if a[i,j]>0 then
s:=s+a[i,j];
Writeln('Сумма элементов в ', i,' строке равна ', S);
end;
st:=s;
for i:=2 to n do
if s>st then
st:=s;
writeln('Максимальная сумма равна : ', st );
end.
Lapp
Цитата(pre-dawn-haze @ 17.11.2011 19:03) *
я вывожу максимальную сумму, но не могу вывести строку, в которой она находится, как это сделать?

Предрассветная-дымка, боюсь, ты не выводишь максимальную сумму.. Погоняй свой код и вникни. Ты выводишь все время только сумму последней строки. Чтобы действительно находить и выводить макс. сумму и номер строки, нужно ее искать в том самом цикле, в котором ты ты считаешь суммы (и в тот же момент запоминать номер строки).

Есть еще один тонкий момент: положительных элементов в строке может и не быть совсем. Мне кажется, что этот момент надо оговаривать особо. Но ты можешь считать, если хочешь, что их сумма просто равна нулю. Ниже я привожу тебе код, в котором все, как я считаю нужным )). Разберись с ним и сделай, как ТЫ хочешь.
program z_122;
var
a:array[1..100, 1..100] of integer;
n,m, i,j, s,sMax,iMax: integer;

begin
write('Введите количество столбцов: ' );
readln(m);
write('Введите количество строк: ');
readln(n);
for i:=1 to n do
for j:=1 to m do begin
write ('a [ ', i, '' , j, ' ] = ');
read (a[i, j]);
end;
writeln ('Исходная матрица');
for i:=1 to n do begin
for j:=1 to m do write (a[i,j]:4);
writeln;
end;
sMax:= -1;
for i:=1 to n do begin
s:=0;
for j:=1 to m do
if a[i,j]>0 then s:= s+a[i,j];
if s=0 then
writeln('в ',i,'-й строке положительных элементов нет')
else
Writeln('сумма положительных элементов ', i,'-й строки равна ', s);
if s>sMax then begin
sMax:= s;
iMax:= i
end
end;
if sMax=0 then
writeln('В матрице нет положительных элементов')
else
writeln('Макс. суммы пол. эл. достигается в строке ',iMax,' и равен ', sMax );
end.

Успехов тебе. Вопросы задавай, не стесняйся.

PS
только для других задач все же создавай новые темы
Vovan
Помогите решить задачу, главный вопрос меня интересует, это как удалить столбец в котором все нули? smile.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.