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, 21: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



SafeHome Wireless Surveillance Fixed HD kamera

Vi hopper for en kort stund tilbage i bunken af forbrugerelektronik, når vi i dag skal kigge på noget, der kan
Læs Mere

AeroCool GT-RS

Vi skal i denne test stifte bekendtskab med et kube kabinet fra producenten AeroCool - nærmere betegnet deres
Læs Mere

Antec ISK110 VESA micro kabinet

Er du også en af dem, der godt kan lide at bygge små computere og være med på den nyeste trend? Så kan dagens
Læs Mere

ASUSTOR AS-5004T

Endnu en ASUSTOR NAS server har fundet vej til Tweak.dk redaktionen, og vi skal i denne omgang have et kig på
Læs Mere

Argon Audio Stream 2

I en tid med DAB-radioer og trådløs streaming af musik kan vi alle få brug for udstyret, der kan koble vores m
Læs Mere

ZyXEL Armor Z1 AC2350 Dual-Band Wireless Gigabit

I en tid, hvor meget handler om grafikkort, mens vi så småt venter på lanceringen af Intels næste chipsetserie
Læs Mere

ASUS ROG Orion Stereo Gaming Headset

Der findes et væld af headsets, og der er et headset til ethvert formål. Hvis du skal have et simpelt, men sta
Læs Mere

XFX Radeon R9 390X 8 GB Double Dissipation

Vi så for nyligt Radeon R9 380 4 GB fra XFX her på siden, og nu kan vi altså også præsentere jer for en af de
Læs Mere

Konkurrence: Vind med Tweak.dk og Razer

Så blev vi færdige med Silverstone konkurrencen, og derved er vi nu klar til at sætte gang i endnu en konkurre
Læs Mere

Playstation 4 får mus og tastatur

I kølvandet på annonceringen af keyboard og mus support til Xbox One for et par uger siden, kommer Hori nu med
Læs Mere

Qualcomm løser varmeproblemer med Snapdragon 820

Qualcomms mobile processor Snapdragon 810 har været meget i vælten for at være en endog meget varm chip. Nu er
Læs Mere

Nyt X99M-WS micro-ATX bundkort fra ASUS

Tilbage på Computex-messen i juni præsenterede ASUS dette nye bundkort, som altså nu er klar til salg. Der er
Læs Mere

HORNET er Tor-netværket på speed

Hvis man vil være anonym i sin færden på nettet, findes der mange løsninger, man kan bruge. Man kan enten ansk
Læs Mere

Her er den nye OnePlus 2

OnePlus' nye 2016 Flagship Killer er nu en realitet. Den helt nye OnePlus 2 nemlig nu blevet præsenteret, og j
Læs Mere

Rygte: Valve arbejder på Half-Life 3

Ja, så kører rygtemøllen igen, og igen handler det om spilstudiet Valves myte- og sagnomspundne spil Half-Life
Læs Mere

He's back! The Terminator er med i WWE 2K16

Arnold Schwarzenegger er tilbage! Eller, det vil sige, at hans virtuelle alter ego er tilbage, og det er han s
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.