C++ сортировка
Добавлено: 07 июл 2010, 11:52
помогите пожалуста
вопрос №1
8.8. Дана матрица целых чисел X[5,5]. Упорядочить элементы строк по возрастанию, а сами строки по возрастанию суммы элементов строк (обменом).
у меня получилось вот это
оно компилируется и работает, но неправильно. Первое условие выполняется (упорядочивание элементов), а вот с упорядочиванием строк беда, подскажите пожалуста, что надо исправить и как?
Вопрос № 2
очень нужно разобраться что эта програма должна делать? Хотя бы в общих чертах?
вопрос №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;
}