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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.12.2010, 21:17   #1
Volk_xD
Пользователь
 
Регистрация: 16.12.2010
Сообщений: 25
По умолчанию Определить сумму элементов в строках содержащих отрицательные элементы

Определить сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент.

Код:
Var sum:integer; i,j:Byte;
Begin
for i:=1 to row do begin
sum:=0;
for j:=1 to col do
if x[i,j]<0 then
sum:=sum+x[i,j];
writeln('Summa ',i,'-i stroki=',sum:4);
end;
end;
Как сделать так, что б в тех строках, где отрицательного элемента нет, сумма вообще не выводилась?
Volk_xD вне форума Ответить с цитированием
Старый 23.12.2010, 21:20   #2
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

можно так
Код:
for i:=1 to row do begin
sum:=0;
for j:=1 to col do
if x[i,j]<0 then
begin
sum:=sum+x[i,j];
inc(n);
end;
if n<>0 then
begin
writeln('Summa ',i,'-i stroki=',sum:4);
n:=0;
end;
end;
еще можешь добавить такой вывод что в массиве вообще не строк с отриц. элементами т.о.:
Код:
for i:=1 to row do begin
sum:=0;
for j:=1 to col do
if x[i,j]<0 then
begin
sum:=sum+x[i,j];
inc(n);
end;
if n<>0 then
begin
writeln('Summa ',i,'-i stroki=',sum:4);
inc(k);
n:=0;
end;
end;
if k=0 then writeln('в массиве нет строк с отриц. элементами');

Последний раз редактировалось Базиля; 23.12.2010 в 21:22.
Базиля вне форума Ответить с цитированием
Старый 23.12.2010, 21:28   #3
Volk_xD
Пользователь
 
Регистрация: 16.12.2010
Сообщений: 25
По умолчанию

Большое спасибо
Volk_xD вне форума Ответить с цитированием
Старый 23.12.2010, 21:49   #4
Volk_xD
Пользователь
 
Регистрация: 16.12.2010
Сообщений: 25
По умолчанию

Ещё такой вопрос. А как сделать, чтобы считалась сумма всех элементов той строки, а не только отрицательных?
Volk_xD вне форума Ответить с цитированием
Старый 23.12.2010, 22:34   #5
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

Если я тебя правльно понял то ты хочешь чтобы считало сумму всех строк. Тогда убираешь свое условие из цикла.
Код:
for i:=1 to row do 
begin
sum:=0;
for j:=1 to col do
sum:=sum+x[i,j];
writeln('Summa ',i,'-i stroki=',sum:4);
end;
Базиля вне форума Ответить с цитированием
Старый 23.12.2010, 22:45   #6
Volk_xD
Пользователь
 
Регистрация: 16.12.2010
Сообщений: 25
По умолчанию

Нет, хочу, что б считало сумму строк, в которых встречаются отрицательные элементы. Но нужно, что б считалась сумма не только отрицательных, а ВСЕХ элементов этой строки.
Volk_xD вне форума Ответить с цитированием
Старый 23.12.2010, 22:46   #7
man-utd-
 
Регистрация: 22.11.2010
Сообщений: 8
По умолчанию

А если допустим требуется найти сумму всех элементов в строках,в которых есть отрицательный элемент,находящийся на главной диагонали. Это надо добавить в условии???
Код:
for i:=1 to row do begin
sum:=0;
for j:=1 to col do
if (i=j) and x[i,j]<0 then
begin
sum:=sum+x[i,j];
inc(n);
end;
if n<>0 then
begin
writeln('Summa ',i,'-i stroki=',sum:4);
n:=0;
end;
end;
man-utd- вне форума Ответить с цитированием
Старый 24.12.2010, 07:26   #8
Volk_xD
Пользователь
 
Регистрация: 16.12.2010
Сообщений: 25
По умолчанию

Программа, к исходной задаче, почти правильная, но считает сумму НЕ всех элементов строки, а только отрицательных. Помогите подправить код пожалуйста)

Код:
Program Summ;
Uses Crt;
Type TArray=Array[1..10,1..10] of integer;
Var a, b:TArray; n,m,k,l :Byte;
Procedure InMatr2(Var x:TArray; row,col:Byte);
Var i,j:Byte;
Begin
Randomize;
For i:=1 to row do Begin
For j:=1 to col do Begin
x[i,j]:=-10+random(90);
Write(x[i,j]:7,' ');
End;
Writeln;
End;
End;
Procedure Summa(x:TArray; row,col:Byte);
Var sum,n:integer; i,j:Byte;
Begin
for i:=1 to row do begin
sum:=0;
for j:=1 to col do
if x[i,j]<0 then
begin
sum:=sum+x[i,j];
inc(n);
end;
if n<>0 then
begin
writeln('Summa ',i,'-i stroki=',sum:4);
inc(k);
n:=0;
end;
end;
if k=0 then writeln('Net strok s otricatelnumi elementami');
End;
BEGIN
Clrscr;
Writeln('Vveite razmernost matrici (menee 10*10) ');
Readln(n,m);
InMatr2(a,n,m);
Writeln;
Summa(a,n,m);
Readkey;
End.
Volk_xD вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определить сумму первых n элементов последовательности denicko Помощь студентам 5 27.10.2010 22:21
Все отрицательные элементы массива А заменить на сумму, а положительные на полусумму предшествующих Lada05 Помощь студентам 1 27.10.2010 15:44
В строках таблицы,содержащих наибольшее кол-во нулей, найти минимальную в строке сумму абсолютных величин Bga Помощь студентам 2 07.12.2009 00:52
Паскаль. определить сумму элементов кратных трем. KnoPaA Помощь студентам 5 27.10.2009 17:42
Определить сумму и количество четных элементов массива KREGI Общие вопросы Delphi 10 05.03.2009 18:18