2015-11-19 83 views
-6

生長時varialbe「長長」發瘋我用C寫了一個簡單的程序++的做法,因爲我正在學習C++,所以他計劃採取的輸入數量例如123,然後它可以逆轉,以321號並將其添加到它的原始數字中,然後再次反轉該數字並檢查它是否與未顛倒的數字相同,如果不相同,則重複數次,直到顛倒的數字與非顛倒的數字相同。C++:在循環

對我的問題: 我已經設置了很長的變量,因爲在這個計算中可以顯示大數字,我的問題是,當數字進入循環(loop2)時,它似乎最大值或可以看到的結果在屏幕上。

注意:首先while循環不打算重複我把代碼,它這樣,如果你把在已經符合要求的號碼,我可以跳過該代碼。

NOTE2:我在Python寫了這個程序完全相同的方式和它的作品完美,我可以爲還提供源是否有幫助。

注3:在意見不介意的文字,它是我的語言。

注4:在例如我把screenshoot從我輸入應在我與我的用Python編寫的

對不起,我的英文不好,並感謝同一個程序測試了4個步驟來解決數196121。

enter image description here

/* while(number!=0){ 
reverse = reverse * 10; 
reverse = reverse + number%10; 
number = number/10; 
} 
*/ 

#include <iostream> 
using namespace std; 

int main() 
{ 
    int count = 1;//Varijabla koja broji korake 
    int loop1 = 1; //varijabla za definiranje rada petlje 
    int loop2 = 1; //varijabla za definiranje rada petlje 
    long long num = 0ll; //Broj koji se unosi 
    long long rev = 0ll; //Privremena varijabla 
    long long tmp = 0ll; //Privremena varijabla 
    long long tmp_ = 0ll; //okrenuta privremena varijabla "tmp" 
    long long var_ = 0ll; //Privremena varijabla 
    long long zasprovj = 0ll;//varijabla za pocetnu provijeru 
    long long number = 0ll;//pomocna varijabla kod okretanja 

    cout << "UKOLIKO SE UNESE BROJ KOJI NIJE MOGUĆE IZRAČUNATI PROGRAM CE OSTATI U BESKONACNOJ PETLJI KAO STO JE NPR. BROJ 196 !"<<endl; 
    cout << endl; 
    cout << endl; 
    cout << endl; 

    cout << "MOLIMO UNESITE BROJ: "; 
    cin >> num; //Unos broja 
    cout << endl; 
    number = num; // broj koji okrecemo izjednacujemo s brojem koji smo unesli 

    //okretanje broja 
    while (number != 0) 
    { 
     zasprovj = zasprovj * 10; 
     zasprovj = zasprovj + number % 10; 
     number = number/10; 
    } 

    //provjera je li broj koji je unesen isti kao i njegov okrenuti broj 
    //i preskakanje ostatka programa izjednjacavanjem loop1 i loop2 s 0 
    if (num == zasprovj) 
    { 
     cout << "Operacija izvrsena, rezultat: " << zasprovj << " Koraka = 0"; 
     loop1 = 0; 
     loop2 = 0; 
    } 

    while (loop1 == 1) 
    { 
     number = num; 
     while (number != 0) 
     { 
      rev = rev * 10; 
      rev = rev + number % 10; 
      number = number/10; 
     } 
     cout << "okrenuti uneseni broj je: " << rev << endl; 
     tmp = rev + num; 
     cout << "rev + n = "<<tmp<<endl; 
     number = tmp; 
     while (number != 0) 
     { 
      tmp_ = tmp_ * 10; 
      tmp_ = tmp_ + number % 10; 
      number = number/10; 
     } 
     cout << "okrenuti tmp = " << tmp_ << endl; 

     if(tmp == tmp_) 
     { 
      cout << "Izracun je: " << tmp << "<-- u koraka: " << count << endl; 
      loop2 = 0; 
      loop1 = 0; 
     } 
     cout << ">>>>>>> "<<count<<". STEP <<<<<<"<<endl; 
     loop1 = 0; 
    } 

    while (loop2 == 1) 
    { 
     count = count + 1; 
     cout << ">>>>>>> " << count << ". STEP <<<<<<" << endl; 

     number = tmp_; 
     while(number!=0) 
     { 
      rev = rev * 10; 
      rev = rev + number%10; 
      number = number/10; 
     } 
     tmp = rev + tmp_; 
     cout << "rev + tmp_ = "<<tmp<<endl; 

     number = tmp; 
     while (number != 0) 
     { 
      tmp_ = tmp_ * 10; 
      tmp_ = tmp_ + number%10; 
      number = number/10; 
     } 
     cout << "reversed tmp(tmp = rev + tmp_) = " << tmp_<<endl; 

     if (tmp == tmp_) 
     { 
      cout << "Izracun je: "<<tmp<<"<-- u koraka: " <<count<<endl; 
      loop2 = 0; 
     } 
    } 
    cout << endl; 
    cout << endl; 
    cout << "CTRL + C za izlaz"; 
    cin >> rev; 
} 
+3

請提供[MCVE]再現的問題。有這麼大的代碼牆,再加上一半的變量(更不用說註釋)不是英文的事實,使得很難理解代碼實際上做了什麼。 –

回答

0

你忘了正確計算反轉之前重新初始化rev。所以舊的rev被預先添加到新的反向號碼。

而就在同時添加rev = 0;作爲number = tmp_;