Лв
Лвыриапылор

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



Всем привет.
Задача такова. .
поменять местами торой и последния столбец матрици если все элементы этих столбцов положительны.
вот мой код.

#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...откуда?

Де
Денис

#include
#include
#include

#define N 5
#define M 4

int main() {
int matrix[N][M];
size_t n, m;
int check = 0, temp;

// Ввод массива.
for (n = 0; n < N ; n++) {
for (m = 0; m < M ; m++) {
printf(" matrix[%i][%i] -> ", n, m);
scanf("%d", &matrix[n][m]);
}
} system("cls");

//Вывод массива.
for (n = 0; n < N ; n++, printf("\n")) {
for (m = 0; m < M ; m++) {
printf("%4i", matrix[n][m]);
}
}

//Проверка столбцов.
for (n = 0; n < N ; n++) {
if (matrix[n][1] < 0 || matrix[n][M - 1] < 0) break;
else ++check;
}

// Обмен
if (check == N) {
for (n = 0; n < N ; n++) {
temp = matrix[n][1];
matrix[n][1] = matrix[n][M - 1];
matrix[n][M - 1] = temp;
}
}

//Вывод массива.
printf("\n");
for (n = 0; n < N ; n++, printf("\n")) {
for (m = 0; m < M ; m++) {
printf("%4i", matrix[n][m]);
}
}

getch();
return 0;
}

ТП
Татьяна Пейчинович

Это C++..Язык истолкует почти что угодно, в том числе твои ошибки, по своему разумению.. .
"основной вопрос стоит в том.. почему он в 1ой. строке запрашивает 5-тый элемент"
Исправь scanf("%d ",&matrix [ a ] [ b ]); на scanf("%d",&matrix [ a ] [ b ]); и ввод будет нормальным.

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