Advertisement
Guest User

BS

a guest
Nov 17th, 2017
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.08 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4.  
  5. int strToInt(char c){
  6. if(c == 0)
  7. return 0;
  8. else
  9. return c - '0';
  10. }
  11.  
  12. char intToStr(int c){
  13. if(c == 0)
  14. return '0';
  15. else
  16. return c + '0';
  17. }
  18.  
  19. int bigger(int a, int b){
  20. return a > b ? a : b;
  21. }
  22.  
  23. char *zapisVysledok(char *vysledok, char *temp){
  24. int i, j = strlen(temp) - 1;
  25. for(i = 0; i < strlen(temp); i++, j--)
  26. vysledok[i] = temp[j];
  27.  
  28. return vysledok;
  29. }
  30.  
  31.  
  32. char *plus(char *cislo, char *vysledok){
  33. if (strlen(cislo) > strlen(vysledok)){
  34. char *temp = vysledok;
  35. vysledok = cislo;
  36. cislo = temp;
  37. }
  38.  
  39. int cislolen = strlen(cislo), vysledoklen = strlen(vysledok), rozdiel = vysledoklen - cislolen;
  40. char *temp = (char*)calloc(vysledoklen + 1, sizeof(char));
  41. int zvysok = 0, sucet, i, j = 0;
  42.  
  43. for (i = cislolen - 1; i >= 0; i--, j++){
  44. sucet = strToInt(cislo[i]) + strToInt(vysledok[i+rozdiel]) + zvysok;
  45. temp[j] = intToStr(sucet % 10);
  46. zvysok = sucet / 10;
  47. }
  48.  
  49. for (i = rozdiel - 1; i >= 0; i--, j++){
  50. sucet = strToInt(vysledok[i]) + zvysok;
  51. temp[j] = intToStr(sucet % 10);
  52. zvysok = sucet / 10;
  53. }
  54.  
  55. if (zvysok)
  56. temp[j] = intToStr(zvysok);
  57.  
  58. return zapisVysledok(vysledok, temp);
  59. }
  60.  
  61. char *krat(char *cislo, char *vysledok){
  62. printf("N1 = %s\n", cislo);
  63. printf("N2 = %s\n", vysledok);
  64. int i, j, cislolen = strlen(cislo), vysledoklen = strlen(vysledok), zvysok;
  65. int n1, n2, i_n1 = 0, i_n2 = 0, sucet;
  66.  
  67. char *temp = (char*)calloc(bigger(cislolen, vysledoklen) * 2, sizeof(char));
  68.  
  69. for (i = cislolen - 1; i >= 0; i--){
  70. zvysok = 0;
  71. n1 = strToInt(cislo[i]);
  72. i_n2 = 0;
  73.  
  74.  
  75.  
  76. for (j = vysledoklen - 1; j >= 0; j--){
  77. printf("---------------------------------\n");
  78. n2 = strToInt(vysledok[j]);
  79. printf("n1 = %d\n", n1);
  80. printf("n2 = %d\n", n2);
  81. printf("i_n1 = %d\n", i_n1);
  82. printf("i_n2 = %d\n", i_n2);
  83. printf("ZVYSOK = %d\n", zvysok);
  84. sucet = n1 * n2 + strToInt(temp[i_n1 + i_n2]) + zvysok;
  85. printf("SUCET = %d\n", sucet);
  86. zvysok = sucet / 10;
  87. printf("ZVYSOK = %d\n", zvysok);
  88. temp[i_n1 + i_n2] = intToStr(sucet % 10);
  89. printf("TEMP[%d] = %d\n",i_n1+i_n2, sucet%10);
  90. i_n2++;
  91. }
  92.  
  93. if (zvysok > 0)
  94. temp[i_n1 + i_n2] += intToStr(zvysok);
  95.  
  96. i_n1++;
  97. }
  98. printf("TEMP = %s\n", temp);
  99. vysledok = zapisVysledok(vysledok, temp);
  100.  
  101. return vysledok;
  102. }
  103.  
  104. int main()
  105. {
  106. // sem napis svoje riesenie
  107. char znamienko[5], *cislo, *vysledok;
  108. cislo = (char*) calloc(1000, sizeof(char));
  109. vysledok = (char*) calloc(1000, sizeof(char));
  110. vysledok[0] = '0';
  111.  
  112. while(scanf("%s %s\n", znamienko, cislo) == 2){
  113. printf("NACITAVAM = %s\n", vysledok);
  114. if(strcmp(znamienko, "plus") == 0)
  115. vysledok = plus(cislo, vysledok);
  116. else if(strcmp(znamienko, "krat") == 0){
  117. //printf("vyledok = %s\n", vysledok);
  118. printf("cislo = %s\n", cislo);
  119. //vysledok = krat(cislo, vysledok);
  120. }
  121. else
  122. continue;
  123.  
  124. printf("%s\n", vysledok);
  125. }
  126.  
  127. return 0;
  128. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement