//Дана матрица размерностью nxn, содержащая целые числа. Отсортировать главные диагонали матрицы по возрастанию методом вставки.
Код:
#include<conio.h>
#include<stdio.h>
void sort_VSTAV(int *a,int n)
{int i,j,temp;
for (i=1;i<n;i++)
{temp=a[i]; j=i-1;
while((j>=0)&&(a[j]>temp))
{a[j+1]=a[j];
j--;}
a[j+1]=temp;}
}
//1.VVedem massiv
int main(void)
{ int N;
int mas[10][10];
{ printf("Vvedite razmernost' massiva:");
scanf("%d",&N);
for(int i=0;i<N;i++)
{for(int j=0;j<N;j++)
{printf("BBedite 4islo v element massiva [%d] [%d]",i,j);
scanf("%d",&mas[i][j]);}
}
}
//2.Vvedem v fale odnomerniy massiv elementov glavnoy diagonaly
FILE *f;
if(!(f=fopen("c:\\prog\\data.txt","w")))
{printf("Otkrit' nevozmozhno\n"); return 0; }
if(N==3)
fprintf(f,"%d %d %d",mas[0][0],mas[1][1],mas[2][2]);
if(N==4)
fprintf(f,"%d %d %d %d",mas[0][0],mas[1][1],mas[2][2],mas[3][3]);
fclose(f);
//3. Schitaem elementy iz faila v odnomerniy massiv
FILE*fin;
if(!(fin=fopen("C:\\prog\\data.txt","r")))
{printf("Otkrit' nevozmozhno\n"); return 0; }
int sort_mass[5],c;
int k;
while ((c=getc(fin))!=EOF)
{ ungetc(c,fin);
for(k=0; k<4; k++)
fscanf(fin,"%d",&sort_mass[k]);}
fclose(fin);
//4. Primenim sortirovku
sort_VSTAV(sort_mass,k);
//5. Vivod na ekran. Zapis' v fail.
printf("\nIshodnaja matrica:\n");
for(int j=0; j<N; j++)
printf("%d ", mas[0][j]);
printf("\n");
for(int j=0; j<N; j++)
printf("%d ", mas[1][j]);
printf("\n");
for(int j=0; j<N; j++)
printf("%d ", mas[2][j]);
printf("\n");
if(N==4)
{for(int j=0; j<N; j++)
printf("%d ", mas[3][j]);}
printf("\n");
printf("\nSortirovannie elementy:\n");
if(N==4)
{for(int i=0; i<4; i++)
printf(" %d",sort_mass[i]);}
if(N==3)
{for(int i=0; i<3; i++)
printf(" %d",sort_mass[i]);}
if(!(f=fopen("C:\\prog\\data_out.txt","w")))
fprintf(f,"Ishodnaja matrica:");
for(int j=0; j<N; j++)
fprintf(f,"%d ", mas[0][j]);
fprintf(f,"\n");
for(int j=0; j<N; j++)
fprintf(f,"%d ", mas[1][j]);
fprintf(f,"\n");
for(int j=0; j<N; j++)
fprintf(f,"%d ", mas[2][j]);
fprintf(f,"\n");
if(N==4)
{for(int j=0; j<N; j++)
fprintf(f,"%d ", mas[3][j]);}
fprintf(f,"\n");
fprintf(f,"\nSortirovannie elementy:");
if(N==3)
{for(int i=0; i<3; i++)
fprintf(f," %d",sort_mass[i]);}
if(N==4)
{for(int i=0; i<4; i++)
fprintf(f," %d",sort_mass[i]);}
return 0;
}
Препод говорит, не надо ограничивать N и вводить в файл одномерный массив элем. гл. диагонали. А как без этого сделать?