2016-04-30 143 views
0

我有一個數組程序,它將根據用戶輸入讀出列。不知何故,如果數組中有空字段,它會給我一個錯誤。例如,如果我讀了helloworl這個詞,我的程序就會起作用。但是,如果我閱讀helloword,我的程序將不會打印最後一個字符是d。我花了好幾天的時間試圖找出如何解決,我希望有人能幫助我。謝謝。C++二維數組錯誤

輸出應該是hlodworlwl。現在它正在顯示像這個hloworlwl錯過了最後一行。

還有一件事,我的程序將採取用戶輸入和排序並打印出陣列。我怎麼能錯誤證明程序,以確保用戶類型(邏輯)像123 321 213等而不是111 222 134?

如果我在的HelloWorld讀取和用戶輸入123,我的2D陣列應該是

hel 
low 
orl 
d 

輸出應爲hlodworlwl。現在它正在顯示像這個hloworlwl錯過了最後一行。

還有一件事,我的程序將採取用戶輸入和排序並打印出陣列。我怎麼能錯誤證明程序,以確保用戶類型(邏輯)像123 321 213等而不是111 222 134?

hel 
low 
orl 
#include <iostream> 
#include <string> 
using namespace std; 

char array[5][5]; 

//function that prints the column c of the array 
void printArray(int c) 
{ 
    for(int i=0; i<3; i++) 
    { 
     cout << array[i][c]; 
    } 
} 

int main() { 

string alphabate; 
string a="helloworld"; 

for(int i=0; i<3; i++) 
{ 
    for(int j=0; j<3; j++) 
    { 
     array[i][j] = a[j+ (i * 3)]; 
    } 
} 

cout << "Enter some alphabate:"; 
cin >> alphabate; 

//checking the input parameters 
for (int j=0; j<3; j++) { 
    if (alphabate[j] == '1' || alphabate[j] == 'a') 
    { 
     printArray(0); 
    } 
    else if (alphabate[j] == '2' || alphabate[j] == 'b') 
    { 
     printArray(1); 
    } 
    else if (alphabate[j] == '3' || alphabate[j] == 'c') 
    { 
     printArray(2); 
    } 

} 

return 0; 
} 

再次,感謝你通過我的問題閱讀。

+0

*「..輸出應該是hlodworlwl。現在它顯示像這樣hlodworlwl」*,這兩個輸出是相同的。我錯過了什麼? –

+0

我真的不明白你的程序應該做什麼,但我看到你的數組像這樣:char array [3] [3];',所以它可以保存'9'字符,然而string'hel low orl d'具有'10'個字符。 – PcAF

+0

即時通訊這樣的大傢伙,我睡覺剝奪,因此我犯了很多錯誤,缺乏解釋。第二個「hlodworlwl」應該是hloworlwl。 @bkVnet我試着在數組[5] [5]之前使用,並最終得到那些空的垃圾值。我如何解決這個問題? – Bhappy

回答

1

答案很簡單,「helloworld」有10個字符。你的數組只能存儲9. D從不在數組中輸出。

+0

你好,請忽略前面的消息,即時通訊so soory,我睡覺剝奪,因此我犯了很多錯誤,缺乏解釋。我試着在數組[5] [5]之前使用,並最終得到這些空字段的垃圾值。我如何解決這個問題?謝謝你的幫助。我還有另外一個問題,我怎麼才能讓cin只有邏輯的價值。我已經把問題放在頂部。希望你能幫我出局 – Bhappy

+0

@Bhappy你可以刪除評論。 – PcAF