помогите пожалуйста решить задачу на языке Си!! Дана матрица размера M N. Продублировать 2 раза столбец матрицы, содержащий ее минимальный элемент. продублировать-это значит после столбца,который содержит минимальный элемент вставить такой же столбец. заранее спасибо!
Пример программы на С++. Чисто для понимания алгоритма. Ворчуны нах =/ Code: #include <conio.h> #include <iostream.h> int main () { int m,n,i,j,a[100][100],min,nomstol; clrscr(); cout<<"Input skolko strok = "; cin>>n; cout<<"Input skolko stolbcov = "; cin>>m; cout<<endl; for (j=1;j<=n;j++) { for (i=1;i<=m;i++) { cout<<"Input a["<<j<<","<<i<<"]="; cin>>a[i][j]; } } cout<<endl; min=a[1][1]; nomstol=1; cout<<"Ishodniy massiv"<<endl; cout<<endl; for (j=1;j<=n;j++) { for (i=1;i<=m;i++) { cout<<a[i][j]<<" "; if (a[i][j]<min) { min=a[i][j]; nomstol=i; } } cout<<endl; } for (i=1;i<=m;i++) { for (j=1;j<=n;j++) { if (i==nomstol) { a[i+1][j]=a[i][j]; } } } cout<<endl; cout<<"New massiv"<<endl; cout<<endl; for (j=1;j<=n;j++) { for (i=1;i<=m;i++) { cout<<a[i][j]<<" "; } cout<<endl; } cout<<endl; getch(); return 0; }
Зачастую когда говорят Си имеют ввиду С++, ибо он чаще преподается в универах на различных специальностях. В любом случае - это только алгоритм. Знающему человеку (или почти знающему) не составит труда переписать его на чистый Си.
Вроде так Code: #include <stdlib.h> #include <stdio.h> int main() { int n, m, **mass; n = m = 0; printf("vvedfite n m: "); scanf("%d %d", &n, &m); mass = (int **)malloc(n * sizeof(int)); for(int i = 0; i < n; i++) mass[i] = (int *)malloc(m * sizeof(int)); for(int i = 0; i < n; i++) { for(int j = 0; j < m; j++) { printf("vvedite element [%d][%d]", i, j); scanf("%d", &mass[i][j]); } } int min = mass[0][0]; int column = 0; for(int i = 0; i < n; i++) { for(int j = 0; j < m; j++) { if(mass[i][j] < min) { min = mass[i][j]; column = j; } } } for(int i = 0; i < n; i++) { for(int j = 0; j < m; j++) { printf("%4d", mass[i][j]); if(j == column) printf("%4d", mass[i][j]); } printf("\n"); } for(int i = 0; i < n; i++) { free(mass[i]); } free(mass); return 0; }
Kudesnik, отлично, только в памяти то ничего не дублируется. Я бы завернул связанный список столбцов, тогда продублировать было бы очень легко.