C / C ++ Невозможно запустить цикл for в цикле for - PullRequest
0 голосов
/ 13 октября 2019

вот мой код:

#include <stdio.h>
/*
CALCULATING INVERSE OF A MATRIX
*/
int main(){

    int matris[3][3];
    int i = 0;
    int j = 0;
    for(i; i<3;i++){

        for(j;j<3;j++){

            scanf("%d", &matris[i][j]);                         
        }
        printf("%d", matris[i][j]);         
    }    
}

Я знаю его базовый, но у меня проблемы с ним, мой компилятор - Dev-C ++, и, кстати, моя ОС - Windows 10, когда я запускаю этот коди нажмите 1,2,3, это единственный вывод, который я вижу.

1
2
3
0430
--------------------------------
Process exited after 2.351 seconds with return value 1

Я не знаю, где моя ошибка, спасибо за помощь

РЕДАКТИРОВАТЬ

Я отредактировал код следующим образом:

int main(){

    int matris[3][3];
    int i,j;
    for(i = 0; i<3; i++){
        for (j=0;j<3;j++){
            scanf("%d", &matris);
        }
    }

    for(i = 0; i<3; i++){

        for (j=0;j<3;j++){

            printf("%d ", matris);
        }
    }

}

Но все равно я не вижу правильного вывода.

Вывод:

1
2   
3
4
5
6
7
8
9
6487536 6487536 6487536 6487536 6487536 6487536 6487536 6487536 6487536

Но, конечно, ожидаемый результат - что-то вроде матрицы 3x3 и целых чисел от 1 до 9

Ответы [ 3 ]

1 голос
/ 13 октября 2019

Вы можете, но вам нужно установить j в начальное значение, прежде чем оно войдет в цикл для каждого значения i, прямо сейчас, он просто проходит один раз через цикл j, и в следующий раз, когда он идет туда, он видит, что j is> then3 так что просто пропускает

0 голосов
/ 13 октября 2019

Вот результат:

$ g++ m.cpp
$ ./a.out
1
2
3
04
5
6
41954727
8
9
32764

А вот код:

#include <stdio.h>
/*
CALCULATING INVERSE OF A MATRIX
*/
int main(){

    int matris[3][3];
    int i = 0;
    int j = 0;
    for(i=0; i<3;i++){

        for(j=0;j<3;j++){

            scanf("%d", &matris[i][j]);
        }
        printf("%d", matris[i][j]);
    }
}

Он работает так, как должен, однако я бы рекомендовал не использовать printf("%d", matris[i][j]); вне *Цикл 1008 *, потому что j равен 3, и это своего рода неопределенное поведение.

0 голосов
/ 13 октября 2019

Не к этому:

for(i = 0; i<3; i++){
    for (j=0;j<3;j++){
        scanf("%d", &matris);
    }
}

for(i = 0; i<3; i++){
    for (j=0;j<3;j++){
        printf("%d ", matris);
    }
}

Сделайте это вместо:

for(i = 0; i<3; i++){
    for (j=0;j<3;j++){
        scanf("%d", matris[i]+j);
    }
}

for(i = 0; i<3; i++){
    for (j=0;j<3;j++){
        printf("%d ", matris[i][j]);
    }
}
...