Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2010, 08:41   #1
SeregaF1
 
Регистрация: 10.05.2010
Сообщений: 5
По умолчанию Сортировка матриц в С

//Дана матрица размерностью 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 и вводить в файл одномерный массив элем. гл. диагонали. А как без этого сделать?

Последний раз редактировалось Stilet; 03.06.2010 в 12:48.
SeregaF1 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка Матриц(Упорядочивание Элементов,Вывод На Экран Матриц При Условии...) timepoka Помощь студентам 8 01.07.2011 13:20
паскаль,одномерный массив,сортировка вставка,сортировка убывания,от максимального до конца немозг Помощь студентам 11 06.02.2010 21:57
Сортировка матриц + интерфейс. Оплата Ominous48 Помощь студентам 1 19.05.2009 09:07