fork download
  1. /*
  2. Scrieti un program care calculeaza suma a doua fractii. Cele doua fractii de insumat se introduc de la tastatura si rezultatul se
  3. va scrie ca o operatie de fractii ireductibile ca in exemplele de mai jos. Daca se introduce o valoare zero pentru numitor, atunc
  4. se va cere o alta valoare pana cand aceasta va fi nenula. Se va lucra cu numere naturale pozitive pentru numaratori si numitori din
  5. intervalul [1,80000];
  6.  
  7. Input:
  8. Introduceti cele doua fractii:
  9.  
  10. Fractie#1:
  11. Numaratorul = 2
  12. Numitorul = 3
  13. Fractie#2:
  14. Numaratorul = 9
  15. Numitorul = 19
  16. Fractie#suma:
  17. 2/3+1/2=7/6
  18.  
  19. */
  20. #include <stdio.h>
  21.  
  22. typedef struct Fraction {
  23. int nr,
  24. num;
  25. } TFraction;
  26.  
  27. int euclid(int a, int b) {
  28. int r;
  29. while(b){
  30. r = a%b;
  31. a = b;
  32. b = r;
  33. }
  34. return a;
  35. }
  36.  
  37. void display(TFraction f){
  38. printf("%d/%d\n",f.nr,f.num);
  39. }
  40.  
  41. void simplify(TFraction *p) {
  42. int gcd = euclid(p->nr, p->num);
  43. p->nr = p->nr/gcd;
  44. p->num = p->num/gcd;
  45. }
  46.  
  47. void read(TFraction*p){
  48. printf("Nr=");
  49. scanf("%d",&p->nr);
  50. printf("Num=");
  51. while(scanf("%d",&p->num) && !p->num )
  52. printf("The denominator must be !=0. Again!");
  53. simplify(p);
  54. }
  55.  
  56. void sum(TFraction f1, TFraction f2, TFraction *p) {
  57. p->nr = f1.nr * f2.num + f2.nr * f1.num;
  58. p->num = f1.num * f2.num;
  59. simplify(p);
  60. }
  61.  
  62. int main(int argc, char const *argv[]) {
  63. TFraction F1,F2,FSum;
  64. printf("Fraction#1:\n");
  65. read(&F1);
  66. display(F1);
  67. printf("Fraction#2:\n");
  68. read(&F2);
  69. display(F2);
  70. sum(F1,F2,&FSum);
  71. printf("%s","Fraction#Sum = ");
  72. display(FSum);
  73. printf("%d/%d+%d/%d=%d/%d\n",F1.nr, F1.num, F2.nr, F2.num,FSum.nr, FSum.num);
  74. return 0;
  75. }
  76.  
Success #stdin #stdout 0s 5396KB
stdin
8
10
4
20
stdout
Fraction#1:
Nr=Num=4/5
Fraction#2:
Nr=Num=1/5
Fraction#Sum = 1/1
4/5+1/5=1/1