教えて君 | spin on the RITZ

教えて君

【問題】

分数を表す構造体を定義し、それを要素とする配列を宣言する。次にその配列に標準入力から分数の分母と分子を読み込む。
そして、その配列を分数の値の小さい順にソートするプログラムを作成せよ。入力する分数は3つですべて分子は整数、かつ分母は正の整数とする。



#include <stdio.h>
#include <stdlib.h>

typedef struct {
    int den;
    int num;
} Fraction;

int cmp(const void* a, const void* b)
{
    Fraction aa = *(Fraction*)a;
    Fraction bb = *(Fraction*)b;

    if (aa.den==bb.den && aa.num==bb.num)
        return 0;
    else if ((double)aa.num/aa.den - (double)bb.num/bb.den > 0)
        return 1;
    else
        return -1;
}

int main(void)
{
    Fraction array[3];
    int i;

    array[0].num = 3; array[0].den = 7;
    array[1].num = 1; array[1].den = 3;
    array[2].num = 2; array[2].den = 5;

    printf("before\n");
    for (i = 0;i < 3;i++)
        printf("%d/%d ", array[i].num, array[i].den);
    qsort(array, 3, sizeof(Fraction), cmp);
    printf("\nafter\n");
    for (i = 0;i < 3;i++)
        printf("%d/%d ", array[i].num, array[i].den);

    return 0;
}




「全くわからないのですが、教えてください」

そりゃ、プログラミングで食ってくぞ!って学生は少ないだろうし、プログラミングが楽しいっていう学生も少ないだろうけどさ。