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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.12.2011, 11:12   #1
Alexbmgn
Пользователь
 
Регистрация: 08.01.2011
Сообщений: 33
По умолчанию Вывод двумерного массива (положит. и в не главной диагонали)

{дан двумерный массив. Найти сумму и кол-во элементов
в каждой строке, положительных и лежащих вне главной диагонали}
uses crt;
const n=10;
type temp=array[1..n,1..n] of integer;
var mas,a:temp;
n_m,sum,kol,i,j:integer;


procedure vvod(var a:temp);
var i:integer;
begin
for i:=1 to n do
for j:=1 to n do
a[i,j]:=random(96)-15;
end;

procedure vivod(var a:temp);
var i:integer;
begin
for i:=1 to n do write(a[i,j]:4);
end;

procedure suma(var a:temp);
var i:integer;
begin
writeln;
for i:=1 to n do if a[i,j]>0 then sum:=sum+a[i,j];
write('=', sum)
end;

procedure kol_el(var a:temp);
var i:integer;
begin
writeln;
for i:=1 to n do if a[i,j]>0 then kol:=kol+1;
write('Kol=', kol)
end;

begin
vvod(mas);
vivod(mas);
suma(mas);
kol_el(mas);

end.
Кто может, пожалуйста укажите на ошибки. Помоему у меня здесь что-то не то с выводом двумерного массива, который вывестись должен полагаю в виде матрицы.... И еще насчет главной диагонали всё ли верно...
Alexbmgn вне форума Ответить с цитированием
Старый 29.12.2011, 11:17   #2
Zer0
Форумчанин
 
Аватар для Zer0
 
Регистрация: 13.12.2007
Сообщений: 788
По умолчанию

Во-первых - вывод
Код:
procedure vivod(var a:temp);
var i,j:integer;
begin
//for i:=1 to n do write(a[i,j]:4);
for i:=1 to n do begin
 for j:=1 to n do write (a[i,j]:4);
writeln;
end;
end;
Красный код можно убрать, это Ваша ошибка - цикл идет только по одной строке

Во-вторых, в остальных процедурах тоже цикл идет ПО ОДНОЙ строке, нужно два вложенных делать (как я написал выше например)

И в третьих - условие
Код:
if a[i,j]>0
Не верное, надо
Код:
if (a[i,j]>0) and (i<>j)
благодарность - сюда (не забываем писать от кого)
Zer0 вне форума Ответить с цитированием
Старый 29.12.2011, 16:11   #3
Alexbmgn
Пользователь
 
Регистрация: 08.01.2011
Сообщений: 33
По умолчанию

Ах ну да конечно же "if (a[i,j]>0) and (i<>j)" как я такое мог пропустить балда И с выводом массива теперь ясно. Дай вам Бог здоровья !!!
Alexbmgn вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод двумерного массива Kocapb Общие вопросы C/C++ 4 11.10.2012 11:05
Вывод двумерного массива denolend Помощь студентам 2 12.12.2011 13:41
Вывод двумерного массива(asm) Xanex Помощь студентам 0 29.05.2010 23:19
Вычислить сумму элементов главной и побочной диагонали двумерного массива , найти среднее арифметическое neBu4kaMaXiM Помощь студентам 7 24.02.2009 15:58
Вывод двумерного массива pancho Общие вопросы Delphi 10 25.01.2009 23:31