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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.06.2010, 11:28   #1
Ehha1234
Пользователь
 
Регистрация: 02.06.2010
Сообщений: 10
По умолчанию Пщдсчет отрицательных чисел в массиве

Решила задачу, условие: Дана матрица W(4×4), содержащая положительные и отрицательные числа. Вместо отрицательных элементов в матрицу записать нули, посчитать их количество.

У меня k не считается, почему помогите

Код:
Program Z_25;
uses crt;
var
a: array [1..4,1..4] of integer;
i, j, k, n: integer;
begin
clrscr;
writeln ('введите кол-во строк и столбцов');
readln(n);
for i:=1 to n do
for j:=1 to n do
begin
write ('a[',i,',',j,']=');
readln(a[i,j]);
end;
k:=0;
for i:=1 to n do
for j:=1 to n do
begin
if a[i,j]<0 then a[i,j]:=0;
if a[i,j]<0 then k:=k+1;
end;
for i:=1 to n do
for j:=1 to n do
writeln ('a[',i,j,']=',a[i,j]);
writeln('k=',k);
readln;
end.

Последний раз редактировалось Stilet; 04.06.2010 в 12:21.
Ehha1234 вне форума Ответить с цитированием
Старый 04.06.2010, 12:15   #2
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Цитата:
Код:
for i:=1 to n do
for j:=1 to n do
begin
замени на:
Код:
for i:=1 to n do
begin
for j:=1 to n do
begin
....
_-Re@l-_ вне форума Ответить с цитированием
Старый 04.06.2010, 12:41   #3
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Так ты подумай, что наделано-то!!! Сначала отрицательный элемент матрицы заменяется 0, а потом этот элемент матрицы (уже 0) проверяется на условие a[i,j]<0. А ведь 0 не может быть меньше 0. Вот и не считается... Не верная реализация алгоритма...

Код:
for i:=1 to n do
for j:=1 to n do
begin
if a[i,j]<0 then a[i,j]:=0;
if a[i,j]<0 then k:=k+1;
end;
Напиши вот так
Код:
if a[i,j]<0 then
  begin
    Inc(k);
    a[i,j]:=0
  end
Перемешивай дело с бездельем и не сойдешь с ума...

Последний раз редактировалось Grag; 04.06.2010 в 12:44.
Grag вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Замена отрицательных чисел нулями DasV Помощь студентам 0 30.04.2010 00:42
В двумерном массиве вставить перед всеми столбцами, в которых нет отрицательных элементов, второй столбец razor052 Паскаль, Turbo Pascal, PascalABC.NET 2 16.04.2010 14:33
Произведение отрицательных элементов в одномерном массиве - в чём ошибка? Жека:) Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 06.04.2009 16:10
вычислить сумму отрицательных элементов в массиве only_win Паскаль, Turbo Pascal, PascalABC.NET 2 25.09.2007 15:22