LLpresident Geschrieben 22. August 2001 Geschrieben 22. August 2001 Hallo.Ich habe ein Problem.Ich will die Variable "Preis" aus der selbsterstelten Headerdtei "ware.h" in der selbsterstelten Headerdatei "zahlung.h" benutzen.Anbei die beiden Headerdateien. Danke für eure mühe. Headerdatei ware.h: //--------------------------------------------------------------------------- #include <iostream.h> #include <conio.h> //--------------------------------------------------------------------------- int ware() { int auswahl, z, preis; int cola, sprit, fanta, sevenupu, cappuchino, kaffee; randomize(); cola = random(20); sprit = random(20); fanta = random(20); sevenupu = random(20); cappuchino = random(20); kaffee = random(20); cin>>auswahl; switch(auswahl) { case 22: preis=100; if(cola==0) { cout<<"Artikel leider ausverkauft."; } cola--;break; case 23: preis=100; if(sprit==0) { cout<<"Artikel leider ausverkauft."; } sprit--;break; case 24: preis=100; if(fanta==0) { cout<<"Artikel leider ausverkauft."; } fanta--;break; case 25: preis=100; if(sevenupu==0) { cout<<"Artikel leider ausverkauft."; } sevenupu--;break; case 44: preis=70; if(cappuchino==0) { cout<<"Artikel leider ausverkauft."; } cappuchino--;break; case 45: preis=50; if(kaffee==0) { cout<<"Artikel leider ausverkauft."; } kaffee--;break; default:cout<<"Unbekante Auswahl.Bitte waehlen sie neu.";z = 0;break; } return (cola); } Headerdatei "zahlung.h": #include <iostream.h> #include <conio.h> #include "ware.h" //--------------------------------------------------------------------------- int zahlung() { int zehn, zuenfzig, einz, zwei; int funktionware; randomize(); zehn = random(15); zuenfzig =random(15); einz =random(15); zwei =random(15); if(zehn < 4 || zuenfzig < 4 || einz < 4 || zwei < 4) { cout<<"Bitte passend zahlen!"<<"\n"<<"\n"; } cout<<"Was moechten sie? "; funktionware=ware(); } :confused: Zitieren
Shadax Geschrieben 22. August 2001 Geschrieben 22. August 2001 Wenn Du die Variable `preis' nicht in der Funktion ware(), sondern einfach global definierst, dann ist sie auch für alle anderen Funktionen sichtbar. Zitieren
Crush Geschrieben 22. August 2001 Geschrieben 22. August 2001 Entweder so wie Shadax es sagt. (Beste Lösung) Oder Du definierst Preis als extern und static (sollte eigentlich auch funktionieren - ähnlicher Effekt wie oben). Oder Du gibt Referenzen/Pointer von Preis an zahlung() zurück, mit denen Du den Inhalt von Preis verändern kannst, aber auch hier static nicht vergessen. Wenn Du jedoch vorhast mit mehreren Waren zu arbeiten, dann mußt Du tatsächlich die Pointer-Lösung benutzen und Waren-Structs definieren, die darin eingetragen sind. Oder in C++ Waren-Objekte und die Objekte ins Array eintragen. Also der Aufbau des Programms ist alles andere als eine gute Lösung, find ich. Du solltest das Ganze anders organisieren. In C++ würde ich eine Getränke-Klasse machen, diese in verschiedene Getränke ableiten, mehr Fähigkeiten zur Verfügung stellen wie Titel und Name. Von diesen Klassen Objekte erzeugen und in eine Map oder Multi-Map setzten (STL-Template). Hierzu kann man sogar den Getränkenamen oder auch die Nummer als Argument benutzen um das jeweilige Getränk suchen zu lassen. Entfernen und erzeugen neuer Getranke wäre ein Kinderspiel. Getränke könnten sogar auf Wunsch mehrfach vorkommen (Lager1, Lager2, Lager3). Ich weiß, daß viele C++ verschreien, aber was anderes wollen die aus der Industrie halt einfach nicht und außerdem kann man sich eine Menge Zeit sparen und damit relativ schnell ordentliche Ergenisse erzielen. (Und Fehler werden reduziert und leichter erkannt). <FONT COLOR="#a62a2a" SIZE="1">[ 22. August 2001 17:35: Beitrag 1 mal editiert, zuletzt von Crush ]</font> Zitieren
LLpresident Geschrieben 23. August 2001 Autor Geschrieben 23. August 2001 Danke für die Ideen.Problem ist blos das ich halt sozusagen Neulinng bin und das alles erst mal prozesorientiert mache.Deshalb nutzt mir die sache mit den Objekten leider noch nichts.Der obrige Quelltext enthält nur 2 Funktionen die ich beide in unterschiedliche Headerdatein geschrieben habe.Es sollen insgesamt 3 einzelne Teilfunktionen werden.die dann in einer Funktion Namens "Getränkeautomat" mit ein ander verknüpft werden.Hier die Funktion Getränkeautomat: //---------------------------------------------------------- #include <iostream.h> #include <conio.h> //---------------------------------------------------------- void main() { int z; z = 0; while(z==0) { int funktionzahlung; z=1; cout<<"Bitte waehlen sie durch eingabe der Producktnummer ein Produckt aus."; cout<<"\nSie koennen das Programm jeder Zeit durch eingabe von A beenden."; cout<<"\n"; cout<<"\n"<<"Cola"<<"\t"<<"\t"<<"22"<<"\t"<<"1,00 DM"; cout<<"\n"<<"Sprite"<<"\t"<<"\t"<<"23"<<"\t"<<"1,00 DM"; cout<<"\n"<<"Fanta"<<"\t"<<"\t"<<"24"<<"\t"<<"1,00 DM"; cout<<"\n"<<"Seven Up"<<"\t"<<"25"<<"\t"<<"1,00 DM"; cout<<"\n"<<"Cappucino"<<"\t"<<"44"<<"\t"<<"0,70 DM"; cout<<"\n"<<"Kaffee"<<"\t"<<"\t"<<"45"<<"\t"<<"0,50 DM"; cout<<"\n"<<"\n"; //cout<<"Was moechten sie?"; funktionzahlung=zahlung(); } getch(); } Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.