Отсортировать студентов по оценке по первому предмету. Вывести на экран фамилии и даты рождения студентов, не получивших за все время обучения ни одной оценки 5. N = 5. Программу нужно написать в visual studio по подобию кода ниже (который в visual не работает):
#include
#include
#include
#include
#include
#include
using namespace std;
/* Описание прототипов функций */
void printru(char* s);
int sozd_f(char* filename);
int dob_dan(char* filename);
void vivod_dan(char* filename);
void sort_dan(char* filename);
/* Описание структуры, которая представляет монастырь */
struct mon {
char name[15]; /* название */
char sc; /* школа */
int cnt; /* количество монахов */
float sq; /* площадь */
};
main() {
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int v;
char filename[] = "monastir.bin";
while (true){
cout<<"Выберите действие: \n";
cout<<"1: создать файл \n";
cout<<"2: добавить данные \n";
cout<<"3: вывести данные на экран \n";
cout<<"4: отсортировать по названиям монастырей \n";
cout<<"5: выйти \n";
cin>>v;
switch (v){
case 1: sozd_f(filename); break;
case 2: dob_dan(filename);break;
case 3: vivod_dan(filename); break;
case 4: sort_dan(filename);
vivod_dan(filename); break;
case 5: return 0;
default: cout<<"нeт такого пункта меню\n";
};
}
return 0;
}
//функция создания файла
int sozd_f(char* filename){
FILE *m_file;
m_file = fopen(filename, "w+");
if ( m_file==0 ) {
cout<<"Создать файл не удалось!\n";
return (1);
}
fclose(m_file);
}
//функция добавления данных
int dob_dan(char* filename) {
FILE *m_file;
char y_n;
struct mon x;
int tt;
m_file = fopen(filename, "ab");
if ( m_file==0 ) {
cout<<"Открыть файл не удалось!\n";
return(1);
}
do {
tt=0;
// Ввод данных
cout<<"Введите: название, школу, количество , площадь монастыря\n";
cin>> x.name;
cin>> x.sc;
cin>> x.cnt;
cin>> x.sq;
fwrite((char *) &x, sizeof(mon),1,m_file);
cout<<"Продолжить(y/n)?\n";
cin>>y_n;
if (y_n=='y'||y_n=='Y') tt=1;
} while(tt==1);
fclose(m_file);
}
//функция вывода данных на экран
void vivod_dan(char* filename){
FILE *m_file;
m_file = fopen(filename, "r");
cout<<"\n";
cout<<"| монастыри |\n";
cout<<"||\n";
cout<<"| название | школа | Количество | Площадь |\n";
cout<<"| | | монахов | земель |\n";
cout<<"|||||\n";
fseek(m_file, 0, SEEK_END);
int n = ftell(m_file) / sizeof(mon);
mon *mm = new mon[n];
fseek(m_file, 0, SEEK_SET);
// Функция fread позволяет считать весь файл за одно обращение
fread(mm, sizeof(mon), n, m_file);
fclose(m_file);
for(int i=0;i 0) m=j;
if (m>i) {
strcpy(x.name,mm[i].name);
x=mm[i];
mm[i]=mm[m];
mm[m]=x;
}
}
fopen(filename, "w");
fwrite(mm, sizeof(mon), n, m_file);
fclose(m_file);
}
Задача на c++, с структур