注意,以下代码不是我写的,我只是改了一些错误
程序代码:
#include <iostream>
#include <string>
using namespace std;
struct Person
{
string Name;
int a[5];
};
void socring( Person Arr[] )
{
for(int i=0;i<5;i++)
{
for(int j=1;j<5;j++)
{
for(int k=0;k<5-j;k++)
{
if( Arr[i].a[k]< Arr[i].a[k+1])
{
int n = Arr[i].a[k];
Arr[i].a[k] = Arr[i].a[k+1];
Arr[i].a[k+1] = n;
}
}
}
}
}
int main( void )
{
Person Arr[5];
for(int i=0;i<5;i++)
{
string name;
int b[5];
cin>>name;
Arr[i].Name=name;
for(int k=0;k<5;k++)
{
cin>>b[k];
Arr[i].a[k]=b[k];
}
}
socring( Arr );
cout << "-----------------------------\n";
for( size_t i=0; i!=5; ++i )
{
cout << Arr[i].Name;
for( size_t j=0; j!=5; ++j )
cout << ' ' << Arr[i].a[j];
cout << '\n';
}
}
注意,以上代码不是我写的,我只是改了一些错误
假如用正儿八经的C++写,那应该是
程序代码:
#include <iostream>
#include <string>
#include <algorithm>
struct Person
{
std::string name;
int a[5];
};
std::istream& operator>>( std::istream& is, Person& p )
{
Person t;
if( !(is>>t.name) )
return is;
for( auto& v : t.a )
if( !(is>>v) )
return is;
p = std::move(t);
return is;
}
std::ostream& operator<<( std::ostream& os, const Person& p )
{
os << p.name;
for( const auto& v : p.a )
os << ' ' << v;
return os;
}
template<size_t N>
void socring( Person (&Arr)[N] )
{
for( auto& p : Arr )
std::sort( std::begin(p.a), std::end(p.a), std::greater<decltype(p.a[0])>() );
}
using namespace std;
int main( void )
{
Person Arr[5];
for( auto& p : Arr )
cin >> p;
socring( Arr );
cout << "-----------------------------\n";
for( const auto& p : Arr )
cout << p << '\n';
}