[C/C++] Programm funktioniert nicht richtig!

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von revolt, 20. November 2009 .

  1. 20. November 2009
    Programm funktioniert nicht richtig!

    Hi,

    Will eine zahl eingeben und dann so er mir ein quadrat aus geben
    bsp 3:

    ......#
    ...###
    #####
    ...###
    .....#

    bsp4:

    .........#
    ......###
    ...#####
    #######
    ..#####
    .....###
    .......#


    hier mein code:

    Code:
     /***** Aufgabe 2.c *******
    * *
    * 2.) Eingabe und Ausgabe *
    * *
    **********************************/
    #include <stdio.h> /* enthält Funktionsdeklaration */
    
     int main()
     {
     int Zahl; // ==n aus Aufgabenstellung
     printf("Eingabe einer ganzen Zahl (nur dezimal): ");
     scanf("%d", &Zahl);
     int SpaltenReihen=(Zahl*2)-1; //für Zahl=3: (3*2)-1 Ausgabezeichen --> Reihen, Spalten
     char Ausgabe[SpaltenReihen+1]; //Ausgabestring;
     for (int LaufVar1=0;
     LaufVar1<SpaltenReihen; // [Horizontal]
     LaufVar1++)
     {
     for (int LaufVar2=0;
     LaufVar2<SpaltenReihen; // [Vertikal]
     LaufVar2++)
     {
     int Anzahl=1+(LaufVar1*2); //nur temporär ben ötigte Zählariable: Anzahl an #
     int Diff=SpaltenReihen-Anzahl; // Anzahl an Leerzeichen
     if ((LaufVar2>(Diff/2))
     && (LaufVar2<(SpaltenReihen-(Diff/2)))){
     Ausgabe[LaufVar2]='#';
     }else
     {
     Ausgabe[LaufVar2]=' ';
     };
     }
     printf("%s\n", Ausgabe); //Zeilenweise Ausgabe
     };
     };
    
    bis zur hälfte macht er es richtig, aber dann hörts auf
     
  2. 20. November 2009
    AW: Programm funktioniert nicht richtig!

    De Ja Vu xDD

    http://www.java-forum.org/hausaufgaben/91713-sterne-schleife.html

    Ihr kennt euch nicht zufällig?

    Sry aber da kann ich leider nicht helfen ^^
     
  3. 20. November 2009
    AW: Programm funktioniert nicht richtig!

    So müsste es funktionieren...
    Code:
     int main()
     {
     int Zahl; // == n aus Aufgabenstellung
     
     printf("Eingabe einer ganzen Zahl (nur dezimal): ");
     
     scanf("%d", &Zahl);
     
     int SpaltenReihen = (Zahl * 2) - 1; // für Zahl = 3: (3 * 2) - 1 | Ausgabezeichen --> Reihen, Spalten
     char Ausgabe[SpaltenReihen + 1]; // Ausgabestring;
    
     for (int LaufVar1 = 0; LaufVar1 < SpaltenReihen; LaufVar1++) // [Horizontal] 
     {
     for (int LaufVar2 = 0; LaufVar2 < SpaltenReihen; LaufVar2++) // [Vertikal]
     {
    [COLOR="Blue"] int Anzahl = 1; // nur temporär benötigte Zählvariable: Anzahl an #
     
     if (LaufVar1 < Zahl) // bis zur Hälfte
     {
     Anzahl += (LaufVar1 * 2); 
     }
     else // nach der Hälfte
     {
     Anzahl += ( ( SpaltenReihen - (LaufVar1 + 1) ) * 2 );
     }
    [/COLOR] 
     int Diff = SpaltenReihen - Anzahl; // Anzahl an Leerzeichen
     
     if ( (LaufVar2 > ( Diff / 2 ) ) && ( LaufVar2 < ( SpaltenReihen - ( Diff / 2 ) ) ) )
     {
     Ausgabe[LaufVar2] = '#';
     }
     else
     {
     Ausgabe[LaufVar2] = ' ';
     };
     }
     printf("%s\n", Ausgabe); // Zeilenweise Ausgabe
     };
     };
    Habe eigtl. nur eine Abfrage für Anzahl ab der Hälfte hinzugefügt.



    greetz
     
  4. 21. November 2009
    AW: Programm funktioniert nicht richtig!

    sieht gut aus.
    ist das für c?

    2 probleme hab ich allerdings:

    bei 3 gibt er mir das aus:
    ....##
    .####
    ...##

    das ist ja falsch. so macht er das überall..

    und am ende einer zeile kommt immer so ein komisches zeichen?! macht danach erst den zeilenumbruch
     
  5. 21. November 2009
    AW: Programm funktioniert nicht richtig!

    Code:
    #include <stdio.h>
    Voher
     
  6. 21. November 2009
    AW: Programm funktioniert nicht richtig!

    ja schon selber gefunden. neues problem! s. oben
     
  7. 21. November 2009
    AW: Programm funktioniert nicht richtig!

    Also wenn du meinen code von oben übernommen hast sollte es klappen...

    ansonsten schau mal ob du i-wo ein "+ 1" zu viel hast.
     
  8. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.