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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.04.2014, 13:22   #1
sisaw
Пользователь
 
Регистрация: 15.12.2013
Сообщений: 24
Злость составьте программу, выясняющую есть ли в двумерном массиве A(N,M) строки, сумма элементов которых - отрицательное число (Паскаль)

составьте программу, выясняющую есть ли в двумерном массиве A(N,M) строки, сумма элементов которых есть отрицательное число (Надо что бы считал сумму строки и выводил эту строку в которой отрицательный элементы)
Код:
program mas;
var
a:array [1..100,1..100] of integer;
i,j,n,m,s:integer;
begin
writeln ('Введите размер масссива n,m:');
readln(n);
readln(m);
for i:=1 to n do
begin
for j:=1 to m do
begin
write ('a[',i,',',j,']=');
readln (a[i,j]);
end;
end;
for i:=1 to n do
   begin
      for j:=1 to m do
         begin
            write(a[i,j],'  ');
         end;
      writeln;
   end;
   s:=0;
 for i:=1 to n do
begin
for j:=1  to m do
begin
s:=s+a[i,j];
end;
writeln;
 end;
if s<0 then write(' Cумма элементов отрицательное число =',s)
else write('Нет таких элементов');
 writeln;
 readln;
 end.
sisaw вне форума Ответить с цитированием
Старый 23.04.2014, 13:34   #2
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Ага. Вы считаете сумму всех строк, не сбрасывая её в 0 при выходе на новую строку.
Код:
   s:=0;
следует запихнуть после
Код:
 for i:=1 to n do
begin
Также следует перенести в цикл проверку на отрицательную сумму (сейчас она проходит после того, как проверена вся матрица).
Вот это
Код:
if s<0 then write(' Cумма элементов отрицательное число =',s)
else write('Нет таких элементов');
Перенести в конец
Код:
for j:=1  to m do
begin
s:=s+a[i,j];
end;
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 23.04.2014, 13:37   #3
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Можно сделать так
Код:
for i := 1 to n do
Begin
  s := 0;
  for j := 1 to m do
  Begin
    s := s + a[i,j]
  End;
  if s < 0 then
  Begin
    writeln('Сумма = ', s, ' строка номер ', i)
  End;
End;
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 23.04.2014, 13:43   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

позволю себе ответ (c) Vanta11a
проиллюстрировать кодом:

Код:
  WriteLn('Исходная матрица:');
  for i := 1 to n do
  begin
    for j := 1 to m do
      write(a[i, j], '  ');
    writeln;
  end;
  WriteLn;

  {поиск строк с отрицательной суммой элементов}
  for i := 1 to n do
  begin
    s := 0;
    for j := 1 to m do
      s := s + a[i, j];
    if s < 0 then writeln('в строке ',i,' Cумма элементов отрицательное число =', s)
  end;
  readln;

p.s. Если есть необходимость выдать в конце программы сообщение, что нужных строк нет, я бы рекомендовал добавить ещё одну переменную и использовать её как флаг (признак).


p.p.s. пока я возился, уже GetMax меня опередил!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.04.2014, 13:43   #5
sisaw
Пользователь
 
Регистрация: 15.12.2013
Сообщений: 24
По умолчанию

Цитата:
Сообщение от GetMax Посмотреть сообщение
Можно сделать так
Код:
for i := 1 to n do
Begin
  s := 0;
  for j := 1 to m do
  Begin
    s := s + a[i,j]
  End;
  if s < 0 then
  Begin
    writeln('Сумма = ', s, ' строка номер ', i)
  End;
End;


огромное спасибо теперь все стало понятно
sisaw вне форума Ответить с цитированием
Старый 23.04.2014, 13:46   #6
sisaw
Пользователь
 
Регистрация: 15.12.2013
Сообщений: 24
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
позволю себе ответ (c) Vanta11a
проиллюстрировать кодом:

Код:
  WriteLn('Исходная матрица:');
  for i := 1 to n do
  begin
    for j := 1 to m do
      write(a[i, j], '  ');
    writeln;
  end;
  WriteLn;

  {поиск строк с отрицательной суммой элементов}
  for i := 1 to n do
  begin
    s := 0;
    for j := 1 to m do
      s := s + a[i, j];
    if s < 0 then writeln('в строке ',i,' Cумма элементов отрицательное число =', s)
  end;
  readln;

p.s. Если есть необходимость выдать в конце программы сообщение, что нужных строк нет, я бы рекомендовал добавить ещё одну переменную и использовать её как флаг (признак).


p.p.s. пока я возился, уже GetMax меня опередил!
вам тоже спасибо
sisaw вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переменной t присвоить значение истина, если в одномерном массиве имеется хотя бы одно отрицательное и четное число (Паскаль) zzz99 Помощь студентам 3 13.03.2014 13:28
[Pascal] Определить число столбцов матрицы, сумма элементов которых положительна ilyha93 Помощь студентам 3 06.03.2012 21:37
В двумерном вещественном массиве 4x4 переставить строки в порядке возрастания максимальных элементов строк (Паскаль) 77SEMI77 Помощь студентам 0 20.01.2012 00:42
Составить программу нахождения числа строк матрицы А(N,N), сумма элементов у которых отрицательна. Irisk Помощь студентам 4 23.12.2010 16:41
В двумерном массиве вставить перед всеми столбцами, в которых нет отрицательных элементов, второй столбец razor052 Паскаль, Turbo Pascal, PascalABC.NET 2 16.04.2010 14:33