konkrete Inhaltsfragen

Moderator: Moderatoren

Chris087
Beiträge: 296
Registriert: Mi 21. Mai 2008, 13:00

Re: konkrete Inhaltsfragen

Beitrag von Chris087 » Mo 29. Dez 2008, 14:36

Hey Leute,

Ich hab auch nochmal ein Problem mit der grafischen Darstellung bei Aufgabe 5:

Und zwar initialisiere ich zwei Fahrzeuge, ein fahrendes Auto und ein parkendes Fahrrad, das Auto auf Strasse1, das Fahrrad auf Strasse2.

Jetzt bewegt sich in der Map aber das parkende Fahrrad genauso wie das Auto von Anfang an über die Strasse, der Startzeitpunkt wird also anscheinend nicht beachtet.

Das komische daran ist, es wird beim Fahrrad die ganze Zeit angezeigt:
"Rel. Position auf Weg: 0.0"

Ich hab auch schon mittels Debugger überprüft, es geht alles mit rechten Dingen zu. Die Variablen "p_dAbschnittsstrecke" und "Rel_Position" bleiben NULL, bis der Startzeitpunkt erreicht wird. Und obwohl "bZeichneFahrrad" mit Rel_Position=0 aufgerufen wird, bewegt sich das Fahrrad.

Ich blicke da nicht mehr durch, hat jemand ne Idee?

Aus meiner main.cpp:

Code: Alles auswählen

void vAufgabe_5()
{
	bInitialisiereGrafik(1000,650);

	//Weg Weg1("Strasse1",500);
	//Weg Weg2("Strasse2",500);

	Weg* Strasse1 = new Weg("Strasse1",500);
	cout << *Strasse1 << endl << endl;

	Weg* Strasse2 = new Weg("Strasse2",500);
	cout << *Strasse2 << endl << endl;

	PKW* Auto = new PKW("Auto",150,10,40,60);
	cout << *Auto << endl << endl;

	Fahrrad* Rad = new Fahrrad("Rad",20);
	cout << *Rad << endl << endl;

	Strasse1->vAnnahme(Auto);
	Strasse2->vAnnahme(Rad);
	
	Auto->vNeueStrecke(Strasse1);
	Rad->vNeueStrecke(Strasse2,2);

	cout << *Strasse1 << endl;
	cout << *Strasse2 << endl;

	int koordinaten[32];

	koordinaten[0] = 680;
	koordinaten[1] = 40;

	koordinaten[2] = 680;
	koordinaten[3] = 300;

	koordinaten[4] = 680;
	koordinaten[5] = 570;

	koordinaten[6] = 850;
	koordinaten[7] = 570;

	koordinaten[8] = 970;
	koordinaten[9] = 500;

	koordinaten[10] = 970;
	koordinaten[11] = 390;

	koordinaten[12] = 850;
	koordinaten[13] = 300;

	koordinaten[14] = 170;
	koordinaten[15] = 300;

	koordinaten[16] = 70;
	koordinaten[17] = 250;

	koordinaten[18] = 80;
	koordinaten[19] = 90;

	koordinaten[20] = 200;
	koordinaten[21] = 60;

	koordinaten[22] = 320;
	koordinaten[23] = 150;

	koordinaten[24] = 320;
	koordinaten[25] = 420;

	koordinaten[26] = 350;
	koordinaten[27] = 510;

	koordinaten[28] = 500;
	koordinaten[29] = 570;

	koordinaten[30] = 680;
	koordinaten[31] = 570;
	
	bZeichneStrasse(Strasse1->p_sName,Strasse2->p_sName,500,16,koordinaten);
	vSleep(500);

	//cout << Weg1 << endl;
	//PKW Auto("Auto", 120, 8, 20, 50);
	//Fahrrad Rad ("Rad", 20);

	/*Auto.vNeueStrecke(&Weg1);
	Rad.vNeueStrecke(&Weg2,1);		//Parkendes Fzg
	cout << Auto << endl;
	cout << Rad << endl;
	cout << Weg1 << endl;
	cout << Weg2 << endl;*/


	
	for(dGlobaleZeit = 0; dGlobaleZeit <=5;dGlobaleZeit +=0.05)
	{
		vSetzeZeit(dGlobaleZeit);
		Strasse1->vAbfertigung();
		Strasse2->vAbfertigung();
		Auto->vZeichnen(Strasse1);
		Rad->vZeichnen(Strasse2);
		vSetzeZeit(dGlobaleZeit);
		cout << *Rad << endl;
		cout << *Auto << endl;
	}

	cout << *Strasse1 <<endl;
	vSleep(500);
}


Ps.: Noch eine kleine Frage: Wie schaffe ich es, dass Fahrzeuge, die angehalten haben oder noch garnicht losgefahren sind, nicht mehr bei der Abfertigung Sprit verlieren?

Danke schonmal

Darkmaster
Beiträge: 501
Registriert: Do 19. Jun 2008, 12:12

Re: konkrete Inhaltsfragen

Beitrag von Darkmaster » Mo 29. Dez 2008, 18:05

bau in deine abfertigung ne if anweisunng ein in der du das verhalten abfragst (mit getverhalten() funktion).
aber eig wird der tankverbrauch ja über die gefahrene strecke berechnet und da parkende autos nicht fahren, ist das dann wohl auch nicht ganz richtig in deinem programm.

Chris087
Beiträge: 296
Registriert: Mi 21. Mai 2008, 13:00

Re: konkrete Inhaltsfragen

Beitrag von Chris087 » Di 30. Dez 2008, 15:54

Ok bin doch noch selbst dahintergekommen!

Es ist garnichts falsch, ich hab das Losfahren und das Anhalten nur noch garnicht implementiert... bin ja erst bei A5!! So kanns gehen wenn man mal 4 Wochen nicht programmiert... :roll: Leider total den Überblick verloren sorry.

Und das Tankentleeren ist jetzt an die tatsächlich gefahrene Strecke und nicht an (MaxGeschwindigkeit*vergangeneZeit) gekoppelt... danke für den Tipp.

p-jakob
Beiträge: 5
Registriert: Mo 3. Nov 2008, 10:04

Re: konkrete Inhaltsfragen

Beitrag von p-jakob » Mo 5. Jan 2009, 12:21

Code: Alles auswählen

 void vAktualisieren()
      {
         list <LazyAktion<T>*>::const_iterator itL;

         if ( bChanged )
         {
	         // ausstehende Aktionen durchfuehren
	         for (itL=p_ListeAktionen.begin(); itL != p_ListeAktionen.end(); itL++ )
	         {
	         // Aktion ausführen
		        (*itL)->vAusfuehren();
            // Zeiger auf Action-Element löschen
				//p_ListeAktionen.erase(itL);
	         }
	         // Liste der Aktionen leeren
				p_ListeAktionen.clear();

	         bChanged = false;
         }
      }

also ich habe keine idee, wie ich den Zeiger auf Action-Element löschen kann

Wenn das Fahrzeug den Weg verlässt (in Aufgabe 6), wieso wird es dann noch gezeichnet? (ist jedenfalls bei mir so)
Hilfe!  :D

Jochen
Beiträge: 218
Registriert: Di 10. Jun 2008, 12:06

Re: konkrete Inhaltsfragen

Beitrag von Jochen » Mo 5. Jan 2009, 17:38

probiers mal mit delete(*itL) statt p_ListeAktionen.erase(itL);

;)

p-jakob
Beiträge: 5
Registriert: Mo 3. Nov 2008, 10:04

Re: konkrete Inhaltsfragen

Beitrag von p-jakob » Fr 9. Jan 2009, 11:12

hauptsache der praktikumsbetreuer hat mich heute blöd angemacht, weil ja eine falsche musterlösung rumginge, aber er nicht wüßte wie die aussähe, aber mein programm war wohl auch an einigen stellen falsch und er will aber nichts falsches vermuten...

weiß jemand etwas von einer falschen musterlösung?

midrantos
Beiträge: 170
Registriert: Sa 22. Mär 2008, 13:51

Re: konkrete Inhaltsfragen

Beitrag von midrantos » Fr 9. Jan 2009, 13:57

Amüsant diese Heinis, dass muss man sagen.

Ne ehrlich, zum jetzigen Zeitpunkt sind schon so viele Leute fertig, dass es meiner Meinung nach für jeden möglich wäre, sich eine korrekte Musterlösung zu beschaffen. Das das nicht sinnvoll ist, weil die Testate ja schon sehr gründlich abgenommen werden, (und natürlich auch wegen dem Lerneffekt ;) ) steht auf einem anderen Blatt. Dann ein Theater anzufangen wegen falscher Musterlösung ist schon witzig von den Betreuern.

JohnWayne
Beiträge: 61
Registriert: Sa 21. Jun 2008, 15:59

Re: konkrete Inhaltsfragen

Beitrag von JohnWayne » Di 13. Jan 2009, 12:12

edit [..]
Zuletzt geändert von JohnWayne am Do 5. Nov 2009, 23:33, insgesamt 1-mal geändert.

Benutzeravatar
[MD]
Beiträge: 389
Registriert: Mi 16. Apr 2008, 14:26

Re: konkrete Inhaltsfragen

Beitrag von [MD] » Do 15. Jan 2009, 10:21

Die Typecasts stehen nicht explizit im Text, aber um die letzte Aufgabe zu lösen sind sie notwendig. Man muss beim erstellen der Welt ja die Daten aus der Datei auslesen und anhand dieser Wege, Kreuzungen und Fahrzeuge erstellen. Dabei mussten die Daten aus der Kreuzung in Daten für die Wege umgewandelt werden und hierbei musste man den Typecast explizit angeben, da es sich um verschiedene Klassen handelt. Ich weiß das jetzt nicht mehr ganz genau, aber irgendwie so war das (ist halt schon etwas länger her...)
Ciao [MD]

King_Fuck
Beiträge: 109
Registriert: Do 26. Nov 2009, 11:12

Re: konkrete Inhaltsfragen

Beitrag von King_Fuck » So 29. Nov 2009, 10:11

Hallo

Ich weiß mittlerweile dass man am Anfang jedes c++ Programms #include <iostream> using namespace std; schreibt.
In der ersten Zeile wird die Standardbibliothek eingebunden. Was bewirkt die zweite Zeile? Was sind überhaupt namspaces und was std? Auf solche Fragen geben mir die Betreuer entweder keine Antwort oder sagen "Lies dir zum Thema das Buch xy durch"

Ich möchte schon gerne die C++ Sprache verstehen, aber die RWTH hat es mir nach einem Jahr immer noch nicht beigebracht. Vielleicht hilft mir ja das Forum.

mfg

Antworten

Zurück zu „Praktikum Informatik II“