Сортировка с использованием массивов Structure - PullRequest
0 голосов
/ 20 ноября 2018

Итак, я хочу отсортировать список, чтобы я мог дать им их позицию в соответствии с их оценками, но это не работает.

Отображается ошибка вроде: несовместимые типы при назначении типу char из типа struct info .

ps: я пытаюсь выполнить эту сортировку с помощью Structures.

#include <stdio.h>
#define SIZE 3

struct info {
    char name[20];
    int number;
    double grade;
};
int main(void) {
    struct info list[SIZE];
    int i, j;
    char temp;
    int avg;
    for (i = 0; i < SIZE; i++) {
        printf("Enter your name : ");
        scanf("%s", list[i].name);
        printf("Enter your number : ");
        scanf("%d", & list[i].number);
        printf("Enter your grade : ");
        scanf("%lf", & list[i].grade);
    }
    for (i = 0; i < SIZE; i++) {
        printf("Name : %s  Student Number : %d  Grade : %f", list[i].name,
            list[i].number, list[i].grade);
        printf("\n");
    }
    for (i = 0; i < SIZE; i++) {
        for (j = i + 1; j < SIZE; j++) {
            if (list[j].grade > list[i].grade) {
                temp = list[j];
                list[j] = list[i];
                list[i] = temp;
            }
        }
    }
    for (i = 0; i < SIZE; i++) {
        printf("%d st Position : Name : %s  Student Number : %d  Grade :  %f ",i, 
            list[i].name, list[i].number, list[i].grade);
        printf("\n");
    }
    avg = 0;
    for (i = 0; i < SIZE; i++)
        avg += list[i].grade;
    avg = avg / 3;
    printf("Average is %d", avg);
    getch();
    return 0;
}

ошибки в следующем коде:

for(i=0;i<SIZE;i++) {
    for(j=i+1;j<SIZE;j++) {
        if(list[j].grade>list[i].grade) {
            temp=list[j];
            list[j]=list[i];
            list[i]=temp;
        }
    }
}

1 Ответ

0 голосов
/ 20 ноября 2018

Вы присваиваете тип char с именем temp и пытаетесь присвоить ему struct.Вместо этого создайте struct temp, а затем отсортируйте ваш массив структур.

#include <stdio.h>
#define SIZE 3

struct info { // use typedef struct info instead
    char name[20];
    int number;
    double grade;
};
int main(void) {
    struct info list[SIZE]; // allows you to write info list[size]
    int i, j; // do not initialize loop variables outside of their loops unless you need to(makes it easier to read the loop statements/spot mistakes)
    char temp; // you need to use a type info, not char e.g. info temp

В данный момент я не могу сам скомпилировать его, поэтому, пожалуйста, сообщите нам в комментариях, если у вас есть какие-либо дополнительные вопросы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...