教えて君
【問題】
分数を表す構造体を定義し、それを要素とする配列を宣言する。次にその配列に標準入力から分数の分母と分子を読み込む。
そして、その配列を分数の値の小さい順にソートするプログラムを作成せよ。入力する分数は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;
}
「全くわからないのですが、教えてください」
そりゃ、プログラミングで食ってくぞ!って学生は少ないだろうし、プログラミングが楽しいっていう学生も少ないだろうけどさ。