Anfängerfrage -> Ausgabe in C



  • hallo, ich bin gerade dabei c bzw. c++ zu lernen. ich steh nun vor folgendem problem und hoffe, dass mir jemand von euch evt. helfen kann oder sogar den source code schicken könnt.

    ich will folgendes:

    ich möchte mit einer for-schleife einen * darstellen. also auf der ersten zeile ist 1 * zu sehen, auf der 2. zeile sind 2 * zu sehen und das ganze geht runter bis auf 4.

    wie mach ich das? kann mir da jemand ein beispiel schicken?

    sry für die boonfrage, aber ich brauch anhaltpunkte.

    gruss



  • hallo

    hört sich nach einer typischen hausaufgabe an 🙂

    also erstmal lieber kein beispiel, sondern versuchs mal selber.

    tip: verschachtel schleifen.
    zum bleistift zwei for schleifen ineinander verschachteln.

    for (int spalte =0; spalte <10; spalte ++){
      for (int zeile =0; zeile <....
    }
    

    versuche, erstmal ein rechteck, dann ist das dreieck fast geschafft.



  • so, ich hab das hier mal versucht...

    #include <stdio.h>
    
    main()
    {
    int i = 0;
    
    for(i=0;i<4;i++)
    {
    if(i==0)printf("*\n");
    if(i==1)printf("**\n");
    if(i==2)printf("***\n");
    if(i==3)printf("****\n\n");
    }
    
    for(i=4;i>0;i--)
    {
    if(i==0)printf("   *\n");
    if(i==1)printf("  **\n");
    if(i==2)printf(" ***\n");
    if(i==3)printf("****\n");
    } 
    system("pause");
    }
    

    aber irgendwie zeigt er mir da dann den ersten * bei der 2. version nicht an 😞

    und gibt es eine möglichkeit, dass ich nur 1 printf brauche und er mir einfach in den ersten 4 zeilen immer einen stern mehr schreibt?

    gruss



  • nonN schrieb:

    aber irgendwie zeigt er mir da dann den ersten * bei der 2. version nicht an 😞

    Weil Du in der 2. Schleife von 4 bis 1 zaehlst:

    #include <stdio.h>
    
    int main( void ) // <- main
    {
    int i = 0;
    
    for(i=0;i<4;i++) // <- du zaehlst: 0 1 2 3
    {
    if(i==0)printf("*\n");
    if(i==1)printf("**\n");
    if(i==2)printf("***\n");
    if(i==3)printf("****\n\n");
    }
    
    for(i=4;i>0;i--)  // <- du zaehlst: 4 3 2 1 
    {
    if(i==1)printf("   *\n");  // <- 1 statt 0
    if(i==2)printf("  **\n");  // <- 2 statt 1
    if(i==3)printf(" ***\n");  // <- 3 statt 2
    if(i==4)printf("****\n");  // <- 4 statt 3
    } 
    system("pause");
    }
    

    nonN schrieb:

    und gibt es eine möglichkeit, dass ich nur 1 printf brauche und er mir einfach in den ersten 4 zeilen immer einen stern mehr schreibt?

    for(i=0;i<4;i++) // <- du zaehlst: 0 1 2 3
    {
       int j;
       for (j=0;j<=i;i++) {  // von j bis i
          printf( "*" ); // kannst auch putchar( '*' ); nehmen
       }
       printf( "\n" ); // kannst auch putchar( '\n' ); nehmen
    }
    


  • genau darauf hätte er selber kommen müssen, power-off

    nun hast du die didaktik des lehrers kaputtgemacht und ihm einen ahaeffekt *g*

    aber macht nüscht, die meisten haben keine ausdauer 😞



  • ehm leute, ich hab nix von nem lehrer bekommen, ich lern das für mich selber 😉

    aber danke für den tipp. ich werd das gleich mal versuchen umzusetzen 🙂

    gruss



  • na ja, jetzt brauchst es nur noch abzuschreiben.



  • mach in den For-Schleifen aber lieber ne switch Anweisung als die IF Anweisung.
    Das ist effektiver 😉



  • ne, kanns ned abschreiben.

    würd ich die normale version nehmen, di ehier steht, dann ist es ne unendlichschlaufe, und der macht mir die ganze konsole voll.

    ich brauch aber nur die ausgabe:

    **
    ***
    ****

    😉 ich versuch mich jetzt mal weiter. ich krieg das schon hin.

    thx für die hilfe, werd mich nachher nochmal melden, wenn was unklar ist.

    seid echt nette leute hier 😉



  • rofl, habs hinbekommen.

    danke für das beispiel, das war fast ganz korrekt, bis auf das i++ anstelle von j++ 😛

    ich mach jetzt noch ein paar andere figuren, und werd mal die switch sache einbauen.

    gruss


Anmelden zum Antworten