Ce am gresit la acest algoritm? Iau doar 20p/100. (nu era necesar sa pun si z.. dar oricum asta nu se considera o greseala)
Cerinta :
Se dă o matrice cu n linii şi m coloane şi elemente numere naturale. Să se ordoneze liniile matricei crescător după suma elementelor.
Codul:
Anexe:
Răspunsuri la întrebare
Răspuns de
1
#include <iostream>
using namespace std;
int main()
{
int a[101][101],s[101],m,n;
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)cin>>a[i][j];
for(int i=1;i<=n;i++)
{
int sum=0;
for(int j=1;j<=m;j++) sum=sum+a[i][j];
s[i]=sum;
}
for(int i=1;i<n;i++)
for(int j=i+1;j<=n;j++)
if(s[i]>s[j])
{
int aux=s[i]; s[i]=s[j]; s[j]=aux;
for(int k=1;k<=m;k++)
{
aux=a[i][k]; a[i][k]=a[j][k]; a[j][k]=aux;
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
cout<<a[i][j]<<' ';
cout<<endl;
}
return 0;
}
using namespace std;
int main()
{
int a[101][101],s[101],m,n;
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)cin>>a[i][j];
for(int i=1;i<=n;i++)
{
int sum=0;
for(int j=1;j<=m;j++) sum=sum+a[i][j];
s[i]=sum;
}
for(int i=1;i<n;i++)
for(int j=i+1;j<=n;j++)
if(s[i]>s[j])
{
int aux=s[i]; s[i]=s[j]; s[j]=aux;
for(int k=1;k<=m;k++)
{
aux=a[i][k]; a[i][k]=a[j][k]; a[j][k]=aux;
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
cout<<a[i][j]<<' ';
cout<<endl;
}
return 0;
}
ionutg38:
Acesta e codul corect pentru sortarea liniilor dupa suma pe linie. Compari cele doua surse si vezi unde ai gresit.
Alte întrebări interesante
Limba română,
8 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă