Задание: Ввести а и 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;
}
помогите пожалуйсто и по возможности исправьте, пожалуйсто, ошибки