Вставить столбец из нулей перед минимальным элементом матрицы - C (СИ)
Формулировка задачи:
Написал прогу которая находит в матрице минимальный элемент и вставляет перед ним столбец из нулей.
Прога работает, но не совсем верно: первая строка выводиться нормально, а остальные начинаются с последнего элемента предыдущей строки причем дальше строка выводится нормально (т.е. что-то не то с выводом первого столбца).
{ int n,m,i,j; printf("Vvedite razmer matrizi N*M: \n"); scanf("%d %d", &n, &m); double a[n][m], b[n][m]; for(i=0; i<n; i++) for(j=0; j<m; j++) scanf("%lf", &a[i][j]); int min = a[0][0]; int imin = 0; for(int i=0; i<n; i++) for(int j=0; j<m; j++) { if(min > a[i][j]) {min = a[i][j]; imin = j;} } for(int i=0; i<n; i++) for(int j=0; j<imin; j++) b[i][j]=a[i][j]; for(int i=0; i<n; i++) for(int j=imin; j<imin+1; j++) b[i][j]=0; for(int i=0; i<n; i++) for(int j=imin+1; j<m+1; j++) b[i][j]=a[i][j-1]; for(i=0; i<n; i++) { for(j=0; j<m+1; j++) printf("%2.1lf ", b[i][j]); printf("\n"); } return 0; }
Решение задачи: «Вставить столбец из нулей перед минимальным элементом матрицы»
textual
Листинг программы
#include <stdio.h> int main(int argc, char *argv[]) { int n,m,k=-1,l; printf("Vvedite stroki and stolbcy "); scanf("%d",&n); scanf("%d",&m); int a[n][m+1]; printf("Vvedite matrix\n"); for (int i=0;i<n;i++) for (int j=0;j<m;j++) { printf("a[%d][%d]=",i+1,j+1); scanf("%d",&a[i][j]); } for (int i=0;i<n;i++) { for (int j=0;j<m;j++) printf("%3d",a[i][j]); printf("\n"); } for (int j=0;j<m;j++) { l=1; for (int i=0;i<n;i++) if (a[i][j]>=0) l=0; else { k=j; } } if (k!=-1) { for (int i=0;i<n;i++) { for (int j=m;j>k;j--) a[i][j]=a[i][j-1]; a[i][k+1]=0; } m++; } printf("\n"); for (int i=0;i<n;i++) { for (int j=0;j<m;j++) printf("%3d",a[i][j]); printf("\n"); } return 0; }
Объяснение кода листинга программы
В этом коде:
- Объявлены переменные: n, m, k, l.
- С помощью функции scanf считываются значения n и m.
- Создается матрица a размером n на (m+1).
- С помощью двух циклов for и функции scanf считываются значения элементов матрицы a.
- С помощью двух циклов for и функции printf выводятся значения элементов матрицы a.
- В цикле for проверяется, есть ли в матрице отрицательные числа. Если есть, то переменная k запоминает номер столбца с минимальным отрицательным числом.
- Если k не равно -1, то в цикле for и двух вложенных циклах for происходит перестановка элементов матрицы a так, чтобы слева от столбца с минимальным отрицательным числом были нули.
- Увеличивается значение m на единицу.
- С помощью двух циклов for и функции printf выводятся значения элементов измененной матрицы a.
- Возвращается 0, что означает успешный конец работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д