Уважаемые программисты, проверьте пожалуйста этот код, вроде все правильно но не выводит сортировку. А еще большая просьба: может вы предложите более простой вариант решения задачи! Задание такое: описать структуру с именем STUDENT, содержащую следующие поля: а)фамилия и имя(строка 15 символов), б) год рождения(целое неотриц. число), в)номер группы( число целое или строка из 3 символов), г)оценки за сессию по 4 предметам( массив из 4 типа float) В этой программе, реализовать следующие функции:1)вывести список студентов, фамилии которых начинаются на букву В, с указанием года их рождения; список вывести в упорядоченном по возрасту виде(начиная со старшего).
| Код | #include <iostream> #include <string> #include <windows.h> using namespace std; struct STUDENT // структура STUDENT { string name; int year; int group; static const int mark_size=4; float marks[mark_size]; STUDENT(); STUDENT(const STUDENT &rhs); void input(){ cout << "Введите фамилию студента " << endl; cin >>name; cout<<" Год рождения "<<endl; cin>> year; cout << "Введите номер группы " << endl; cin >> group; cout << "Введите "<< mark_size <<" оценки " << endl; for (int i = 0; i < mark_size; i++) cin >> marks[i]; }
void output(){ cout << "Фамилия " << name<<endl; cout<< "Год " << year << endl; cout << "Группа " << group<< endl; cout <<" Oценки " << endl; for (int i = 0; i < mark_size; i++) cout << marks[i]<<" "; cout << endl <<"_______________" << endl; } };
STUDENT::STUDENT(){ name=""; year=0; group=0; for(int i=0; i<mark_size; ++i)marks[i]=0; }
STUDENT::STUDENT(const STUDENT &rhs){ name=rhs.name; year=rhs.year; group=rhs.group; for(int i=0; i<mark_size; ++i)marks[i]=rhs.marks[i]; }
int main (){ SetConsoleCP (1251); SetConsoleOutputCP (1251); const int students_size = 6; // количество студентов STUDENT student[students_size];//было students)) for (int i = 0; i < students_size; i++) student[i].input(); // cout<<"Введено:"<<endl<<endl; for (int i = 0; i < students_size; i++) student[i].output(); int count_of_B = 0; for (int i = 0; i < students_size; i++) if(student[i].name.c_str()[0] == 'В') count_of_B ++ ;
STUDENT *students = new STUDENT[count_of_B];
int ind =0; for (int i = 0; i < students_size; i++) if(student[i].name.c_str()[0] == 'В') students[ind ++ ] = student[i];
//дальше имя students нам уже подходит а вот размер //переписываем ниже все students_size на count_of_B)) for (int i=0; i<count_of_B-1; i++) { for (int j=0; j<(count_of_B-i); j++) { if ( students[j].year > students[j+1].year) {// STUDENT Temp = students[j];// students[j] = students[j+1]; students[j+1] = Temp; } } }
cout<<"Сортировано:"<<endl<<endl; for (int i = 0; i < count_of_B; i++) students[i].output(); system("pause"); return 0; }
|
Спасибо заранее! |