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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.01.2015, 23:01   #1
Наташок
Пользователь
 
Регистрация: 06.10.2010
Сообщений: 17
Печаль Найти сумму элементов в тех строках, которые содержат хотя бы один нулевой элемент.

Найти сумму элементов в тех строках, которые содержат хотя бы один нулевой элемент.
Код:
program tema2z2;
uses crt;
var A:array[1..10,1..10] of integer;
n,i,j,sum,kolstnul:integer;
begin
clrscr;
write ('Введите размерность матрицы n->');
readln(n);
Writeln('Введите элементы матрицы A->');
for i:=1 to n do
for j:=1 to n do
begin
write('A[',i,',',j,']=');
readln(A[i,j]);
end;

writeln ('Матрица A->');
for i:=1 to n do
begin
for j:=1 to n do
write(A[i,j]:4,' ');
writeln;
end;
kolstnul:=0;sum:=0;
for i:=1 to n do
begin
for j:=1 to n do
if A[i,j]=0 then kolstnul:=kolstnul+1;
end;
writeln('количество строк с 0=',kolstnul);
begin
if kolstnul>0 then
begin
for j:=1 to n do
sum:=sum+A[i,j];
writeln('сумма элементов в этих строках =',sum);
end;
if kolstnul=0 then 
writeln('строк с 0 нет');
end;
end.
не получается найти сумму элементов строк с нулевыми элементами,подскажите,пожалуйста
Наташок вне форума Ответить с цитированием
Старый 27.01.2015, 23:27   #2
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Переписал с нуля на скорую руку
Код:
{ввод матрицы}

for i:=1 to n do
	for j:=1 to n do begin
		write('A[',i,', ',j,']=');
		read(A[i, j]);
	end;
	
{вывод матрицы}

for i:=1 to n do begin
	for j:=1 to n do 
		write('A[',i,', ',j,']=', a[i, j]:6, ' ');
		
	writeLn;
		
end;


s:=0;

for i:=1 to n do
	sums[i]:='Net Nuley';
	
{считаем сумму элементво и формируем новый массив, если в строке попался нулевой элемент}

for i:=1 to n do begin
	s:=0;
	thereWasZeros:=false;
	
	for j:=1 to n do begin
		s:=s + a[i, j];
		if a[i, j] = 0
			then thereWasZeros:=true;
	end;
	
	if thereWasZeros then begin
		str(s, buffSt);
		sums[i]:=buffSt
	end;
		

end;

{вывод результата}

for i:=1 to n do
	writeLn('sum[',i,'] = ', sums[i]);
Уверен, переменные вы объявите сами, судя по тому, что вы предоставили готовый код, вы справитесь

Последний раз редактировалось Вадим Мошев; 27.01.2015 в 23:32.
Вадим Мошев вне форума Ответить с цитированием
Старый 27.01.2015, 23:38   #3
Наташок
Пользователь
 
Регистрация: 06.10.2010
Сообщений: 17
По умолчанию

спасибо!
только объясните значение этого
Код:
str(s, buffSt);
?
Наташок вне форума Ответить с цитированием
Старый 27.01.2015, 23:40   #4
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Это процедура, которая берёт число s, делает из него строку и помещает это значение в переменную buffSt
Вадим Мошев вне форума Ответить с цитированием
Старый 27.01.2015, 23:41   #5
abit
Пользователь
 
Регистрация: 21.10.2014
Сообщений: 43
По умолчанию

к сожалению у меня помер комп, нету компилятора под рукой, но если в кратце тут вообще не по теме код, насколько я вижу, поясню:
Цитата:
for i:=1 to n do
begin
for j:=1 to n do
if A[i,j]=0 then kolstnul:=kolstnul+1;
end;
writeln('количество строк с 0=',kolstnul);
тут ты считаешь количество всех нулей во всей матрице (а не нулей в строке), скорее всего надо сделать break как только ноль встретился в строке

потом, тут:
Цитата:
for j:=1 to n do
sum:=sum+A[i,j];
writeln('сумма элементов в этих строках =',sum);
ты складываешь все числа последней строки матрицы, а нефига не всех строк

как надо делать:
заводишь две переменных общая сумма Sum и сумма строки SumStr обе 0 по началу, потом проходишься по каждой строке, складываешь всё в SumStr, если встретил 0, то складываешь SumStr с Sum, в конце строки обнуляешь SumStr переходишь к следующей
abit вне форума Ответить с цитированием
Старый 27.01.2015, 23:52   #6
Наташок
Пользователь
 
Регистрация: 06.10.2010
Сообщений: 17
По умолчанию

так?
Код:
program tema2z2;
uses crt;
var A:array[1..10,1..10] of integer;
n,i,j,sum,sumstr:integer;
begin
clrscr;
write ('Введите размерность матрицы n->');
readln(n);
Writeln('Введите элементы матрицы A->');
for i:=1 to n do
for j:=1 to n do
begin
write('A[',i,',',j,']=');
readln(A[i,j]);
end;

writeln ('Матрица A->');
for i:=1 to n do
begin
for j:=1 to n do
write(A[i,j]:4,' ');
writeln;
end;
sumstr:=0;sum:=0;
for i:=1 to n do
begin
sumstr:=A[i,j];
if A[i,j]=0 then sumstr:=sumstr+sum;
sumstr:=0;
end;
writeln('сумма строк',sumstr);
end.
Наташок вне форума Ответить с цитированием
Старый 28.01.2015, 01:43   #7
abit
Пользователь
 
Регистрация: 21.10.2014
Сообщений: 43
По умолчанию

нет, не так, у тебя всегда будет выводится sumstr (сумма строки, а точне последней строки), но даже и она не будет выводится, т.к. в конце цикла есть sumstr:=0;
сомневаюсь, что там будет хоть что-то кроме нуля, да и вообще вот это
Код:
for i:=1 to n do
begin
sumstr:=A[i,j];
не имеет смысла, т.к. j тут не имеет смысла... оно осталось от прошлого цикла равным n
ладно, напрягся, написал тебе вычислительную часть, добавь в var
Код:
Fb:boolean;
и вместо
Код:
sumstr:=0;sum:=0;
for i:=1 to n do
begin
sumstr:=A[i,j];
if A[i,j]=0 then sumstr:=sumstr+sum;
sumstr:=0;
end;
writeln('сумма строк',sumstr);
напиши приблизительно так
Код:
Sum:=0;
for i:=1 to n do
begin
    SumStr:=A[i,1];
    Fb:=SumStr=0;
    for j:=2 to n do
    begin
        SumStr:=SumStr+A[i,j];
        if  not Fb  then Fb:=A[i,j]=0;
    end;
    if Fb then Sum:=Sum+SumStr;
end;
writeln('сумма строк',Sum);

если будут проблемы - опиши, если норм - постарайся разобраться в том, что я написал

Последний раз редактировалось abit; 28.01.2015 в 06:04.
abit вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти сумму элементов в тех столбцах, которые содержат хотя бы один отрицательный эл BTS C# (си шарп) 2 31.12.2014 11:54
Найти сумму модулей элементов в тех строках, которые содержат отрицательные mital25 Помощь студентам 1 21.12.2014 19:28
Найти сумму элементов в тех столбцах, которые содержат хотя бы один отрицательный элемент BTS Общие вопросы C/C++ 2 15.12.2014 17:13
Дана целочисленная квадратная матрица. Определить сумму элементов в тех строках, которые содержат хотя бы один отрицательный элеме EvgeniyPR Помощь студентам 0 18.11.2012 20:02
Матрица. Посчитать количество строк, содержащих хотя бы один нулевой элемент Геля007 Общие вопросы C/C++ 0 02.06.2010 16:17