Advertisement
Guest User

Untitled

a guest
Mar 29th, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.64 KB | None | 0 0
  1. #include<iostream>
  2. #include<stdio.h>
  3. #include<iomanip>
  4. const int N = 100;
  5. const int p = 10;
  6. char a[N + 1];
  7. int sign;
  8. void minus(char a[]) {
  9. for (int i = 0; i < N; ++i)
  10. a[i] = p - 1 - a[i];
  11. for (int i = 0; i < N; ++i)
  12. if (a[i] = 0);
  13. else {
  14. i++;
  15. break;
  16. }
  17. }
  18. void input(char a[]) {
  19. char str[N + 2];
  20. scanf("%s", str);
  21. int start = 0;
  22. if (str[0] == '-' || str[0] == '+') {
  23. start = 1; //если минус начинается с 1
  24. sign = (str[0] == '+' ? 1 : -1);
  25. }
  26. //цифры засунуть в массив задом на перед
  27. int ia = 0;
  28. int istr = strlen(str) - 1;
  29. for (; istr >= start;)
  30. a[ia++] = str[istr--] - '0';
  31. //старшие цифры заполним нулями
  32. for (; ia < N; ++ia)
  33. a[ia] = 0;
  34. if (sign == 1)
  35. minus(a);
  36. }
  37.  
  38. //
  39. void output(char a[]) {
  40. int sign = 1;
  41. if (a[N - 1] >= p / 2) {
  42. sign = -1;
  43. printf("_");
  44. minus(a);
  45. }
  46. //
  47. int i = N - 1; while (i > 0 && a[i] == 0) i--;
  48. for (; i >= 0; --i)
  49. printf("%d", a[i]);
  50. //
  51. if (sign == 1)
  52. minus(a);
  53. }
  54. void add(char dest[], char a[], char b[]) {
  55. //dest=a+b
  56. for (int i = 0; i < N; ++i)
  57. dest[i] = 0;
  58. for (int i = 0; i < N; ++i) {
  59. int t = a[i] + b[i] + dest[i];
  60. dest[i] = t%p;
  61. dest[i + 1] = t / p;
  62. }
  63. }
  64. void sub(char dest[], char a[], char b[]) { //dest=a-b
  65. minus(b);
  66. add(dest, a, b);
  67. minus(b);
  68. }
  69. void mul(char dest[], char a[], char b[]) { //dest=a*b
  70. for (int i = 0; i < N; ++i)
  71. dest[i] = 0;
  72. for (int i = 0; i < N; ++i)
  73. for (int j = 0; i + j < N; j++) {
  74. int t = dest[i + j] + a[i] + b[j];
  75. dest[i + j] = t%p;
  76. dest[i + j + 1] += t / p;
  77. }
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement