Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- string soucin(int cislo1[], int cislo2[], int velikost)
- {
- vector <string> seznamSoucinu;
- string vysledek;
- string buffer;
- int rozsah;
- int meziVysledek;
- bool posun = false;
- int zvetsitO = 0;
- stringstream ss;
- vysledek.clear();
- buffer.clear();
- // cyklus pro roznasobeni jednotlivich cisel
- for (int i = velikost, cnt = 0; i > 0; i--, cnt++) {
- for (int j = velikost; j > 0; j--) {
- meziVysledek = cislo1[j - 1] * cislo2[i - 1];
- // cislo je vtesi jak 10 budeme pricitat hodnotu
- if (posun == true) {
- meziVysledek += zvetsitO;
- posun = false;
- zvetsitO = 0;
- }
- // kontrola zda je cislo vetsi jak 10, a nataveni o kolik se bude pricitat
- if (meziVysledek >= 10) {
- zvetsitO = meziVysledek / 10;
- meziVysledek = meziVysledek - (zvetsitO * 10);
- ss << meziVysledek;
- posun = true;
- }
- else {
- ss << meziVysledek;
- }
- }
- // cislo je vtesi jak 10 budeme pricitat hodnotu
- if (posun == true) {
- ss << zvetsitO;
- zvetsitO = 0;
- posun = false;
- }
- // ulozni hodnoty pro celkovy soucet
- vysledek.append(ss.str());
- reverse(vysledek.begin(), vysledek.end());
- // uprava cisla pro soucet doplnenim 10koveho radu
- for (int k = 0; k != cnt; k++)
- vysledek.append("0");
- seznamSoucinu.push_back(vysledek);
- ss.str("");
- vysledek.clear();
- }
- int *c1 = NULL;
- int *c2 = NULL;
- // SOUCTET JENOTLIVYCH MEZIVYSLEDKU
- if (seznamSoucinu.size() == 1) {
- vysledek = seznamSoucinu[0];
- }
- else {
- vysledek = "0";
- for (unsigned int i = 0; i < seznamSoucinu.size(); i++) {
- rozsah = urciRozmer(vysledek, seznamSoucinu[i]);
- c1 = vytvorCislo(vysledek, rozsah);
- if (c1 == NULL) {
- return ("err");
- }
- c2 = vytvorCislo(seznamSoucinu[i], rozsah);
- if (c2 == NULL) {
- return ("err");
- }
- vysledek = soucet(c1, c2, rozsah);
- free(c1);
- free(c2);
- }
- }
- return vysledek;
- }
Add Comment
Please, Sign In to add comment