Wieder einmal eine kleine Hilfe nötig!



  • Hallo allezusammen,
    Ich hab hier ein Programm das aus einer textdatei werte ausliest und mit denen dann
    in c++ ein viereck zeichnet mit cout

    die textdatei sieht wie folgt aus:
    x-Position: 10
    Y-Position: 5
    Breite: 30
    Hoehe: 10
    Zeichen: #

    und anhand dieser werte wird das programm im Dos Mode gezeichnet ich hab folgenden
    Programmcode geschrieben aber es funktioniert nicht ganz:
    #include <iostream>
    #include <conio.h>
    #include <fstream>

    using namespace std;

    int main()
    {
    int zeile,spalte,x,y,hoehe,breite;
    ifstream eingabe;
    string satz,zeichen;

    eingabe.open("Eingabe.txt");

    while(!eingabe.eof())
    {
    eingabe>>satz;
    eingabe>>x;
    eingabe>>satz;
    eingabe>>y;
    eingabe>>satz;
    eingabe>>breite;
    eingabe>>satz;
    eingabe>>hoehe;
    eingabe>>satz;
    eingabe>>zeichen;
    };
    eingabe.close();
    for (spalte=1;spalte<=y+hoehe;spalte++)
    {
    for(zeile=1;zeile<=x+breite;zeile++)
    {
    if(zeile>x&&zeile<=x+breite&&spalte==y+1||zeile>x&&zeile<=x+breite&&spalte==y+hoehe||
    spalte>y&&spalte<=y+hoehe&&zeile==x+1||spalte>y&&spalte<=y+hoehe&&zeile==x+breite)
    {
    cout<<zeichen;
    }
    {
    cout<<"";
    };
    }; cout<<endl;

    };
    getch();
    }

    ABER das einzige was ich rausbekomme ist solch ein viereck:

    xxxxxxxxxxxxxx
    x x
    x x
    xxxxxxxxxxxxxx

    Bitte probiert das Programm aus und sagt mir bitte wo der Fehler ist ich komme einfach nicht drauf!!! 😞



  • Keine Codetags, keine konkrete Frage, kein Bemuehen des Fragers zu erkennen. Wer soll da antworten?



  • Naja... dein Code schien mir etwas wirr, da hab ich mehr als die Hälfte weggekürzt... auf jeden Fall hast du eine viel zu lange if-Bedingung.
    So sieht meine (funktionierende) Version aus:

    int main()
    {
     const String zeichen="x";
     int x=10,y=5,breite=30,hoehe=10;
     for (int spalte=0;spalte<y+hoehe;spalte++)
     {
      if (spalte>=y)for (int zeile=0;zeile<x+breite;zeile++)cout<<(zeile<x ? String(" ") : zeichen);
      cout<<endl;
     }
    }
    

Anmelden zum Antworten