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