2016-04-11 35 views
-1

Burada gösterilen bazı girişler için bir histogram oluşturması beklenen bir kod bölümüm var.Döngü için iç içe geçmiş düzgün çalışmıyor

ostream& operator<<(ostream& outputStream, aHistogram& h){ 
outputStream << "Constructing histogram." << endl; 
int numberOfBins = h.v.size(); 
int max = h.getMax(); 
int longest = h.getLongestLine(); 
int diceData = 0; 

for (int i = 0; i < numberOfBins; ++i) { 
    outputStream << i + h.getNumDice() << ":"; 
    diceData = h.v.at(i); 

    for (int x = 1; x <= (diceData/max) * longest; x++) { 
     outputStream << "X"; 
    } 
    outputStream << endl; 
} 

return outputStream;} 

sorun sadece en yüksek değer girişi için X'lerin "max" numarası oluşturur, ve döngü diğer değerleri için hiç çalışmıyor gibi görünüyor. İşte bir çıktı ekran görüntüsü.

burada yanlış neler olduğunu tam olarak emin değilim. tamsayı matematik kullanma

+2

... hangi [mcve] için duruyor. – jtbandes

+0

'(diceData/max) * longest 'sayısını yazdırmayı denediniz mi? Sanırım sıfırdır. – jtbandes

cevap

0
(diceData/max) * longest 

, bölünme 0 aşağı yuvarlar ve 0 * longestdiceData < max ile bitirmek. 0 ile 1 arasında bir sayı elde etmek için kayan noktalı matematik kullanın ya da önce çarpma yapın.

(double) diceData/max * longest 
diceData * longest/max 

İkinci yaklaşımı kullanırsanız taşmaya dikkat edin.

+0

Çok teşekkür ederim! Bunun aklımdan kaçmasına nasıl izin verdiğimi bilmiyorum! –

İlgili konular