Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <stdio.h>
- #include <clocale>
- #include <windows.h>
- struct adress
- {
- char gorod[20];
- char ulica[20];
- };
- class abitura
- {
- public:
- char surname[20];
- char name[20];
- char father_name[20];
- struct adress ad;
- int ocenki[3];
- double average;
- };
- int menu();
- int size = 0, i, j, q;
- abitura empty ;
- void vvod(abitura*& ABI);
- void see(abitura*& ABI);
- void del(abitura*& ABI);
- void change(abitura*& ABI);
- void find(abitura*& ABI);
- void sred(abitura*& ABI);
- void sort(abitura* ABI, int razmier, int x);
- int main()
- {
- SetConsoleCP(1251);
- SetConsoleOutputCP(1251);
- setlocale(LC_CTYPE, "rus");
- abitura* ABI = NULL;
- while (1)
- {
- switch (menu())
- {
- case 1: see(ABI); break;
- case 2: vvod(ABI); break;
- case 3: del(ABI); break;
- case 4: change(ABI); break;
- case 5: find(ABI); break;
- case 6: sred(ABI); break;
- case 7:return 0;
- }
- }
- return 0;
- }
- int menu()
- {
- system("cls");
- int choice;
- printf("Выберите, что ходите делать? \n 1.Просмотреть список \n 2.Ввести абитуриента\n 3.Удалить \n 4.Изменить\n 5.Найти \n 6.Средний балл\n 7.Выйти\n \n ");
- scanf_s("%d", &choice);
- return choice;
- }
- void vvod(abitura*& ABI)
- {
- system("cls");
- if (size == 0)
- {
- ABI = new abitura[size + 1];
- size++;
- }
- else
- {
- abitura* tmp = new abitura[size + 1];
- for (int i = 0; i < size; i++)
- tmp[i] = ABI[i];
- delete[]ABI;
- ABI = new abitura[size + 1];
- for (int i = 0; i < size + 1; i++)
- ABI[i] = tmp[i];
- size++;
- delete[]tmp;
- }
- gets_s(ABI[size - 1].surname);
- printf("Введите фамилию: \n ");
- gets_s(ABI[size - 1].surname);
- printf("Введите имя: \n");
- gets_s(ABI[size - 1].name);
- printf("Введите отчество: \n");
- gets_s(ABI[size - 1].father_name);
- printf("Введите адрес : \n");
- printf("-город: \n");
- gets_s(ABI[size - 1].ad.gorod);
- printf("-улицу: \n");
- gets_s(ABI[size - 1].ad.ulica);
- for (int j = 0; j < 3; j++)
- {
- printf("Введите %d-ую оценку \n", j + 1);
- scanf_s("%d", &ABI[size - 1].ocenki[j]);
- }
- ABI[size - 1].average = 0;
- printf("\n");
- system("pause");
- }
- void see(abitura*& ABI)
- {
- system("cls");
- int r;
- printf("\n");
- if (size == 0)
- {
- printf("В списке еще никого нет\n\n\n");
- }
- else
- {
- printf(" Введите номер абитуриента\n\n 0 - если нужно показать всех \n ");
- scanf_s("%d", &r);
- system("cls");
- if (r == 0)
- for (int i = 0; i < size; i++)
- {
- printf("%d. %s", i+1, ABI[i].surname);
- printf("\t");
- printf("%s", ABI[i].name);
- printf("\t");
- printf("%s", ABI[i].father_name);
- printf("\t");
- printf("%s", ABI[i].ad.gorod);
- printf("\t");
- printf("%s", ABI[i].ad.ulica);
- printf("\t");
- printf("\n");
- for (int j = 0; j < 3; j++)
- {
- printf("Оценка №%d = %d", j + 1, ABI[i].ocenki[j]);
- printf("\t");
- }
- printf("\n");
- printf("Средний балл абитуриента : % f", ABI[i].average);
- printf("\t");
- printf("\n");
- }
- else
- {
- printf("%d. %s",r, ABI[r - 1].surname);
- printf("\t");
- printf("%s", ABI[r - 1].name);
- printf("\t");
- printf("%s", ABI[r - 1].father_name);
- printf("\t");
- printf("%s", ABI[r - 1].ad.gorod);
- printf("\t");
- printf("%s", ABI[r - 1].ad.ulica);
- printf("\t");
- printf("\n");
- for (int j = 0; j < 3; j++)
- {
- printf("Оценка №%d = %d", j + 1, ABI[r - 1].ocenki[j]);
- printf("\t");
- }
- printf("\n");
- printf("Средний балл абитуриента : %f", ABI[r - 1].average);
- printf("\t");
- printf("\n");
- }
- printf("\n");
- }
- system("pause");
- }
- void del(abitura*& ABI)
- {
- system("cls");
- int r;
- printf(" Введите номер абитуриента, которого нужно удалить\n ");
- printf(" 0 - если нужно удалить весь список : ");
- scanf_s("%d", &r);
- if (r != 0)
- {
- if (r < size) {
- for (int i = r - 1; i < size; i++)
- ABI[i] = ABI[i + 1];
- size = size - 1;
- }
- else if (r == size) {
- ABI[r - 1] = empty;
- size--;
- }
- }
- else
- printf("Такого абитуриента нет");
- system("pause");
- }
- void change(abitura*& ABI)
- {
- system("cls");
- int r, p;
- printf(" Введите номер абитуриента у которого вы хотите что-то изменить : ");
- scanf_s("%d", &r);
- do {
- system("cls");
- printf(" Что именно вы хотите изменить? \n 1.Фамилию\n 2.Имя\n 3.Отчество\n 4.Город\n 5.Улицу\n 6.Оценки \n 7.Выход\n ");
- scanf_s("%d", &p);
- switch (p)
- {
- case 1: printf("Введите изменение: "); gets_s(ABI[r - 1].surname); gets_s(ABI[r - 1].surname); break;
- case 2: printf("Введите изменение: "); gets_s(ABI[r - 1].name); gets_s(ABI[r - 1].name); break;
- case 3: printf("Введите изменение: "); gets_s(ABI[r - 1].father_name); gets_s(ABI[r - 1].father_name); break;
- case 4: printf("Введите изменение: "); gets_s(ABI[r - 1].ad.gorod); gets_s(ABI[r - 1].ad.gorod); break;
- case 5: printf("Введите изменение: "); gets_s(ABI[r - 1].ad.ulica); gets_s(ABI[r - 1].ad.ulica); break;
- case 6: printf("Введите изменение: "); for (int j = 0; j < 3; j++) { scanf_s("%d", &ABI[r - 1].ocenki[j]); }; break;
- case 7:return;
- }
- } while (1);
- }
- void find(abitura*& ABI)
- {
- system("cls");
- int r;
- printf("Введите номер абитуриента, которого вы хотите найти: ");
- scanf_s("%d", &r);
- printf("%d. %s", r, ABI[r - 1].surname);
- printf("\t");
- printf("%s", ABI[r - 1].name);
- printf("\t");
- printf("%s", ABI[r - 1].father_name);
- printf("\t");
- printf("%s", ABI[r - 1].ad.gorod);
- printf("\t");
- printf("%s", ABI[r - 1].ad.ulica);
- printf("\t");
- printf("\n");
- for (int j = 0; j < 3; j++)
- {
- printf("Оценка №%d = %d", j + 1, ABI[r - 1].ocenki[j]);
- printf("\t");
- }
- printf("\n");
- printf("Средний балл абитуриента : %f", ABI[r - 1].average);
- printf("\t");
- printf("\n");
- printf("\n");
- system("pause");
- }
- void sred(abitura*& ABI)
- {
- int vybor;
- printf("3- Если хотите увидеть средний балл всех\n 0 - если хотите увидеть средний балл только минских абитуриентов : \n");
- scanf_s("%d",&vybor);
- if (vybor == 3) {
- for (int i = 0; i < size; i++)
- {
- int sum = 0;
- for (int j = 0; j < 3; j++)
- sum += ABI[i].ocenki[j];
- ABI[i].average = (double(sum) / 3);
- }
- sort(ABI, size-1, 0);
- for (int i = 0; i < size; i++)
- {
- printf("Средний балл %d-ого абитуриента : % f",i+1, ABI[i].average);
- printf("\n");
- printf("\t");
- }
- }
- system("pause");
- for (int i = 0; i < size; i++)
- if (ABI[i].ad.gorod == "Минск")
- {
- printf("\t");
- printf("%d.%s",i+1,ABI[i].surname);
- printf("\t");
- printf("%s",ABI[i].name);
- printf("\n");
- printf("Средний балл: %f",ABI[i].average);
- printf("\n");
- printf("\n");
- }
- }
- void sort(abitura*ABI, int razmier , int x)
- {
- int l = x, r = razmier, d = (l + r) / 2;
- while (l <= r)
- {
- while (ABI[l].average > ABI[d].average)
- l++;
- while (ABI[r].average < ABI[d].average)
- r--;
- if (l <= r)
- {
- empty = ABI[l];
- ABI[l] = ABI[r];
- ABI[r] = empty;
- }
- if (r > x)
- sort(ABI, r, x);
- if (l < size)
- sort(ABI, razmier, l);
- }
- printf("OK");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement