Помощь - Поиск - Пользователи - Календарь
Полная версия: двумерные массивы
Форум «Всё о Паскале» > 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
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.