2017-02-03 3 views
0

Ich habe derzeit eine kleine Aufgabe für meine C++ College-Kurs. Ich stoße derzeit auf einen Fehler, bei dem die ersten beiden Loops ausgeführt werden, aber dann erstarrt und der Rest der Loops nicht beendet wird. der springende Punkt istmulti-verschachtelt für Schleife C++ nicht fertig

ein Beispiel eines * Diamanten wie diese aussehen würde auszudrucken, wenn Sie die Nummer 7 eingegeben:

 * 
    *** 
    ***** 
    ******* 
    ***** 
    *** 
    * 

das ist, was der Code wie zur Zeit aussieht:

#include <iostream> 
using namespace std; 



int main(){ 
cout<<"How many lines do you want?"; 
int num_rows; 
cin>>num_rows; 
int row_average = (num_rows/2)+1; 
for(int count=0; count<num_rows; ++count){ 
    int midpoint = row_average - count; 
    int absolute = abs(midpoint); 
    int spaces = absolute; 


    for (int count_a = 0; count_a<spaces; ++count_a){ 
     cout<<" "; 
    } 
    for (int count_b = row_average; count_b<num_rows; ++count){ 
     int stars = count_b - spaces; 
     for(int count_c = 0; count_c = stars; ++count_c){ 
      cout<<"*"; 
     } 
    } 
    } 
} 

Beliebig Antworten oder Hilfe wären willkommen! Danke!

+0

'count_b

+0

'für (int count_b = row_average; count_b

+0

@MikelF Ah, ok. Ich sehe jetzt, wo Sie den Ersatz beabsichtigten. Dein erster Kommentar war nicht klar. Löschen meiner anderen Kommentare. "Count_c

Antwort

2

Ist dies unter einem Tippfehler?

for (int count_b = row_average; count_b<num_rows; ++count){ 
     ---------------------------------------------^^^^^ 

Sollte es nicht ++count_b sein? Sie geben auch kein Newline-Zeichen aus?

+1

Das behebt eines der Probleme. –

1

Ein paar Dinge:

1) In der zweiten for-Schleife verschachtelt Sie count_b erhöhen sollte. So

for(int count_b = row_average; count_b < num_rows; ++count_b) { 

2) In der letzten verschachtelten for-Schleife müssen Sie die Bedingung machen count_c weniger als Stern, nicht gleich zu ihm. So

for(int count_c = 0; count_c < stars; ++count_c) { 

3) Schließlich müssen Sie eine neue Zeile Zeichen oder auch alle diese Sterne werden auf der gleichen Linie drucken

+0

In 2) Der OP-Code prüft nicht auf Gleichheit '==', es ist eigentlich _assigning_ 'count_c = Sterne'. –

+0

Vielen Dank all das ist sehr hilfreich !! Wahrscheinlich ein paar Fehler, die ich verpasste, nochmals vielen Dank – Elijah