既約分数に変換
#include <stdio.h> #include <ctype.h> #include <math.h> void tofraction(char *); long power10(int n); int gcd(long x, long y); int main(void) { char *str = "-0.125"; tofraction(str); return 0; } void tofraction(char *str) { long numerator = 0; long denominator; int flag = 0; int n = 0; int k = 0; long measure; while(*str != '\0'){ if(isdigit(*str)){ numerator *= 10; numerator += *str - '0'; if (flag == 1) n++; if (flag == 2) k++; }else if(*str == '.'){ flag = 1; }else if(*str == '{'){ flag = 2; } str++; } if(flag != 2) { denominator = power10(n); }else{ denominator = power10(n) * (power10(k) - 1); numerator -= numerator / power10(k); } measure = gcd(numerator, denominator); numerator /= measure; denominator /= measure; printf("= %ld/%ld\n", numerator, denominator); } long power10(int n) { return (int)(pow(10, n)); } int gcd(long x, long y) { if(y != 0) return gcd(y,x%y); else return x; }
平成20年春季基本情報技術者試験
とりあえず、なるものはなる!として考えれば、大した問題じゃない。
でも、なんでだろうねぇ。
半年くらいかけてFEの勉強やるんだろうけど、ぶっちゃけもう3ヶ月しかない件について。