fork download
  1. #include <stdio.h>
  2.  
  3. /*ここを書く*/
  4. struct fract {
  5. int bunshi;
  6. int bunbo;
  7. };
  8.  
  9. int gcd(int m, int n)
  10. {
  11. int r;
  12. if (m < n) return gcd(n, m); /* 常に m > n にしておく */
  13. r = m % n; /* 余りrが.... */
  14. if (r == 0) return n; /* 0 なら n がGCD */
  15. return gcd(n, r); /* でなければnとrのGCD */
  16. }
  17.  
  18. struct fract wa(struct fract a, struct fract b) {
  19. a.bunshi = a.bunshi * b.bunbo + b.bunshi * a.bunbo;
  20. a.bunbo *= b.bunbo;
  21. return a;
  22. }
  23.  
  24. struct fract seki(struct fract a, struct fract b) {
  25. a.bunshi *= b.bunshi;
  26. a.bunbo *= b.bunbo;
  27. return a;
  28. }
  29.  
  30. struct fract yakubun(struct fract a) {
  31. int d;
  32. d = gcd(a.bunshi, a.bunbo);
  33. a.bunshi /= d;
  34. a.bunbo /= d;
  35. return a;
  36. }
  37.  
  38.  
  39. int main()
  40. {
  41. struct fract a1 = {1, 2}; /* 1/2を意味している */
  42. struct fract a2 = {2, 3}; /* 2/3を意味している */
  43. struct fract a3 = {3, 5}; /* 3/5を意味している */
  44. struct fract a4 = {10, 3}; /* 10/3を意味している */
  45. struct fract a5;
  46.  
  47. a5 = yakubun(seki(a3, seki(a4, wa(a3, wa(a1, a2)))));
  48.  
  49. printf("答:%d / %d \n", a5.bunshi, a5.bunbo);
  50. return 0;
  51. }
  52.  
Success #stdin #stdout 0.01s 1720KB
stdin
Standard input is empty
stdout
答:53 / 15