Kære gæst, velkommen til Tweak.dk. Hvis dette er dit første besøg her, bør du læse Hjælp. Her forklares i detaljer hvordan denne side fungerer. For at benytte alle funktionerne på denne side, bør du overveje at lade dig registrere. Benyt venligst registreringsformularen for at registrere her eller læs yderligere information om registreringsprocessen. Hvis du allerede er registreret, så log på her.

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



Bowers & Wilkins 683 S2

Vi har igen allieret os med Hifi-Klubben for at kunne bringe jer en test af et sæt spændende højttalere. Nærme
Læs Mere

Raidmax Horus MX Kabinet

Producenten Raidmax har været på banen siden 1988, hvilket giver dem over 25 års erfaring inden for branchen.
Læs Mere

QNAP TS-453mini 8 GB

QNAP er endnu engang vendt tilbage til Tweak.dk redaktionen, og denne gang med en noget kun anderledes 4-bays
Læs Mere

Rocket League PS4

Fodbold med biler i en arena! Holder det? Svaret er et overbevisende JA! Forestil dig at du putter Mario Kart,
Læs Mere

Gigabyte Z97P-D3

Vi skal i dag have kigget på et budgetvenligt Z97 bundkort fra Gigabyte, som byder på nogle fine midrange komp
Læs Mere

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

Windows 10 Guide: Slå deling af Windows opdateringer fra

Windows 10 er officielt rullet ud, og mange er stadig i gang med at installere det. Nu er det derimod også kom
Læs Mere

Er dette den nye iPhone 6S?

Så kører rygtemøllen igen, og igen handler det om Apple og deres nye iPhone 6S. Der er nemlig dukket billeder
Læs Mere

AMD forbereder ny Zen Core APU

AMD arbejder på en ny type APU, som skiller sig noget ud fra det, som vi er vant til at se, når vi er i AMD's
Læs Mere

Shots fired! AMD-forsker sabler NVIDIA GameWorks

Som I sikkert ved, så foregår der en evig krig mellem de to ærkefjender AMD og NVIDIA, og nu er der presset me
Læs Mere

Scammere på spil efter Windows 10 lancering

Enhver begivenhed, der skaber hype og medieomtale, er for scammere og snydepelse, som en flamme er for møl. De
Læs Mere

Sådan ser en photoshoppet Chris Pratt ud

Skuespilleren Chris Pratt, der som bekendt spiller en af hovedrollerne i eksempelvis den nye film 'Jurassic Wo
Læs Mere

Så flot kunne Jak and Daxter 4 være blevet

Naughty Dog, der står bag spillene om Jak og Daxter, havde store planer om netop et nyt spil i serien, men dis
Læs Mere

Ingen mods til Fallout 4 før 2016

Til november udkommer Bethesdas nye spil Fallout 4, men sidder du allerede nu og glæder dig til at se, hvad de
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.