Guest User

Untitled

a guest
Apr 25th, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.95 KB | None | 0 0
  1. string soucin(int cislo1[], int cislo2[], int velikost)
  2. {
  3.     vector <string> seznamSoucinu;
  4.  
  5.     string vysledek;
  6.     string buffer;
  7.     int    rozsah;
  8.     int    meziVysledek;
  9.     bool   posun = false;
  10.  
  11.     int    zvetsitO = 0;
  12.  
  13.     stringstream ss;
  14.  
  15.     vysledek.clear();
  16.     buffer.clear();
  17.    
  18.     // cyklus pro roznasobeni jednotlivich cisel
  19.     for (int i = velikost, cnt = 0; i > 0; i--, cnt++) {
  20.         for (int j = velikost; j > 0; j--) {
  21.            
  22.             meziVysledek = cislo1[j - 1] * cislo2[i - 1];
  23.  
  24.             // cislo je vtesi jak 10 budeme pricitat hodnotu
  25.             if (posun == true) {
  26.                 meziVysledek += zvetsitO;
  27.  
  28.                 posun    = false;
  29.                 zvetsitO = 0;
  30.             }
  31.  
  32.             // kontrola zda je cislo vetsi jak 10, a nataveni o kolik se bude pricitat
  33.             if (meziVysledek >= 10) {
  34.  
  35.                 zvetsitO     = meziVysledek / 10;
  36.                 meziVysledek = meziVysledek - (zvetsitO * 10);
  37.                 ss << meziVysledek;
  38.                 posun = true;
  39.  
  40.             }
  41.             else {
  42.                 ss << meziVysledek;
  43.             }
  44.         }
  45.  
  46.         // cislo je vtesi jak 10 budeme pricitat hodnotu
  47.         if (posun == true) {
  48.             ss << zvetsitO;
  49.             zvetsitO = 0;
  50.             posun = false;
  51.         }
  52.  
  53.         // ulozni hodnoty pro celkovy soucet
  54.         vysledek.append(ss.str());
  55.         reverse(vysledek.begin(), vysledek.end());
  56.          
  57.         // uprava cisla pro soucet doplnenim 10koveho radu
  58.         for (int k = 0; k != cnt; k++)
  59.             vysledek.append("0");
  60.  
  61.         seznamSoucinu.push_back(vysledek);
  62.         ss.str("");
  63.         vysledek.clear();
  64.     }
  65.  
  66.     int *c1 = NULL;
  67.     int *c2 = NULL;
  68.  
  69.     // SOUCTET JENOTLIVYCH MEZIVYSLEDKU
  70.  
  71.     if (seznamSoucinu.size() == 1) {
  72.         vysledek = seznamSoucinu[0];
  73.     }
  74.     else {
  75.  
  76.         vysledek = "0";
  77.  
  78.         for (unsigned int i = 0; i < seznamSoucinu.size(); i++) {
  79.  
  80.             rozsah = urciRozmer(vysledek, seznamSoucinu[i]);
  81.  
  82.             c1 = vytvorCislo(vysledek, rozsah);
  83.             if (c1 == NULL) {
  84.                 return ("err");
  85.             }
  86.  
  87.             c2 = vytvorCislo(seznamSoucinu[i], rozsah);
  88.             if (c2 == NULL) {
  89.                 return ("err");
  90.             }
  91.  
  92.             vysledek = soucet(c1, c2, rozsah);
  93.  
  94.             free(c1);
  95.             free(c2);
  96.         }
  97.     }
  98.  
  99.     return vysledek;
  100. }
Add Comment
Please, Sign In to add comment