Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- int strToInt(char c){
- if(c == 0)
- return 0;
- else
- return c - '0';
- }
- char intToStr(int c){
- if(c == 0)
- return '0';
- else
- return c + '0';
- }
- int bigger(int a, int b){
- return a > b ? a : b;
- }
- char *zapisVysledok(char *vysledok, char *temp){
- int i, j = strlen(temp) - 1;
- for(i = 0; i < strlen(temp); i++, j--)
- vysledok[i] = temp[j];
- return vysledok;
- }
- char *plus(char *cislo, char *vysledok){
- if (strlen(cislo) > strlen(vysledok)){
- char *temp = vysledok;
- vysledok = cislo;
- cislo = temp;
- }
- int cislolen = strlen(cislo), vysledoklen = strlen(vysledok), rozdiel = vysledoklen - cislolen;
- char *temp = (char*)calloc(vysledoklen + 1, sizeof(char));
- int zvysok = 0, sucet, i, j = 0;
- for (i = cislolen - 1; i >= 0; i--, j++){
- sucet = strToInt(cislo[i]) + strToInt(vysledok[i+rozdiel]) + zvysok;
- temp[j] = intToStr(sucet % 10);
- zvysok = sucet / 10;
- }
- for (i = rozdiel - 1; i >= 0; i--, j++){
- sucet = strToInt(vysledok[i]) + zvysok;
- temp[j] = intToStr(sucet % 10);
- zvysok = sucet / 10;
- }
- if (zvysok)
- temp[j] = intToStr(zvysok);
- return zapisVysledok(vysledok, temp);
- }
- char *krat(char *cislo, char *vysledok){
- printf("N1 = %s\n", cislo);
- printf("N2 = %s\n", vysledok);
- int i, j, cislolen = strlen(cislo), vysledoklen = strlen(vysledok), zvysok;
- int n1, n2, i_n1 = 0, i_n2 = 0, sucet;
- char *temp = (char*)calloc(bigger(cislolen, vysledoklen) * 2, sizeof(char));
- for (i = cislolen - 1; i >= 0; i--){
- zvysok = 0;
- n1 = strToInt(cislo[i]);
- i_n2 = 0;
- for (j = vysledoklen - 1; j >= 0; j--){
- printf("---------------------------------\n");
- n2 = strToInt(vysledok[j]);
- printf("n1 = %d\n", n1);
- printf("n2 = %d\n", n2);
- printf("i_n1 = %d\n", i_n1);
- printf("i_n2 = %d\n", i_n2);
- printf("ZVYSOK = %d\n", zvysok);
- sucet = n1 * n2 + strToInt(temp[i_n1 + i_n2]) + zvysok;
- printf("SUCET = %d\n", sucet);
- zvysok = sucet / 10;
- printf("ZVYSOK = %d\n", zvysok);
- temp[i_n1 + i_n2] = intToStr(sucet % 10);
- printf("TEMP[%d] = %d\n",i_n1+i_n2, sucet%10);
- i_n2++;
- }
- if (zvysok > 0)
- temp[i_n1 + i_n2] += intToStr(zvysok);
- i_n1++;
- }
- printf("TEMP = %s\n", temp);
- vysledok = zapisVysledok(vysledok, temp);
- return vysledok;
- }
- int main()
- {
- // sem napis svoje riesenie
- char znamienko[5], *cislo, *vysledok;
- cislo = (char*) calloc(1000, sizeof(char));
- vysledok = (char*) calloc(1000, sizeof(char));
- vysledok[0] = '0';
- while(scanf("%s %s\n", znamienko, cislo) == 2){
- printf("NACITAVAM = %s\n", vysledok);
- if(strcmp(znamienko, "plus") == 0)
- vysledok = plus(cislo, vysledok);
- else if(strcmp(znamienko, "krat") == 0){
- //printf("vyledok = %s\n", vysledok);
- printf("cislo = %s\n", cislo);
- //vysledok = krat(cislo, vysledok);
- }
- else
- continue;
- printf("%s\n", vysledok);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement