#arrays #c #loops
#массивы #c #петли
Вопрос:
вывод-печать только нескольких элементов матрицы, которые расположены в неправильном порядке , я думаю, что что-то не так с циклом печати, но не могу понять это
#include lt;stdio.hgt; int main() { int x=0, y=0; int a[x][y]; printf("enter the number of rows in first matrix:n"); scanf("%d", amp;x); printf("enter the number of columns in first matrix:n"); scanf("%d", amp;y); printf("enter elements of first matrixn"); for (int i = 0; i lt; x; i ) { for (int j = 0; j lt; y; j ) { printf("enter element %d %dn", i, j); scanf("%d", amp;a[i][j]); } } for (int p = 0; p lt; x; p ) { for (int q = 0; q lt; y; q ) { printf("%dt", a[p][q]); } printf("n"); } return 0; }
Комментарии:
1. Извините, почему вы называете свои переменные цикла
p
иq
(илиi
иj
), а не лучшеrow
иcol
, чтобы вы точно знали, что вы печатаете? Не только ваш код будет более удобным для обслуживания и читабельным, но вы, вероятно, увидите, что делаете.2. @LuisColorado На самом деле, да, действительно хорошо понимать и визуализировать вещи намного лучше . Спасибо Вам за совет. Но вам нужна хорошая среда разработки, такая как VS-КОД, чтобы предложения с определенными переменными позволяли нам писать быстрее.
3. да, но проблема не в возможности записи, а в удобочитаемости, так как код обычно должен быть не только написан, но и поддерживаться (иногда каким-то другим человеком).
Ответ №1:
Вы объявляете матрицу перед получением размера матрицы (вы переменные x и y). В вашем коде матрица объявляется как[0][0].
Решение:
#include lt;stdio.hgt; int main() { int x, y; printf("enter the number of rows in first matrix:n"); scanf("%d", amp;x); printf("enter the number of columns in first matrix:n"); scanf("%d", amp;y); int a[x][y]; printf("enter elements of first matrixn"); for (int i = 0; i lt; x; i ) { for (int j = 0; j lt; y; j ) { printf("enter element %d %dn", i, j); scanf("%d", amp;a[i][j]); } } for (int p = 0; p lt; x; p ) { for (int q = 0; q lt; y; q ) { printf("%dt", a[p][q]); } printf("n"); } return 0; }
Комментарии:
1. но если я этого не сделал , то программа останавливается при вводе , попробуйте запустить один раз с и без инициализации x и y с 0
2. Да, вы должны иметь входные данные x и y, прежде чем инициализировать[x][y].
Ответ №2:
Вы инициализируете свой 2d-массив с 0 строками и 0 столбцами.
Тебе нужно int a[x][y]
спуститься под scanf("%d", amp;y);
#include lt;stdio.hgt; int main() { int x, y; printf("enter the number of rows in first matrix:n"); scanf("%d", amp;x); printf("enter the number of columns in first matrix:n"); scanf("%d", amp;y); int a[x][y]; printf("enter elements of first matrixn"); for (int i = 0; i lt; x; i ) { for (int j = 0; j lt; y; j ) { printf("enter element %d %dn", i, j); scanf("%d", amp;a[i][j]); } } for (int p = 0; p lt; x; p ) { for (int q = 0; q lt; y; q ) { printf("%dt", a[p][q]); } printf("n"); } return 0; }