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



Logitech MX Master

Vi skal i denne test tage et kig på Logitechs nye flagskib af en mus ved navn MX Master. Der er tale om en mus
Læs Mere

Gigabyte Z170X-Gaming 7

Vi har denne gang vendt næsen mod Gigabyte, når vi endnu engang kaster os ud i en test af endnu et Z170 bundko
Læs Mere

be quiet! Dark Power Pro 1000 W PSU

Så er Tweak.dk tilbage med endnu en anmeldelse. Denne gang skal vi kigge på et kraftværk af en strømforsyning
Læs Mere

NZXT S340 Special Edition

Denne test vil for de fleste trofaste Tweak læsere virke lidt som et deja-vu, da vi skal kigge på et kabinet,
Læs Mere

Razer BlackWidow Tournament Edition Chroma

Razers Blackwidow tastatur har vi flere gange haft forbi vores testbænk, men det er første gang, vi skal have
Læs Mere

MSI GTX 950 Gaming 2G OC

Tiden er kommet til, at vi skal vende blikket mod et entry level grafikkort i den mere prisvenlige ende af ska
Læs Mere

ASRock Z170 Extreme4

Det er nu blevet tiden til, at vi skal have kigget lillebroderen til det her på Tweak.dk for nyligt testede Z1
Læs Mere

SafeHome alarmsystem

Når man nu har for mange tusinde kroners hardware stående inde på sit værelse, ville det måske være en god ide
Læs Mere

ASUS teaser med nye ROG MATRIX grafikkort

Noget tyder på, at ASUS ikke vil lade MSI være alene om at præsentere nye GTX 980 Ti grafikkort. De har nemlig
Læs Mere

Få overblikket: Fredagen på Team Tweak

Team Tweak fortsætter i ekspresfart, og fredagen var ingen undtagelse. Vi havde gang i stort set alle vores st
Læs Mere

AOC præsenterer verdens vel nok billigste FreeSync-skærm

AOC er en særdeles velkendt producent af bl.a. skærme, og det er netop sådan en, vi i dag kan præsentere jer f
Læs Mere

Ny mod til The Witcher III kan stille din blodtørst

Hvis du er helt vild med CD Projekt Reds spil 'The Witcher III - Wild Hunt', og savner du, at der er tilstrækk
Læs Mere

Microsoft frigiver længe ventet Windows 10-opdatering

Hvis du er hoppet over på Windows 10-vognen, har du sikkert lagt mærke til, at det fra Microsofts side ikke ha
Læs Mere

Her er MSI's nye GTX 980 Ti Lightning

MSI's Lightning-serie af grafikkort er særdeles kendt blandt de, der vil have det bedste af det bedste, og som
Læs Mere

Nyt Z170I Gaming Pro AC mini-ITX bundkort fra MSI

MSI er på banen med et nyt mikrobundkort, der dog på specifikationssiden ikke lyder til på nogen som helst måd
Læs Mere

Hvem vil købe Acer?

Acer har ikke gjort det så godt på det seneste, og det taiwanesiske firma står med åbne arme over for enhver,
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.