Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Raute mit Loch

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 <
000
08.03.2005, 18:49 Uhr
~Theresa
Gast


Hallo
Ich denke mein Problem ist sicher ein Änfängerproblem, doch ich komme leider nicht weiter.

Also ich muss ein Programm erstellen, wo ich eine Raute mit einem Loch aus geben muss.
Eingeben werden muss 1. groesse und 2. wandstärke.
Es müsste folgendermaßen aussehen wenn man bei punkt 1. 10 und bei 2. 3 eingibt.

Code:
.........*
........**
.......***
......****
.....*****
....******
...***.***
..***..***
.***...***
***....***  
***....***
***...***
***..***
***.***
******
*****
****
***
**
*


(Leider ist das Bild etwas verruscht)

Nun zu meinem Problem: Ich bekomme eine ungefüllte raute hin mit einigen fo-schleifen, doch das Loch konnte ich bisher nicht realisieren.
Es wäre super, wenn mir jemand dabei helfen könnte.
Bin total verzweifel, vorallem weil ich diese Aufgabe unterallen umständen lösen muss und ich schon einige stunden davor gessen habe und es nicht geschaft hab.


Vielen Dank schonmal im vorraus

Theresa

Bearbeitung von 0xdeadbeef:

code-tags eingefügt, wg. monospaced-font


Dieser Post wurde am 09.03.2005 um 16:37 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
08.03.2005, 19:14 Uhr
Spacelord
Hoffnungsloser Fall


www.fun-soft.de/showtopic.php?threadid=3276&time=1110305396

Damit sollte dir eigentlich "geholfen" sein.

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
08.03.2005, 20:26 Uhr
~Theresa
Gast


tut mir leid aber aus diesem quelltext werde ich zum größtenteul leider nicht schlau
ich weiß auch nicht wie diese figur mir helfen könnte
aber trotzdem vielen danke für deine hilfe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
08.03.2005, 20:52 Uhr
enno-tyrant
Frag nicht!


kennt ihr euch? www.fun-soft.de/showtopic.php?threadid=10778&time=1110299701

btw: es heißt voraus (nicht vorraus)
--
...um etwas zu verstehen muß man wissen wie es funktioniert...

Dieser Post wurde am 08.03.2005 um 20:54 Uhr von enno-tyrant editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
09.03.2005, 16:34 Uhr
(un)wissender
Niveauwart


Das hatte ich noch rumfliegen von früher, löst genau dein Problem. Ist aber keine mathematische Lösung, sondern nur stumpf an Vorgabe (ist so aber auch eventuell leichter zu verstehen). Mach dir also ruhig noch ein paar Gedanken...
Deine Beispielraute ist übrigens keine Raute. Die Seiten einer Raute sind alle gleich lang.



C++:
#include <algorithm>
#include <iostream>
#include <sstream>

int main(int arc, char * args[])
{
    if(arc < 3)
    {
         std::cout << "Params\n";
         return 0;
    }
    
    int width, wallThickness;
    std::stringstream formater;
    formater << args[1];
    formater >> width;
    formater.clear();
    formater.str("");
    formater << args[2];
    formater >> wallThickness;
    if(width <= wallThickness)
    {
        std::cout << "Width too small!\n";
        return 0;
    }  
    else if(wallThickness < 1)
    {
        std::cout << "Wall thickness too thin!\n";
        return 0;
    }    
    else
    {
        std::cout << "Diamond with with "
                  << width << " and wall thickness "
                  << wallThickness << ":\n\n";
    }
  
    const char WALL = '*';
    const char SPACE = '.';
    
    const int ROWS = 2 * width - 1;
    int posBeginWall = width - 1;
    bool directDown = true;
    
    for(int i = 0; i < ROWS; ++i)  
    {
        for(int j = 0; j < width; ++j)
        {
            if(j < posBeginWall && directDown || j > posBeginWall && !directDown)
            {
                std::cout << SPACE;
            }      
            else
            {
               if(((j < posBeginWall + wallThickness  || j >= width - wallThickness)
                    && directDown) ||
                  ((j > posBeginWall - wallThickness || j < wallThickness)
                    && !directDown))
                {
                    std::cout << WALL;
                }    
                else
                {
                    std::cout << SPACE;
                }    
            }    
        }  
        
        if(posBeginWall > 0)
        {
            --posBeginWall;
        }    
        else
        {
            posBeginWall = width - 2;
            directDown = false;
        }
          
        std::cout << '\n';
    }
}


--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ 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: