Помогите пожалуйста С++
Всем привет. .
Задача такова. .
вле ли элементы 2 и последнего столбцов матрицы положительные.. .
вот мой код.. но сколько бы я не всматривался в него ...он всё равно не работает!
#include
#include
#include
#include
#define N 5
#define M 4
int main()
{
setlocale(LC_ALL,"RUS");
int matrix[N][M]; // Матрица.
int a,b; // Переменные циклов.
int counter = 1; // Счётчик строк.
int check = 0; //Счётчик.
// Ввод массива.
for (a = 0; a < N ;a++)
{
printf("%d Строка\n",counter);
for (b = 0; b < M ;b++) scanf("%d",&matrix [ a ] [ b ]);
counter++;
}
//Вывод массива.
for (a = 0; a < N ;a++)
{
for (b = 0; b < M ;b++) printf("%d",matrix [ a ] [ b ]);
printf("\n");
}
//Проверка столбцов.
for(a = 0; a < N ;a++)
{
if(((matrix[a] [1] ) && (matrix [a] [M - 1])) >= 0) check++;
}
if (check == N)
printf("%d \n",check);
else
printf("NO!\n");
getche();
getche();
return 0;
}
в чём моя ошибка?
Извиняюсь ...это С=)
1) Потому что N это колво элементов массива а индексы всегда нумеруются с нуля а не с 1 значит последний элемента имеет индекс N-1
2) При проверве условий.. .
если ввожу такие данные.
-1-2-3-4
1234
-1-2-3-4
-1-2-3-4
1234
он пишет что всё верно и выводит 5 но это должно происходить только в таком случае
-1 2 -3 4
-1 2 -3 4
-1 2 -3 4
-1 2 -3 4
3) Мы одновременно, в одном условии проверяем два столбца.. поэтому больше чем 5 элементов быть не может.
Наверное я совсем слепой но я не вижу здесь ошибки вообще.
Всё..я понял совю ошибку... просто не те данные вводил)
Николай, спасибо. это просто опечатка когда в маил писал).
Не согласен с вами... получается что если, допустим, matrix[a][1] < 0 а matrix[a][M - 1] > 0 то else ветвь сработает и счётчик увеличится.. а в условии обчзтельно два столбца элементов больших нуля. (поправьте меня, если не прав)
Николай, counter всё таки 0