簡體   English   中英

為什么此代碼順序不能正常工作?

[英]Why doesn't this order of code work properly?

因此,我已經連續幾個小時從事該程序的一部分。 我有幾行代碼現在困擾了我一個多小時。 只是沒有意義。 我一遍又一遍地閱讀台詞,並在腦海中思考該怎么辦,但它沒有這樣做! 這可能是我一直忽略的一個愚蠢錯誤(通常發生在我身上..),或者可能是由於過去幾個小時缺乏睡眠/一直在努力工作。

該程序很長,但是我遇到的代碼塊只有幾行-因此,我只會在需要時發布整個內容。


好的,這是此操作的簡要概述:

我有一個向量,里面充滿了手動設置的字符串(19個字符串,每個字符串長79個字符)。 這個一維向量將被視為2d向量-因為我正在嘗試使其保持基本狀態。 因此,如果此字符串向量每行顯示1個字符串,則實際上會創建一個矩形截面為'。'的網格。 和連接矩形部分的“#”路徑。 它應該獲得傳遞給函數的x和y坐標。 它像2D向量一樣循環遍歷並找到位置。 它檢查該位置的字符是否不是'。'。 或“#”,它將char更改為X以標記其位置。 我使用有效的x,y坐標(即“'”的位置)設置了測試。 -問題就在我提示“找到匹配項:::”的行之后。程序運行時,它顯示vLevel [i] [j] ='。 但是由於某種原因,它不會轉到else語句中,在該語句中該函數又被調用了4次,而我放置了cout語句。 這是網格的外觀。 白色空格是空格..每行都是向量中的字符串:

.......                                                                    
.......  .......                                                           
.......##.......      ..........................                           
.......  .......      ..........................                           
         .......      ..........................     ..........            
         .......      ..........................#####..........            
                      ..........................     ..........            
                      ..........................           #               
                      ..........................           #               
                       #                                   #               
                       #                                   #               
    ........           #   ............                .......             
    ........           #   ............                .......             
    ........           #   ............    ....        .......             
    ........###############............    ....        .......             
    ........               ............####....                            
    ........               ............    ....                            

這是我要處理的代碼部分:

void markPosition(vector<string> & vLevel, int x, int y){
    cout << "x: " << x <<endl;
    cout << "y: " << y <<endl;

    bool doubleCheck = true; //extra bool I added for testing purposes

    for( int i = 0; i < vLevel.size(); i++ ){
            for( int j = 0; j < vLevel[i].size(); j++ ){
                    //displays if x and/or y are out of range
                    if (doubleCheck){
                            if ((x < 0) || (x > vLevel[i].size())){
                                    cout << "X is out of range!" << endl;
                                    doubleCheck = false;
                            }
                            if ((y < 0) || (y > vLevel.size())){
                                    cout << "Y is out of range!" << endl;
                                    doubleCheck = false;
                            }
                    }
                    else {
                            return;
                    }

                    if ((j == x) && (i == y)){
     //////THIS IS THE PROBLEM LOL
                            cout << "match found::: " << vLevel[i][j] << endl;
                            if ((vLevel[i][j] != '.') || (vLevel[i][j] != '#')){
                                    cout << "Located in the blankness" << endl;
                                    return;
                            }

                            else {
                                    cout << "I don't get reached!!??" << endl;
                                    vLevel[i][j] = 'X';
                                    markPosition(vLevel,i-1,j);
                                    markPosition(vLevel,i+1,j);
                                    markPosition(vLevel,i,j+1);
                                    markPosition(vLevel,i,j-1);
                           }
                      }
                }
        }
}

粘貼時間距弄亂了,所以我嘗試將其清理一下。 我不明白為什么它會跳過其他情況。 就像我說的那樣,我敢肯定一旦解決,我就會感到愚蠢。 我需要睡覺哈哈。

讓我知道您是否需要更多信息。 提前致謝!

看着:

if ((vLevel[i][j] != '.') || (vLevel[i][j] != '#'))

這將始終評估為true 想一想。

(我認為您的意思是if((!=)&&(!=))if(!((==)||(==))) 。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM