Задание: Ввести а и b - два массива структур. Каждая структура содержит сведения о студентах (ФИО, номер группы, изучаемые дисциплины, успеваемость и т.п.). Отсортировать элементы массива а по ФИО, а элементы b по успеваемости. Результат вывести на экран. Работу с массивами организовать через указатели. Поиск осуществлять отдельной пользовательской функцией
Не знаю как осуществить работу через указатели и отсортировать массив А по ФИО 
Код С:
| Код | #include <stdio.h> #include <iostream> const int n=10; int size=0; typedef struct a{ char FIO[3]; int Numbgr; char Disc[n]; int ocen; }sta; sta masA[100]; typedef struct b{ char FIO[3]; int Numbgr; char Disc[n]; int ocen; }stb; stb masB[100]; void inputA(int size) { for(int i = 0; i < size; i++) { do { printf("\n FIO:"); printf("\n Familija "); scanf("%s", &masA[i].FIO[0]); printf("\n Imja "); scanf("%s", &masA[i].FIO[1]); printf("\n Otchestvo "); scanf("%s", &masA[i].FIO[2]); }while(!strcmp(masA[i].FIO, ""));// выполняется пока строчка не пуста printf("\n Numbgr:"); scanf("%d", &masA[i].Numbgr); do { printf("\nDiscipliny: "); scanf("%s", &masA[i].Disc); }while(!strcmp(masA[i].Disc, "")); printf("\nOcenki: "); scanf("%s", &masA[i].ocen); } } void inputB(int size) { for(int i = 0; i < size; i++) { do { printf("\n FIO:"); printf("\n Familija "); scanf("%s", &masB[i].FIO[0]); printf("\n Imja "); scanf("%s", &masB[i].FIO[1]); printf("\n Otchestvo "); scanf("%s", &masB[i].FIO[2]); }while(!strcmp(masB[i].FIO, ""));// выполняется пока строчка не пуста printf("\n Numbgr:"); scanf("%d", &masB[i].Numbgr); do { printf("\nDiscipliny: "); scanf("%s", &masB[i].Disc); }while(!strcmp(masB[i].Disc, "")); printf("\nOcenki: "); scanf("%s", &masB[i].ocen); } } void sortByPrice(int size) { //Сортировка методом выбора double tmp; int i, j, pos; for(i = 0; i < size; ++i) { pos = i; tmp = masB[i].ocen; for(j = i + 1; j < size; ++j) { if (masB[j].ocen < tmp) { pos = j; tmp = masB[j].ocen; } } masB[pos].ocen = masB[i].ocen; masB[i].ocen = tmp; } } void showA(int size){ printf("+---------------+--------+---------------+---------------+----------+\n"); printf("+-----FIO-----+--Numbgr--+---Disc----+---Ocen---+\n"); printf("+ + + + +\n"); for(int i = 0; i < size; i++) { printf("+%-2d.%-2d.%-2d|%-8.2lf|%-15s|%-15s +\n", masA[i].FIO[0], masA[i].FIO[1], masA[i].FIO[2], masA[i].Numbgr, masA[i].Disc, masA[i].ocen);} printf("+---------------+---------------+---------------+----------+\n"); } void showA(int size){ printf("+---------------+--------+---------------+---------------+----------+\n"); printf("+-----FIO-----+--Numbgr--+---Disc----+---Ocen---+\n"); printf("+ + + + +\n"); for(int i = 0; i < size; i++) { printf("+%-2d.%-2d.%-2d|%-8.2lf|%-15s|%-15s +\n", masA[i].FIO[0], masA[i].FIO[1], masA[i].FIO[2], masA[i].Numbgr, masA[i].Disc, masA[i].ocen);} printf("+---------------+---------------+---------------+----------+\n"); } void showB(int size){ printf("+---------------+--------+---------------+---------------+----------+\n"); printf("+-----FIO-----+--Numbgr--+---Disc----+---Ocen---+\n"); printf("+ + + + +\n"); for(int i = 0; i < size; i++) { printf("+%-2d.%-2d.%-2d|%-8.2lf|%-15s|%-15s +\n", masB[i].FIO[0], masB[i].FIO[1], masB[i].FIO[2], masB[i].Numbgr, masB[i].Disc, masB[i].ocen);} printf("+---------------+---------------+---------------+----------+\n"); } int main (void){ printf("Vvedite kol-voctudentov? "); scanf("%d", &size); inputA(size); inputB(size); sortByPrice(size); showA(size); showB(size); getchar (); getchar (); return 0; }
|
|