Страница 1 из 1

C++ сортировка

Добавлено: 07 июл 2010, 11:52
ромашка90
помогите пожалуста

вопрос №1

8.8. Дана матрица целых чисел X[5,5]. Упорядочить элементы строк по возрастанию, а сами строки по возрастанию суммы элементов строк (обменом).

у меня получилось вот это

Код: Выделить всё

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int main()
{
int i,j,k,temp;
const n=5;
int a[n][n];
srand(time(NULL));
for(i=0;i<n;i++)
for(j=0;j<n;j++)
a[i][j]=10*rand()/RAND_MAX;
for(i=0;i<n;i++)
{printf("\n");
for(j=0;j<n;j++)
printf("\t%d",a[i][j]);
}
printf("\n\n\n");
for(i=0;i<n;i++)
for(j=1;j<n;j++)
{
k=j;
while(a[i][k]<a[i][k-1]&&k>=1)
{
	temp=a[i][k];
	a[i][k]=a[i][k-1];
	a[i][k-1]=temp;
k--;
}}
for(i=0;i<n;i++)
{printf("\n");
for(j=0;j<n;j++)
printf("\t%d",a[i][j]);
}
printf("\n\n\n");
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{	
	k=i;
	while(a[k][4]>a[k-1][4]&&k>=1)
	{
	temp=a[k][j];
	a[k][j]=a[k-1][j];
	a[k-1][j]=temp;
	k--;
}}
for(i=0;i<n;i++)
{printf("\n");
for(j=0;j<n;j++)
printf("\t%d",a[i][j]);
}
printf("\n");
return 0;
}
оно компилируется и работает, но неправильно. Первое условие выполняется (упорядочивание элементов), а вот с упорядочиванием строк беда, подскажите пожалуста, что надо исправить и как?

Вопрос № 2

Код: Выделить всё

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int main()
{
int n=0,i;
FILE*f,*f1,*f2;
srand(time(NULL));

if((f1=fopen("1.txt","w"))==NULL)
{perror("Erorr! Otkrytie fayla nevozmozhno!\n");
exit(0);}
if((f2=fopen("2.txt","w"))==NULL)
{perror("Erorr! Otkrytie fayla nevozmozhno!\n");
exit(0);}

for(i=0;i<10;i++)
{n=-10+20*rand()/RAND_MAX;
fprintf(f1,"%d ",n);}
for(i=0;i<10;i++)
{n=-10+20*rand()/RAND_MAX;
fprintf(f2,"%d ",n);}
fcloseall();
if((f1=fopen("1.txt","r"))==NULL)
{perror("Erorr! Otkrytie fayla nevozmozhno!\n");
exit(0);}
if((f2=fopen("2.txt","r"))==NULL)
{perror("Erorr! Otkrytie fayla nevozmozhno!\n");
exit(0);}
if((f=fopen("main.txt","w"))==NULL)
{perror("Erorr! Otkrytie fayla nevozmozhno!\n");
exit(0);}
for(i=0;i<10;i++)
{
fscanf(f1,"%d",&n);
if(n>0)
fprintf(f,"%d ",n);
fscanf(f2,"%d",&n);
if(n>0)
fprintf(f,"%d ",n);
}
fcloseall();
if((f1=fopen("1.txt","r"))==NULL)
{perror("Erorr! Otkrytie fayla nevozmozhno!\n");
exit(0);}
if((f2=fopen("2.txt","r"))==NULL)
{perror("Erorr! Otkrytie fayla nevozmozhno!\n");
exit(0);}
if((f=fopen("main.txt","a"))==NULL)
{perror("Erorr! Otkrytie fayla nevozmozhno!\n");
exit(0);}
for(i=0;i<10;i++)
{
fscanf(f1,"%d",&n);
if(n<0)
fprintf(f,"%d ",n);
fscanf(f2,"%d",&n);
if(n<0)
fprintf(f,"%d ",n);
}
fcloseall();
return 0;
}
очень нужно разобраться что эта програма должна делать? Хотя бы в общих чертах?