enumeratoere

Tags:    c++

Hej,
jeg er i gang med at skrive et program, hvor man skal forestille sig, at kunne veksle pengeselder til mønter (kun 10'ere og 20'ere).
Jeg har i en headertil oprettet en struct ved navn 'indhold', som indeholder to variable i form af int, nemlig 10 og 20, der repræsentere de to typer af mønter.
Når programmet debugges, skal automaten være tom for mønter, og så skal ejeren af den selv kunne fylde mønter på.
Det er her mit spørgsmål kommer ind i billedet:
Jeg skal lave en funktion, som tager en enum-type og et heltal som argument, således: void addCoins (CoinType c, int antal).
Jeg har tænkt mig at lave denne i en ny headerfil: enum coinType{TI, TYVE};

Jeg er dog lidt blank på området om hvordan addCoins-funktionen skal kunne virke i min struct i den gamle headerfil? - altså hvordan jeg skal kunne tilføje 10- og 20-kroner til structen.

Håber I kan give mig lidt response,
tak på forhånd.

Mvh. Clive



Enums er faktisk integers så du kunne gøre noget i denne stil:

Fold kodeboks ind/udKode 


Jeg giver enum typerne eksplicitte værdier fordi compileren KUNNE give dem andre værdier end 0 og 1.



OK, det virker fornuftigt nok. Men jeg er stadig i tvivl om hvordan jeg får mulighed for at tilføje mønter? Kan jeg uden videre bruge min addCoin-funktion på structen til 10- og 20-kroner?

Mvh. Clive



OK, det virker fornuftigt nok. Men jeg er stadig i tvivl om hvordan jeg får mulighed for at tilføje mønter? Kan jeg uden videre bruge min addCoin-funktion på structen til 10- og 20-kroner?

Mvh. Clive


Nu ved jeg ikke helt hvordan din struct ser ud men følgende illustrerer hvordan, du kunne gøre:
Fold kodeboks ind/udKode 


Output fra ovenstående er:
Fold kodeboks ind/udKode 




Indlæg senest redigeret d. 10.04.2008 12:49 af Bruger #2695
Jeg takker mange gange for dit svar.
Inden jeg evt. gør brug af det, har jeg fået oprettet en lidt simpel kode, hvor der er pre-defineret et indhold af mønter. Jeg får dog hele tiden fejlmeddelsen 'identifier not found' ud for mine 3 funktionskald (og en 'system ("PAUSE")' kommando):

Fold kodeboks ind/udKode 


Som sagt ligger fejlen i, at compeileren (Visual C++ 2008) kommer med meddelserne 'identifier not found' for de 4 elementer i main-funktionen.
Jeg syntes ellers jeg har includet det hele som det skal, og sørget for at huske diverse "{" og "}"
Håber du/I lige kan overskue hvad jeg evt. har gjort galt, eller mangler.

Mvh. Clive



Indlæg senest redigeret d. 11.04.2008 08:32 af Bruger #13404
Du har gjort addCoins funktionen til en metode på din Automat klasse, så du kan ikke kalde dem fra globalt scope. Du er nødt til at oprette et Automat objekt og kalde metoden på det.
system() funktionen er defineret i <cstdlib> så den skal du inkludere.
Derudover har du vist en fejl i addCoins metoden:
if (c==TYVE)
{
x.tyve=antal;
}
Dette lægger IKKE antallet til x.tyve. Det gør det her derimod:
if (c==TYVE)
{
x.tyve+=antal;
}



Indlæg senest redigeret d. 11.04.2008 09:42 af Bruger #2695
OK, hvordan mener du med at oprette et Automat objekt?
- er det noget, som sætter metoden lig med Automat, og så kalder jeg objektet?

Mvh. Clive



Fold kodeboks ind/udKode 




t