
05.06.2010, 14:28
|
|
Новичок
Регистрация: 02.01.2010
Сообщений: 26
Провел на форуме: 33560
Репутация:
15
|
|
Сообщение от Lerr777
народ,кто нибудь может помочь с постом#2792 и#2793.С меня++++++
Задача про студентов . . .
PHP код:
#include <iostream>
#include <string>
using namespace std;
const int C = 3;
struct Student{
string _name;
int _group;
double _mark[C];
};
int Start();
void CreateBasa(Student *&Basa, int N);
template <typename T> void Sort(Student *&Basa, int N, T symbol);
bool cmp(Student first, Student last, char c);
bool cmp(Student first, Student last, int c);
bool cmp(Student first, Student last, double c);
int Print(Student *Basa, int N);
int PrintBasa(Student *Basa, int N);
int main(){
setlocale(LC_CTYPE,".1251");
Start();
return 0;
}
//-----------------------
int Start(){
int N = 0;
cout << "Сколько студентов в базе: ";
cin >> N;
Student *Basa = new Student[N];
CreateBasa(Basa,N);
Sort(Basa,N,1.0);
PrintBasa(Basa,N);
Print(Basa,N);
delete[] Basa;
return 0;
}
//------------------------
void CreateBasa(Student *&Basa, int N){
for(int i = 0; i < N; i++){
cout << "Имя студента: ";
cin >> Basa[i]._name;
cout << "Номер группы: ";
cin >> Basa[i]._group;
cout << "Оценки по предметам: ";
for(int j = 0; j < C; j++){
cout << "Оценка по предмету: ";
cin >> Basa[i]._mark[j];
}
}
}
//------------------------
template <typename T>
void Sort(Student *&Basa, int N, T symbol){
bool fl;
do{
fl = false;
for(int i = 0; i < N-1; i++){
if( cmp(Basa[i],Basa[i+1],symbol) ){
Student tmp = Basa[i];
Basa[i] = Basa[i+1];
Basa[i+1] = tmp;
fl = true;
}
}
}while(fl);
}
//---------------------
bool cmp(Student first, Student last, char c){
if(first._name > first._name){
return true;
}
return false;
}
//---------------------
bool cmp(Student first, Student last, int c){
if(first._group> last._group){
return true;
}
return false;
}
//---------------------
bool cmp(Student first, Student last, double c){
double FRes = 0.0, LRes = 0.0;
for(int i = 0; i < C; i++){
FRes += first._mark[i];
LRes += last._mark[i];
}
if(FRes > LRes){
return true;
}
return false;
}
//---------------
int Print(Student *Basa, int N){
double Good = 4.0;
bool flag = true, fl = true;
for(int i = 0; i < N; i++){
for(int j = 0; j < C; j++){
if(Basa[i]._mark[j] < Good){
flag = false; break;
}
}
if(flag){
cout << Basa[i]._name << " " << Basa[i]._group << endl;
fl = false;
}
flag = true;
}
if(fl){ cout << "\"Хороших\" студентов нет" << endl; }
return 0;
}
//-----------------
int PrintBasa(Student *Basa, int N){
for(int i = 0; i < N; i++){
cout << Basa[i]._name << " " << Basa[i]._group << " ";
for(int j = 0; j < C; j++)
cout << Basa[i]._mark[j] << " ";
cout << endl;
}
return 0;
}
Сортировку "Пузырек" можешь заменить на более быструю сортировку, писал просто для примера или задачу надо было писать на классах?
|
|
|