Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Ein mit Zeichen umrandetes Rechteck erstellen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
15.04.2005, 17:09 Uhr
Ren



Hi,

ich habe folgende Aufgabe:

Schreiben Sie ein Programm, das ein Rechteck aus Sternen ausgibt, dessen Rand von +-Zeichen gebildet wird. Der Anwender soll Breite und Höhe des Rechtecks angeben.

Bsp. als Ausgabe

Code:
+++++
+***+
+***+
+++++


Als Ansatz habe ich bis jetzt folgendes:

C++:
#include <iostream>
using namespace std;

main() {
    int breite, hoehe, x, y;
    cout <<"Breite: "; cin >>breite;
    cout <<"Hoehe: "; cin >>hoehe;
    
    for (y=1; y <= hoehe; y++) {
        cout <<"+ ";
        for (x=2; x <= breite; x++) {
            cout <<"* ";
        }
        cout <<endl;
    }
    cin.get(); cin.get();
}

Bis jetzt habe ich es nur geschafft, daß die Linke Seite mit +-Zeichen versehen wird, doch ich kriege es einfach nicht hin die restlichen Seiten mit +-Zeichen zu versehen. Kann mir da jemand helfen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
15.04.2005, 17:24 Uhr
Th



Am Anfang und Ende einfach breite mal "+" zeichnen:

C++:
for (x=1; x <= breite; x++)
   cout << '+';


In der Schleife dann statt nur "cout << endl;"

C++:
   cout << '+' << endl;


Schon geht's...

Dieser Post wurde am 15.04.2005 um 17:24 Uhr von Th editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
15.04.2005, 17:52 Uhr
Ren



Sorry, aber trotz deiner Antwort kriege ich das nicht hin
Könntest du mir bitte den gesamten Schleifenkörper aufschreiben?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
15.04.2005, 18:03 Uhr
0xdeadbeef
Gott
(Operator)


Ich würds so machen:

C++:
#include <iostream>
#include <string>

int main() {
  int x, y;

  std::cin >> x >> y;

  std::string plusse(x + 2, '+'), sterne(x, '*');

  std::cout << plusse << std::endl;
  for(int i = 0; i < y; ++i)
    std::cout << '+' << sterne << '+' << std::endl;
  std::cout << plusse << std::endl;
}


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
15.04.2005, 18:09 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@beefy
erinnert irgendwie an die alten golfrätsel
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
15.04.2005, 18:19 Uhr
0xdeadbeef
Gott
(Operator)


Heh. Stimmt, erinnert an die Golfrätsel, als uns langsam die Ideen ausgingen
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
15.04.2005, 23:54 Uhr
Ren



Erstmal danke für die Lösungsvorschläge, aber so richtig geholfen hat leider keiner.
Das #include <string> ist mir völlig unbekannt, daher kann ich mit diesem Vorschlag leider wenig anfangen (in den Vorlesungen hatten wir bis jetzt ausschließlich Programme, die mit #include <iostream> anfingen).

Ich habe mal ein bischen weiterprobiert:

C++:
#include <iostream>
using namespace std;

main() {
    int breite, hoehe, x, y;
    cout <<"Breite: "; cin >>breite;
    cout <<"Hoehe: "; cin >>hoehe;

    for (y=1; y <= hoehe; y++) {
        cout <<"+ ";
        for (x=3; x <= breite; x++) {
            cout <<"* ";
            for (y=x; y == hoehe; y++) {
                cout <<"+ ";
            }
        }
        cout <<endl;
    }
    cin.get(); cin.get();
}

Das Programm funktioniert leider immer noch nicht richtig, denn jetzt wird zwar die Breite korrekt von einem + umrandet, doch die Höhe fehlt, d.h. die Ausgabe eines 5 Zeichen breiten Rechtsecks sieht so aus: + * * * +
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
16.04.2005, 00:14 Uhr
0xdeadbeef
Gott
(Operator)


Uh...wie wärs damit, einfach vor und nach der for-Schleife, die du schon hast, etwas wie das hier

C++:
for(int i = 0; i < breite; ++i) cout << "+ ";
cout << endl;


zu hängen?
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
16.04.2005, 12:37 Uhr
~Pler(2)
Gast


Ich hab das mal in C programmiert, von den cout und so hab ich keine Ahnung; aber das Programm funktioniert, du musst dann das ja blos ersetzen.


C++:
#include <stdio.h>

int main( int argc , char* argv[] )
{
    int
        nBreite;
    int
        nHoehe;
    int
        i, j;
    char
        cMitte, cRand;

    printf( "Bitte geben Sie die Breite ein:" );
    scanf( "%d" , &nBreite );
    
    printf( "Bitte geben Sie die Hoehe ein:" );
    scanf( "%d" , &nHoehe );

    for( i = 1 ; i <= nHoehe ; i++ )
    {
        if( 1 == i || nHoehe == i )
        {
            cMitte = '-';
            cRand = '+';
        }
        else
        {
            cMitte = ' ';
            cRand = '|';
        }
        for( j = 1 ; j <= nBreite ; j++ )
        {
            if( 1 == j || nBreite == j )
            {
                printf( "%c" , cRand );
            }
            else
            {
                printf( "%c" , cMitte );
            }
        }
        printf( "\n" );
    }

    return 0;
}



Beispielablauf:


Code:
Bitte geben Sie die Breite ein:10
Bitte geben Sie die Hoehe ein:10
+--------+
|        |
|        |
|        |
|        |
|        |
|        |
|        |
|        |
+--------+

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
16.04.2005, 13:18 Uhr
~honk
Gast


also ich probiers mal ;)
is einfach so hier reingehackt, also ohne gewähr:


C++:
#include <iostream>
using namespace std;

int main()
{
    int breite, hoehe, x, y;
    cout << "Breite: "; cin >> breite;
    cout << "Hoehe: "; cin >> hoehe;

    for(x=0; x < breite; x++)
        cout << "+";
    cout << "\n";

    for(y=0; y < hoehe-2; y++)
    {
        cout << "+";
        for(x=0; x < breite-2; x++)
            cout << "*";
        cout "+\n";
    }

    for(x=0; x < breite; x++)
        cout << "+";
    cout << "\n";

    return 0;



sollte so eigentlich funktionieren...

honk
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: