ЕА
Екатерина Агапонова

Помогите пожалуйста С++



Всем привет. .
Задача такова. .
вле ли элементы 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

М;
Мария ;)*

int check = 1; //Счётчик.
if(((matrix[a][1] ) >= 0 && (matrix[a][M - 1])) >= 0) check++;

// но так лучше

for (a = 0; a < N ; a++) {
if (matrix[a][1] < 0 || matrix[a][M - 1] < 0) break;
else ++check;
}

Наталия Касьяник
Наталия Касьяник

Один фик что С, что С++. Шас посмотрю.
Почему a < N и b < M, а не меньше либо равно? Сразу обрезается строка и столбец последние.
При првоерке элементов опять просто меньше, так ты check никогда до N не догонишь, всегда будет на единицу меньше, даже при всех положительных элементах)
А да, точно, туплю)
kaiu, он проверяет одновременно два столбца, поэтому и N 🙂
А не перепутал ли ты в проверке строки и столбцы? Вроде в двумерных идет сначала столбец, потом строка.
Николай Веселуха дал правильный ответ 🙂 Но счетчик 0 и логические условия в скобках.

ЛА
Лиля Абдулина

На первый взгляд явных ошибок не видно. Что выводит? Проблема при вводе, выводе, проверке, выводе результата?
P.S. Почему комментарии к ответам запрещены, где обсуждения и правки будут?

ЕВ
Евгений Высоцкий

if (check == N)
А почему только N?
Если строк н, то для двух столбцов уже должно быть 2*N переменная check

Ага, логично, моя ошибка, пора видно спать.
А так в облом компилятор запускать, но видно придется 🙂

Похожие вопросы
Помогите пожалуйста! =(
помогите пожалуйста в с++
Помогите пожалуйста!! ! =))
С++ Помогите пожалуйста
С++ Помогите пожалуйста.
Помогите пожалуйста!! ! С++
Помогите, пожалуйста, еще!!! С++
Помогите, пожалуйста!!! С++
помогите пожалуйста!..
помогите пожалуйста помогите!!!!