2016-03-29 8 views
-6

Ich brauche deine Hilfe. Ich muss ein Programm schreiben, das vier Sternchen Dreiecke, eines über dem anderen hat. Ich habe Schwierigkeiten mit dem dritten Dreieck. Ein umgekehrtes Dreieck mit zehn Zeilen, das so aussehen sollte:C++ For Loops, Asterisk umgekehrtes Dreieck

Kann mir jemand helfen?

#include <iostream> 

    using namespace std; 

    int main() 
    { 
    cout << "\nAsterisk Triangluar Patterns:\n"; 
    cout << "\nPattern (a).\n\n"; 
    int i,j,rows; 
    int ROWS = 10; 
    //initiates the max limit of rows and/ columns the triangle may have 
    int k = 11; 

    for(i=1;i<=rows;i++) 
     { 
      for(j=1;j<=i;j++) 
       { 
        cout << "*"; 
       } 
       cout << endl; 
     } 
    cout << "\nPattern (b).\n\n"; 
    for (i = 10; i >= 1; i = i-1) 
    { 
    // begin second loop from 1 to i 
    for (j = 1; j <= i; j = j+1) 
    { 
     cout << "*"; 
    } 
    cout << endl; 
    }   

    cout << "\nPattern (c).\n\n"; 
    for (int i = 0; i < 10; i++) 
    { 
    for(int j = 0; j < i; j++) 
    { 
     cout <<"*"; 
    } 
    cout << endl; 
    } 
    cout << "\nPattern (d).\n\n"; 
    for (i=1;i<=rows;i++) 
     { 
      for(j=1;j<=i;j++) 
       { 
        cout << "*"; 
       } 
       cout << endl; 
     } 


    cin.get(); 

    cin.get(); 

     return 0; 
    } 
+4

Nun, was ist deine Vorstellung davon (du hast schon 'for' loop erwähnt)? Sie sollten auch einige grundlegende Dinge in Ihrem Lehrbuch behandelt haben. –

+2

Xcode hat damit nichts zu tun, auch keinen invertierten Index. Und eine Suche auf dieser Seite nach "[cpp] inverted triangle" ergibt * Dutzende * von Fragen, wenn Sie den Code von jemand anderem stehlen wollen. Sie würden sich aber selbst einen schlechten Dienst erweisen, wenn Sie * nicht * zuerst * versuchen *, es * selbst * zu tun, und wenn Sie Probleme haben, schreiben Sie * Ihren * Code hier und vielleicht können wir Ihnen helfen. – WhozCraig

+0

@Cyber_Lo Was sind diese vier Dreiecke? Zeig's ihnen. –

Antwort

1

Es gibt zahlreiche Möglichkeiten, die Aufgabe zu erledigen.

Zum Beispiel

#include <iostream> 
#include <iomanip> 

int main() 
{ 
    const size_t N = 10; 

    for (size_t i = 0; i < N; i++) 
    { 
     std::cout << std::setw(i + 1) << std::setfill(' ') << '*' 
        << std::setw(N - i) << std::setfill('*') << '\n'; 
    }   
}  

Die Programmausgabe ist

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

oder mittels Standardalgorithmen

#include <iostream> 
#include <algorithm> 
#include <iterator> 

int main() 
{ 
    const size_t N = 10; 

    for (size_t i = 0; i < N; i++) 
    { 
     auto out = std::ostream_iterator<char>(std::cout); 
     *std::fill_n(std::fill_n(out, i, ' '), N - i, '*') = '\n'; 
    }    
}  

Der Ausgang wird das gleiche sein, wie oben gezeigt.

In der Tat, was Sie brauchen, ist drei Schleifen schreiben: eine äußere Schleife und zwei innere Schleifen.

0

Die einfachste Art, wie ich denken kann:

#include <iostream> 
#include <string> 
#include <iomanip> 

int main() { 

    for (int i = 10; i >= 0; --i) 
     std::cout << std::setfill(' ') << std::setw(10) << std::string(i, '*') << std::endl; 
     // or std::cout << std::string(10 - i, ' ') << std::string(i, '*') << std::endl; 

    return 0; 
} 

Wenn dies jedoch verwirrt Sie. Sie können es auf diese Weise tun:

for (int i = 10; i >= 0; i--) { 
    for(int j = 0; j < 10 - i; j++) cout << " "; 
    for(int j = 0; j < i; j++) cout << "*"; 
    cout << endl; 
} 

die näher an Ihrem Code ist.