Advertisement
Guest User

Untitled

a guest
Mar 1st, 2015
220
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.51 KB | None | 0 0
  1. #include <iomanip>
  2. #include <iostream>
  3. #include <math.h>
  4. #include <locale>
  5. #include <fstream>
  6.  
  7. using namespace std;
  8. int ch1, ch2, zn1, zn2, ch3, zn3, b;
  9. char znak1, znak2, znak3, func, a;
  10. ifstream f("Text.txt");
  11.  
  12. int NOD(int ch3, int zn3)
  13. {
  14. ch3 = abs(ch3);
  15. zn3 = abs(zn3);
  16. while ((ch3>0) && (zn3>0))
  17. if (ch3 > zn3)
  18. ch3 %= zn3;
  19. else
  20. zn3 %= ch3;
  21. return zn3 + ch3;
  22. }
  23. void vvod_pervog(int &ch1, int &zn1, char &znak1, char &a, int &b)
  24. {
  25. if ((a == '+') || (a == '-'))
  26. {
  27. znak1 = a;
  28. f >> b;
  29. ch1 = b;
  30. }
  31. else
  32. b = a - '0';
  33. ch1 = b;
  34. f >> b;
  35. zn1 = b;
  36. if (znak1 == '-')
  37. ch1 *= -1;
  38. }
  39. void vvod(int &ch2, int &zn2, char &znak2, char &func, char &a, int &b)
  40. {
  41. f >> a;
  42. func = a;
  43. f >> a;
  44. if ((a == '+') || (a == '-'))
  45. {
  46. znak2 = a;
  47. f >> b;
  48. ch2 = b;
  49. }
  50. else
  51. b = a - '0';
  52. ch2 = b;
  53. f >> b;
  54. zn2 = b;
  55. if (znak2 == '-')
  56. ch2 *= -1;
  57. }
  58. void vivod(int &ch1, int ch2, int &ch3, int &zn1, int zn2, int &zn3, char func, char znak1, char znak2, char znak3, char a)
  59. {
  60. if ((zn1 && zn2 && zn3) != 0)
  61.  
  62. {
  63. if (a != '=')
  64. {
  65. if (func == '/')
  66. cout << ch1 << "/" << zn1 << ":" << ch2 << "/" << zn2 << " = ";
  67. else
  68. cout << ch1 << "/" << zn1 << func << ch2 << "/" << zn2 << " = ";
  69. switch (func)
  70. {
  71. case '+': cout << "(" << zn2*ch1 << "+" << zn1*ch2 << ")/" << zn3 << " = " << ch3 << "/" << zn3;
  72. break;
  73. case '-': cout << "(" << zn2*ch1 << "-" << zn1*ch2 << ")/" << zn3 << " = " << ch3 << "/" << zn3;
  74. break;
  75. case '*': cout << ch1 << "*" << ch2 << " * " << "(" << zn1 << "*" << zn2 << ")/" << zn3 << " = " << ch3 << "/" << zn3;
  76. break;
  77. case '/': cout << ch1 << "*" << zn2 << " : " << "(" << zn1 << "*" << ch2 << ")" << " = " << ch3 << "/" << zn3;
  78. break;
  79. }
  80. int i = NOD(ch3, zn3);
  81. ch3 /= i;
  82. zn3 /= i;
  83. cout << " = " << ch3 << "/" << zn3 << endl;
  84. }
  85. else
  86. cout << "Ответ:" << ch3 << "/" << zn3 << endl;
  87. }
  88. else
  89. cout << "В файле найдено деление на 0!" << endl;
  90. }
  91. void summa(int &ch1, int ch2, int &zn1, int zn2,int &ch3, int &zn3)
  92. {
  93. zn3 = zn1*zn2;
  94. ch3 = (zn2*ch1) + (zn1*ch2);
  95. vivod(ch1, ch2, ch3, zn1, zn2, zn3, func, znak1, znak2, znak3, a);
  96. ch1 = ch3;
  97. zn1 = zn3;
  98. }
  99. void vichet(int &ch1, int ch2, int &zn1, int zn2, int &ch3, int &zn3)
  100. {
  101. zn3 = zn1*zn2;
  102. ch3 = (zn2*ch1) - (zn1*ch2);
  103. vivod(ch1, ch2, ch3, zn1, zn2, zn3, func, znak1, znak2, znak3, a);
  104. ch1 = ch3;
  105. zn1 = zn3;
  106. }
  107. void delen(int &ch1, int ch2, int &zn1, int zn2, int &ch3, int &zn3)
  108. {
  109. ch3 = ch1*zn2;
  110. zn3 = zn1*ch2;
  111. if ((zn3 < 0) && (ch3<0))
  112. {
  113. zn3 *= -1;
  114. }
  115. else
  116. if (zn3 < 0)
  117. {
  118. ch3 *= -1;
  119. zn3 *= -1;
  120. }
  121. vivod(ch1, ch2, ch3, zn1, zn2, zn3, func, znak1, znak2, znak3, a);
  122. ch1 = ch3;
  123. zn1 = zn3;
  124. }
  125. void umnozh(int &ch1, int ch2, int &zn1, int zn2, int &ch3, int &zn3)
  126. {
  127. ch3 = ch1*ch2;
  128. zn3 = zn1*zn2;
  129. vivod(ch1, ch2, ch3, zn1, zn2, zn3, func, znak1, znak2, znak3, a);
  130. ch1 = ch3;
  131. zn1 = zn3;
  132. }
  133. void main()
  134. {
  135. setlocale(LC_ALL, "rus");
  136. f >> a;
  137. vvod_pervog(ch1, zn1, znak1, a, b);
  138. vvod(ch2, zn2, znak2, func, a, b);
  139. while ((a != '=') && ((zn1 && zn2)!=0))
  140. {
  141. switch (func)
  142. {
  143. case '+': summa(ch1, ch2, zn1, zn2,ch3,zn3);
  144. break;
  145. case '-':vichet(ch1, ch2, zn1, zn2, ch3, zn3);
  146. break;
  147. case '/':delen(ch1, ch2, zn1, zn2, ch3, zn3);
  148. break;
  149. case '*':umnozh(ch1, ch2, zn1, zn2, ch3, zn3);
  150. break;
  151. }
  152. vvod(ch2, zn2, znak2, func, a, b);
  153. }
  154.  
  155. vivod(ch1, ch2, ch3, zn1, zn2, zn3, func, znak1, znak2, znak3, a);
  156. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement