2016-07-28 31 views
0

我想爲我的任務做一個特定的計數器,但我嘗試了很多方法,但我仍然無法弄清楚它們。無法計算字符類型的數字

我的程序允許用戶根據他們的輸入找出三角形的類型。

所以我確實有兩個主要功能來確定三角形的形狀和顯示計數器。

  1. 炭shapeTriangle(INT,INT,int);在//確定三角形的形狀,即等腰('I'),等邊('E')

  2. int summaryDisplay(char); //顯示計數器

在我shapeTriangle功能,我有一個簡單的,如果是我的main function返回基於用戶輸入

char shapeTriangle(int x, int y, int z) 
{ 

char type; 

if (x == y && y == z && x == z) 

type = 'E'; 

else if (x == y || y == z || x == z) 

type = 'I'; 

return type; 
} 

在類型else語句,我有循環,允許用戶輸入,直到其中一個值爲0.

summaryDisplay中,我試圖計算某個三角形確定的次數

int finalSum(char type) 

int eCount = 0, iCount = 0; 

if (type == 'E') 

eCount++; 

if (type == 'I') 

iCount++; 

cout << "Equilateral" << eCount; 
cout << "Isosceles" << iCount; 

} 

我設法不過,以獲得輸出,計數器返回我一些奇怪的價值觀像5409343453等等等等,我真的不能數字出來。

這是我嘗試調用我的函數在我int main

int main() 

{ 

int x, y, z; 

do{ 

cout << "Enter 3 intgers : "; 
cin >> x >> y >> z; 

//some display output codes 

}while (x != 0 && y != 0 && z != 0); 

finalSum(shapeTriangle(x, y, z)); 

} 

任何幫助表示讚賞。

編輯1:我試圖初始化但是但是,我返回0,所有不同類型的。

+4

如果您的條件都不爲假,則返回未初始化的'type'。 – Jarod42

+3

'eCount','iCount'也未被初始化。 –

+0

我試圖初始化爲0,但它似乎仍然返回我0計數器 –

回答

1

只是初始化零您計數器,這將表現爲你的計數器初始值。就像這樣:

int eCount = 0, iCount = 0; 

而且,你到底想type是如果沒有你的條件滿足?因爲如果你沒有初始化type並且你的條件都不符合(if (x == y && y == z && x == z)if (x == y || y == z || x == z)),那麼以後你的兩個計數器都將保持爲0.

+0

我縮短了我的代碼。要詳細說明,我確實有4種不同的類型,分別是'equilateral','scalene','isosceles'和'notatriangle'。所以一旦條件都不符合,計數器將被添加到'notatriangle'類型。不幸的是,即使我的'int main'顯示並讀取不同類型的三角形,所有返回計數器仍然爲0 –

+0

然後將'type'初始化爲'N'如下:'char type ='N';'如果你想要成爲您的默認值.. –

+0

我沒有任何默認值。我有循環,取消任何輸入,一旦輸入不匹配任何4種不同的類型。 –

0

看起來像你已經在finalSum()的範圍內聲明eCountiCount。這意味着它們的值,如果沒有初始化,將會是堆棧中以前活動的垃圾,這就是你所看到的。 嘗試在全局聲明它們,以便在函數調用中保留它們的值。

你應該確保你的計數變量在它們增加之前被正確地聲明和初始化,否則你正在涉入未定義的行爲。

+0

我試圖「保留」所有計數器fcuntions在該'displaySummary'函數。這就是爲什麼我在本地而不是全球宣佈它。但我不明白爲什麼它會返回垃圾信息,即使我只是試圖從函數內的計數器中提取出值。 –

+0

@TeoChuenWeiBryan未初始化的變量相對於它們接收的值具有未定義的行爲;通常情況下,它們會在函數放入堆棧之前從堆棧中存在的內存中收到垃圾。確保你在做任何事情之前將它初始化爲'char type ='u';''。 – Xirema

+1

@Rakte1111輕鬆入門。此外,隨着代碼的寫入,'eCount'和'iCount' **永遠不會被初始化**,這是您最關心的問題,也是'type'。 –

0

您沒有type的默認值。如果所有三個輸入值都不同,會怎麼樣?您的if聲明中沒有將值分配給type,並且未初始化。

嘗試將默認值像'U'未知...

+0

如上所述,我確實有一個默認值,我沒有輸入到問題中來縮短我的代碼。我有4種不同的類型,它們是'等邊','斜角','等腰'和'notatriangle'。所以肯定會有一些初始化到'type'。不幸的是,它仍然爲我所有的計數器返回0。 –

1

你必須初始化你的變量。

+0

我試過,但它仍然返回我0任何計數器 –

相關問題