cout-object in borland c++ Builder 1



  • hi, wer kann helfen

    1.cout<<"Text"endl; cuot-object bringt kein Text auf das Formular nach start
    2. using namespace std;//Hier Error namespace name expected!!!!
    Ich wollte das Programm in Bohrland c++ Builder laufen lassen um die Lösung der Augabe siehe unten zu sehen oder ist es in c.

    c++ habe ich keine Ahnung nur soviel das viele Befehle ihre Entsprechung in delphi haben und die ersten Lektionen von Herrn Volkerd c++.

    Aber ob mann immer den gleichen Algorithmus verwenden kann in Delphi/ C++?
    wer kann und würde einer Kovertation nach Delphi vornehmen.
    In Delphi kenne ich mich etwas besser aus und würde mich freuen in Delphi zu .
    von der Permutation im c++ Programm sehe ich nicht viel oder hat c++ Routinen dafür.
    Rätselfreunde können ja auch v. Hand die Aufgabe lösen.
    Ich kann den zeitlichen Aufwand eines Programmierers von c++ nach delphi b.z.w die Aufgabe s,u. gleich Delphi nicht so einschätzen.

    //---------------------------------------------------------------------------

    #include <vcl\vcl.h>
    #pragma hdrstop
    #include <iostream>
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma resource "*.dfm"
    using namespace std;//Hier Error   namespace name expected!!!!
    class Element
    {
    public:
    	const char* mName;
    public:
    	Element (const char* pName)
    	{
    		mName = pName;
    	}
    	void Ausgeben () const
    	{
    		cout << mName;
    	}
    };
    
    // Die Fahrer haben die Vornamen Anna, Berta, Christa, Dirk und Emil
    Element anna ("Anna");
    Element berta ("Berta");
    Element christa ("Christa");
    Element dirk ("Dirk");
    Element emil ("Emil");
    
    // Die Nachnamen sind Hungerast, Platten, Krampf, Sturz und Achter
    Element hungerast ("Hungerast");
    Element platten ("Platten");
    Element krampf ("Krampf");
    Element sturz ("Sturz");
    Element achter ("Achter");
    
    // Die Farben der Trikots waren gelb, rot, blau, weiß und schwarz
    Element gelb ("gelb");
    Element rot ("rot");
    Element blau ("blau");
    Element weiss ("weiß");
    Element schwarz ("schwarz");
    
    // Implizites Wissen um das Geschlecht
    Element herr ("Herr");
    Element frau ("Frau");
    
    class Platz
    {
    public:
    	const Element* mVorname;
    	const Element* mNachname;
    	const Element* mAnrede;
    	const Element* mTrikot;
    public:
    	void Ausgeben ()
    	{
    		if (mAnrede != 0) { mAnrede->Ausgeben (); cout << " ";}
    		if (mVorname != 0) { mVorname->Ausgeben (); cout << " ";}
    		if (mNachname != 0) { mNachname->Ausgeben (); cout << " ";}
    		if (mTrikot != 0) { mTrikot->Ausgeben (); cout << " ";}
    	}
    public:
    	Platz ()
    	{
    		mVorname = 0;
    		mNachname = 0;
    		mAnrede = 0;
    		mTrikot = 0;
    	}
    };
    
    bool GenauDannWenn (bool pWenn, bool pDann)
    {
    	if (pWenn) {
    		return pDann;
    	} else {
    		return ! pDann;
    	}
    }
    
    class Menge
    {
    private:
    	const Element* mMenge [5];
    	long mZustand;
    public:
    	void NeuStarten ()
    	{
    		mZustand = 0;
    	}
    	bool PermutationZuweisen (const Element** p1, const Element** p2, const Element** p3, const Element** p4, const Element** p5)
    	{
    		const Element* t;
    		if (mZustand == 0) {
    			*p1 = mMenge [0];
    			*p2 = mMenge [1];
    			*p3 = mMenge [2];
    			*p4 = mMenge [3];
    			*p5 = mMenge [4];
    		} else if ((mZustand % 24) == 0) {// 4!
    			t = *p5; *p5 = *p1; *p1 = t;
    			t = *p4; *p4 = *p2; *p2 = t;
    		} else if ((mZustand % 6) == 0) { // 3!
    			t = *p5; *p5 = *p2; *p2 = t;
    			t = *p4; *p4 = *p3; *p3 = t;
    		} else if ((mZustand % 2) == 0) { // 2!
    			t = *p5; *p5 = *p3; *p3 = t;
    		} else {
    			t = *p5; *p5 = *p4; *p4 = t;
    		}
    		mZustand ++;
    		return mZustand <= 120; // 5!
    	}
    public:
    	Menge (Element* p1, Element* p2, Element* p3, Element* p4, Element* p5)
    	{
    		mMenge [0] = p1;
    		mMenge [1] = p2;
    		mMenge [2] = p3;
    		mMenge [3] = p4;
    		mMenge [4] = p5;
    		mZustand = 0;
    	}
    };
    
    class Fall
    {
    protected:
    	Platz mPlatz [5 + 1];	// Index 0 ignorieren
    	Menge mVorname;
    	Menge mNachname;
    	Menge mTrikot;
    public:
    	void Loesen ()
    	{
    		long schritte = 0;
    		long loesung = 1;
    		mVorname.NeuStarten ();
    		while (mVorname.PermutationZuweisen (
    							&mPlatz [1].mVorname, &mPlatz [2].mVorname,	&mPlatz [3].mVorname,
    							&mPlatz [4].mVorname, &mPlatz [5].mVorname)) {					// Regel 1
    			AnredeZuweisen ();
    
    			schritte ++;
    			if (! DieHerrenSindDritterUndFuenfter ()) continue;							// Regel 11
    			if (! ChristaKamNachEmilInsZiel ()) continue;										// Regel 10
    
    			mNachname.NeuStarten ();
    			while (mNachname.PermutationZuweisen (
    										&mPlatz [1].mNachname, &mPlatz [2].mNachname,	&mPlatz [3].mNachname,
    										&mPlatz [4].mNachname, &mPlatz [5].mNachname)) {	// Regel 2
    				schritte ++;
    				if (! DieNachnamenDerHerrenHaben6Buchstaben ()) continue;			// Regel 5
    				if (! SturzLiefDirektVorHungerastEin ()) continue;						// Regel 6
    
    				mTrikot.NeuStarten ();
    				while (mTrikot.PermutationZuweisen (
    											&mPlatz [1].mTrikot, &mPlatz [2].mTrikot,	&mPlatz [3].mTrikot,
    											&mPlatz [4].mTrikot, &mPlatz [5].mTrikot)) {		// Regel 3
    					schritte ++;
    					if (! DirkTrugEinBlauesTrikot ()) continue;									// Regel 4
    					if (! RotDirektNachGelb ()) continue;												// Regel 7
    					if (! SchwarzDirektNachBerta ()) continue;									// Regel 8
    					if (! AchterTrugEinBlauesTrikot ()) continue;								// Regel 9
    
    					cout << "Lösung " << loesung ++ << " nach Schritt " << schritte << endl;
    					Berichten ();
    				}
    			}
    		}
    		cout << "Insgesamt " << schritte << " Schritte " << endl;
    	}
    	void BrutalLoesen ()
    	{
    		long schritte = 0;
    		long loesung = 1;
    		mVorname.NeuStarten ();
    		while (mVorname.PermutationZuweisen (
    							&mPlatz [1].mVorname, &mPlatz [2].mVorname,	&mPlatz [3].mVorname,
    							&mPlatz [4].mVorname, &mPlatz [5].mVorname)) {					// Regel 1
    			AnredeZuweisen ();		// implizites Wissen
    			mNachname.NeuStarten ();
    			while (mNachname.PermutationZuweisen (
    										&mPlatz [1].mNachname, &mPlatz [2].mNachname,	&mPlatz [3].mNachname,
    										&mPlatz [4].mNachname, &mPlatz [5].mNachname)) {	// Regel 2
    
    				mTrikot.NeuStarten ();
    				while (mTrikot.PermutationZuweisen (
    											&mPlatz [1].mTrikot, &mPlatz [2].mTrikot,	&mPlatz [3].mTrikot,
    											&mPlatz [4].mTrikot, &mPlatz [5].mTrikot)) {		// Regel 3
    					schritte ++;
    					if (! DirkTrugEinBlauesTrikot ()) continue;									// Regel 4
    					if (! DieNachnamenDerHerrenHaben6Buchstaben ()) continue;		// Regel 5
    					if (! SturzLiefDirektVorHungerastEin ()) continue;					// Regel 6
    					if (! RotDirektNachGelb ()) continue;												// Regel 7
    					if (! SchwarzDirektNachBerta ()) continue;									// Regel 8
    					if (! AchterTrugEinBlauesTrikot ()) continue;								// Regel 9
    					if (! ChristaKamNachEmilInsZiel ()) continue;								// Regel 10
    					if (! DieHerrenSindDritterUndFuenfter ()) continue;				  // Regel 11
    
    					cout << "Lösung " << loesung ++ << " nach Schritt " << schritte << endl;
    					Berichten ();
    				}
    			}
    		}
    		cout << "Insgesamt " << schritte << " Schritte " << endl;
    	}
    	bool AchterTrugEinBlauesTrikot ()
    	{
    		for (long i = 1; i <= 5; i ++) {
    			if (! GenauDannWenn (mPlatz [i].mNachname == &achter,
    														mPlatz [i].mTrikot == &blau)) return false;
    		}
    		return true;
    	}
    	bool SchwarzDirektNachBerta ()
    	{
    		for (long i = 1; i <= 4; i ++) {
    			if (! GenauDannWenn (mPlatz [i].mVorname == &berta,
    														mPlatz [i + 1].mTrikot == &schwarz)) return false;
    		}
    		return true;
    	}
    	bool RotDirektNachGelb ()
    	{
    		for (long i = 1; i <= 4; i ++) {
    			if (! GenauDannWenn (mPlatz [i].mTrikot == &gelb,
    														mPlatz [i + 1].mTrikot == &rot)) return false;
    		}
    		return true;
    	}
    	bool DirkTrugEinBlauesTrikot ()
    	{
    		for (long i = 1; i <= 5; i ++) {
    			if (! GenauDannWenn (mPlatz [i].mVorname == &dirk,
    														mPlatz [i].mTrikot == &blau)) return false;
    		}
    		return true;
    	}
    	bool SturzLiefDirektVorHungerastEin ()
    	{
    		for (long i = 1; i <= 4; i ++) {
    			if (! GenauDannWenn (mPlatz [i].mNachname == &sturz,
    														mPlatz [i + 1].mNachname == &hungerast)) return false;
    		}
    		return true;
    	}
    	bool DieNachnamenDerHerrenHaben6Buchstaben ()
    	{
    		for (long i = 1; i <= 5; i ++) {
    			if (! GenauDannWenn (mPlatz [i].mAnrede == &herr,
    														strlen (mPlatz [i].mNachname->mName) == 6)) return false;
    		}
    		return true;
    	}
    	bool DieHerrenSindDritterUndFuenfter ()
    	{
    		if (mPlatz [3].mAnrede != &herr) return false;
    		if (mPlatz [5].mAnrede != &herr) return false;
    		return true;
    	}
    	bool ChristaKamNachEmilInsZiel () // Danach, aber nicht direkt danach gefordert
    	{
    		for (long i = 1; i <= 5; i ++) {
    			if (mPlatz [i].mVorname == &emil) return true;
    			if (mPlatz [i].mVorname == &christa) return false;
    		}
    		return false; // kommt nicht hierher
    	}
    private:
    	void AnredeZuweisen ()  // implizites Wissen Vorname / Geschlecht
    	{
    		for (long i = 1; i <= 5; i ++) {
    			Platz* platz = mPlatz + i;
    			if (platz->mVorname == &anna) platz->mAnrede = &frau;
    			if (platz->mVorname == &berta) platz->mAnrede = &frau;
    			if (platz->mVorname == &christa) platz->mAnrede = &frau;
    			if (platz->mVorname == &dirk) platz->mAnrede = &herr;
    			if (platz->mVorname == &emil) platz->mAnrede = &herr;
    		}
    	}
    	void Berichten ()
    	{
    		for (long i = 1; i <= 5; i ++) {
    			cout << i << ".ter Platz = ";
    			mPlatz [i].Ausgeben ();
    			cout << endl;
    		}
    		cout << endl;
    	}
    public:
    	Fall () :
    		mVorname (&anna, &berta, &christa, &dirk, &emil),
    		mNachname (&hungerast, &platten, &krampf, &sturz, &achter),
    		mTrikot (&gelb, &rot, &blau, &weiss, &schwarz)
    	{
    	}
    };
    
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
    	: TForm(Owner)
    {
    
    }
    //---------------------------------------------------------------------------
    // Stefan Bachert für aboutIT  (Stefan.Bachert@aboutit.de)
    // Copyright 2001 Stefan Bachert GmbH
    
      int main (int argc, char* argv[])
        {
    	Fall fall;
     	fall.Loesen ();
        fall.BrutalLoesen ();
        return 0;
        }
    

    /---------------------------------------------------------------------------
    Hier die Aufgabe da zu
    Tour de Trance

    Viel ist es nicht, was Reporter Ralf Radlos vom Ziel
    der Tour de Trance im Gedächtnis hängen blieb:

    Die Fahrer haben die Vornamen Anna, Berta,
    Christa, Dirk und Emil
    Die Nachnamen sind Hungerast, Platten,
    Krampf, Sturz und Achter
    Die Farben ihrer Trikots waren gelb, rot,
    blau, weiß und schwarz
    Dirk trug ein blaues Trikots
    Die Nachnamen der Herren haben
    sechs Buchstaben
    Sturz lief vor Hungerast ein
    Der Träger des roten Trikots rollte direkt
    nach dem des gelben ins Ziel
    Der Träger des schwarzen Trikots kam direkt
    nach Berta ins Ziel
    Achter trug ein blaues Trikot
    Christa kam nach Emil ins Ziel
    Die Herren sind Dritter und Fünfter
    Wie heißen die Fahrer, welche Trikots trugen sie und
    in welcher Reihenfolge rollten sie über die Ziellinie?
    In jeden Fall würde ich mich sehr freuen auf die Antwort.
    MfG
    biochipc



  • Wie viele Fragen sind das eigentlich? Schon mal den Spruch "Eine Frage pro Thread, ein Thread pro Frage" gehört?

    cout<<"Text"endl; cuot-object bringt kein Text auf das Formular nach start

    Stimmt. cout und Formular passt nicht zusammen. Entweder Konsolenprogramm oder Formulare.



  • HI; hez

    Danke erst einal .
    Aber in Delphi kann ich KonsolenProgramme(Turbopascall-programme ) laufen lassen

    optionen: kann ich auf Textbilschirm umstellen
    und wo mache ich das bei Bohrland c++ builder 1 oder geht das nicht so einfach wie in delphi oder ist das o.g. Programm in c geschrieben und heist Konsole oder kann ich zubeör runterladen.
    Habe bei volkerd ein Programmierlektion angefangen dann ist

    void  main()
    {
    };//auch Konsole bringt aber keine Fehlereldung in c++ builder 1?
    

    Wie auch immer wenn einer es will kann er mal nur das o.g. Programm auf seinen Rechner laufen lassen und mir sagen es läst sich ohne fehler starten.

    MfG
    biochipc.



  • Auch im BCB kannst du Konsolenanwendungen erstellen. Unter Datei -> Neu sollte sich dazu ein KonsolenWizard o.ä. finden.

    Und noch ein Tip: benutze die Vorschaufunktion des Forums und lies dir deine Beiträge nochmal in Ruhe durch, bevor du sie endgültig abschickst. Momentan sind sie nämlich über weite Strecken unverständlich.



  • Hi, Jansen

    Erst einmal vielen Dank für den Hinweis in Datei Neu ist das Konsolenprogramm
    Im C++ builder 1 Buch mit CD leider kein Hinweis von Konsole auchnicht in der hilfe.

    Jetzt kann ich o.g Programm starten
    aber ohne using namespace std; functioniert es
    using namespace std; // error namespace exepected

    Weis nicht warum?

    MfG
    biochipc



  • aber ohne using namespace std; functioniert es
    using namespace std; // error namespace exepected

    dann lass std doch einfach weg 😕



  • Die Version 1 ist ja schon reichlich in die Jahre gekommen. Vielleicht ist sie einfach noch nicht nach dem ANSI C++ Standard von 1998 ausgelegt?



  • jo, das kann natürlich sein.



  • hi,
    Kann einer helfen d. o. genannte Konsollen-Programm nach Bohrland c++ Version 1 zu übersetzen.Das wären wohl nur cin/cout-befele oder? damit sie auf der Form ausgegeben werden können.

    Gruß biochipc



  • 1. Bertha Sturz mit weißem Trikot
    2. Anna Hungerast mit schwarzem Trikot
    3. Emil Krampf mit gelbem Trikot
    4. Christa Platten mit rotem Trikot
    5. Dirk Achter mit blauem Trikot

    Richtig? 😉



  • Hi,Jannika

    Erstmal mal vielen Dank das Du dir dafür ZeitZeit genommen hast für deine richtige Lösung (Mit PC o. Hand o. beides).
    Vieleicht kannst Du deine Lösungszeit angeben. ich habe 14 Minten gebraucht und später auch durchs C-Programm (mit borl.c++ version 1 )aber ich kann die Echtzeit nicht stopen ich mach nur etwas Delphi.

    Ich habe den mit Qellcode mit <code> am Anfang und Ende eingeschlossen und es bleibt in voller Länge .Was mach ich Falch?
    Und ist der code reines C wenn er im Textfensterfenster laüft?

    Vieleicht kann einer in wenigstens in Borl. C++ Lauffähig machen.

    Gruß
    biochipc



  • Hi!

    Ich würde dir einen neuen Compiler empfehlen, der sich auch nach dem neuen Standard richtet. Wie alt ist Borland C++ Builder 1 eigentlich? Also ich würde dir den gcc empfehlen. Wenn du eine IDE willst, dann nimm DevC++, der benutzt als Compiler den gcc.
    DevC++: http://www.bloodshed.net/devcpp.html
    GCC: http://www.gnu.org/software/gcc/gcc.html
    Als alternative wäre da der Compiler der beim VS7.1 dabei ist. Der ist wirklich sehr gut. Diesen kann man bei MS sogar kostenlos downloaden:
    http://msdn.microsoft.com/visualc/vctoolkit2003/

    Code-Hacker



  • Hi,

    das Programm ist so im BCB 6 lauffähig. Du musst nur ein KONSOLEN-Projekt erstellen (im BCB 6: unter Datei -> Neu -> Weitere...). Auch mit dem BCB 1 müssen Konsolenprojekte möglich sein.

    Nur den Code-Block mit dem TForm musst Du herausnehmen und sinnvollerweise vor dem return 0 in der main noch ein getchar; einfügen und dafür natürlich noch stdio.h includieren. Bei läuft das Programm dann einwandfrei...



  • Hab die Aufgabe nur von Hand gelöst! Mit BCB6 klappts aber wirklich einwandfrei!

    10-15Minuten!



  • Jannika schrieb:

    Hab die Aufgabe nur von Hand gelöst! Mit BCB6 klappts aber wirklich einwandfrei!

    10-15Minuten!

    Danke!
    Es laüft bei mir als consolen in BCB1 aber den Qellcode (cin/cout)so ändern das er auf der TFORM in BCB1 laüft kann für eien der sich etwas auskennt nicht so schwer sein und nicht solange dauern.
    Gruß
    biochipc


Anmelden zum Antworten