1

lørdag, 11. februar 2012, 15:46


ja som overskriften antyder, har jeg lidt brug for hjælp til noget c++ kodning.

jeg forsøger at få det hele til at virke ordenlig. når man indtaster hvor mange penge man vil putte i kan man både putte en 1 kr. i og 10 kr. så den ved at man skriver 10 og ikke 1 og 0. der ud over har jeg lidt problemer med at den kommer og siger at man har købt alle tingene til sidst i stedet for den enkelte ting man nu har valgt... håber i forstår hvad jeg mener, ellers kan i prøve at køre koden selv og se om i kan se andre fejl.

det forgår i en win32 consol og jeg bruger MSVS 2010 ultimate.

BTW: jeg fandt et template på nettet som jeg har forsøgt at ændre på og dette er så resultatet

#include <iostream>
#include <iomanip>
#include <cctype>
using namespace std;


int main()
{
char money;
double totalm = 0;
double value = 0, value1 = 0, value2 = 0, value5 = 0, value10 = 0, value20 = 0;
int d1=1, d2=2, d3=3, d4=4, d5=5, d6=6;
int D1=1, D2=2, D3=3, D4=4, D5=5, D6=6;
int item;

cout<<"Velkommen til Panda's sodavands maskine"<<endl;
cout<<" Indkast Penge "<<endl;
cout<<" Tast 1 for 1 KR. "<<endl;
cout<<" Tast 2 for 2 KR. "<<endl;
cout<<" Tast 5 for 5 KR. "<<endl;
cout<<" Tast 10 for 10 KR. "<<endl;
cout<<" Tast 20 for 20 KR. "<<endl;
cout<<" Tast a for at afslutte "<<endl;
cin>>money;

while(money!='a')
{
if(money=='1')
{
double value1=1;
totalm+=value1;
cout<<"1 KR. er indkastet, det totale beloeb er "<<totalm<<endl;
cin>>money;
}
if(money=='2')
{
double value2=2;
totalm+=value2;
cout<<"2 KR. er indkastet, det totale beloeb er "<<totalm<<endl;
cin>>money;
}
if(money=='5')
{
double value5=5;
totalm+=value5;
cout<<"5 KR. er indkastet, det totale beloeb er "<<totalm<<endl;
cin>>money;
}
if(money=='10')
{
double value10=10;
totalm+=value10;
cout<<"10 KR. er indkastet, det totale beloeb er "<<totalm<<endl;
cin>>money;
}
if(money=='20')
{
double value20=20;
totalm+=value20;
cout<<"20 KR. er indkastet, det totale beloeb er "<<totalm<<endl;
cin>>money;
}
else
{
cout<<"forkert indkastning, proev igen"<<endl;
cin>>money;
}
}

cout<<"=====Du kan nu vaelge en drikkevare====="<<endl;
cout<<"| Fanta | Sprite | Coca Cola |"<<endl;
cout<<"| 10 KR. | 12 KR. | 15 KR. |"<<endl;
cout<<"| D1 | D3 | D5 |"<<endl;
cout<<"|--------------------------------------|"<<endl;
cout<<"| Fanta | Sprite | Coca Cola |"<<endl;
cout<<"| Exotic | Light | Light |"<<endl;
cout<<"| 10 KR. | 12 KR. | 15 KR. |"<<endl;
cout<<"| D2 | D4 | D6 |"<<endl;
cout<<"========================================"<<endl;
cout<<" Venligst indtast varenummer "<<endl;
cin>>item;

if (item==d1||D1)
{
double S=10.00;
float change=0;
if(totalm>=S)
{
cout<<"Fanta er valgt"<<endl;
change=totalm-S;
cout<<"Money deposited is"<<totalm<<"Your change is"<<change<<endl;
cout<<"Thank You"<<endl;
}
else
{
}

if (item==d2||D2)
{
float G=10.00;
float change=0;
if(totalm>=G)
{
cout<<"Fanta Light er valgt"<<endl;
change=totalm-G;
cout<<"Money deposited is"<<totalm<<"Your change is"<<change<<endl;
cout<<"Thank You"<<endl;
}
else
{
}

if (item==d3||D3)
{
float CO=12.00;
float change=0;
if(totalm>=CO)
{
cout<<"Sprite er valgt"<<endl;
change=totalm-CO;
cout<<"Money deposited is"<<totalm<<"Your change is"<<change<<endl;
cout<<"Thank You"<<endl;
}
else
{
}

if (item==d4||D4)
{
float CH=12.00;
float change=0;
if(totalm>=CH)
{
cout<<"Sprite Light er valgt"<<endl;
change=totalm-CH;
cout<<"Money deposited is"<<totalm<<"Your change is"<<change<<endl;
cout<<"Thank You"<<endl;
}
else
{
}

if (item==d5||D5)
{
float D=15.00;
float change=0;
if(totalm>=D)
{
cout<<"Coca Cola er valgt"<<endl;
change=totalm-D;
cout<<"Money deposited is"<<totalm<<"Your change is"<<change<<endl;
cout<<"Thank You"<<endl;
}
else
{
}

if (item==d6||D6)
{
float M=15.00;
float change=0;
if(totalm>=M)
{
cout<<"Coca Cola Light er valgt"<<endl;
change=totalm-G;
cout<<"Money deposited is"<<totalm<<"Your change is"<<change<<endl;
cout<<"Thank You"<<endl;
}
else
{
}
}
}

return 0;
}
}
}
}

}

I do know everything, just not all at once. It's a virtual memory problem.

2

lørdag, 11. februar 2012, 16:09


** forkert sprog :love: **

Dette indlæg er blevet redigeret 1 gange, senest redigeret af "HerrMansen" (13.02.2012, 19:57)


3

lørdag, 11. februar 2012, 16:48


Den første tydelige fejl jeg kan se er at du forventer at din char money skal kunne indeholde et større antal "penge". Char indeholdet ET symbol, det er altså ikke egnet til pengebeløb - Så intet under at den ikke kan se forskel på 1 og 10. Prøv igen med en "int money" og se om det ikke skulle virke.

Nu kender jeg ikke lige c++ så jeg kan ikke lige genkende de fleste kommandoer, men det ser da godt nok roddet ud med alle de "indtast" sætninger. Du burde da omstrukturere det så at den bare skriver "Du har indtastet ___" hvor den så henter beløbet fra din variabel. Det kan da heller ikke være nødvendigt med alle de tomme "else{}" - eller er det en c++ specifik ting?
jeg er stadig forholdsvis nu indenfor c++ men jeg vil gætte på at det er nødvendigt.

jeg har prøvet at udskifte "char money" med "int money" og når jeg så køre koden kan den ikke genkende 1,2,5,10 eller 20....lige gyldigt hvad jeg indtaster for jeg fejlmeddelsen af se, og bliver bedt om at prøve igen (det er når jeg køre selve programmet) når jeg køre en build på koden melder den ingeng fejl.

I do know everything, just not all at once. It's a virtual memory problem.

4

mandag, 13. februar 2012, 00:48


Fandt lige lidt læsning til dig, den indeholder et par alternative metoder til at få tallene ind:

http://augustcouncil.com/~tgibson/tutorial/iotips.html

HerrMannsen: En char i c++ kan indeholde talværdier fra 0 til 255 og kan læses som sådan... Det er dog nemmere at bruge fx. en byte i stedet da den ikke foretrækker tekst... men char kan altsp indeholde tal....


5

mandag, 13. februar 2012, 01:59


Ah hah - der blev man jo klogere. Sidder selv med Java så det er jo en lidt anden verden 8o


6

mandag, 13. februar 2012, 18:13


Ah hah - der blev man jo klogere. Sidder selv med Java så det er jo en lidt anden verden 8o
det er en HELT anden verden.... ikke noget med en beskyttende VM dit program kører i, næh c++ er for rigtige mænd :D


7

tirsdag, 2. oktober 2012, 20:51


if (item==d2||D2) vil altid evaluere til "true", fordi D2 er initialiseret og ikke lig med 0 ("false").

Derfor evaluerer alle dine if's til true. Du skal istedet skrive if (item==d2||item==D2). Og fordi både d2 og D2 er lig med 2, hvorfor så ikke bare skrive if(item==2) eller for den sags skyld bruge en switch statement ?

switch(item) {
case 1: ... break;
case 2: ... break;
---
default: ....
}


Benyttede tags


c++, maskine, sodavands


Seneste tests og artikler

0

Fjernstyrede gadgets - Hubsan X4 og Logicom Spy-C

Det er en lidt spændende anmel
Læs Mere

0

Synology DS215j NAS

For et stykke tid siden så vi
Læs Mere

0

Creative SoundBlaster Roar SR20

Vi har her på Tweak.dk efterhå
Læs Mere

0

Tesoro Lobera samt Lobera Supreme

Denne test byder ikke bare på
Læs Mere
Seneste nyheder

0

Mushkin med 1TB Reacor SSD

Mushkin har annonceret en ny R
Læs Mere

0

Apple stopper produktionen af iPhone 5c

Rygtet fortæller at Apple vil
Læs Mere

0

Call of Duty: Advanced Warfare får Co-Op Zombie Survival Mode

Activision har annonceret at s
Læs Mere

0

Ny Phanteks TC14S CPU køler

Phanteks er kommet med flere n
Læs Mere
Nyeste Videoer og Trailers

Indsend nyhed
Har du fundet en fed nyhed så indsend den så alle andre på Tweak.dk kan få glæde af den.