Archief - [PROG][C++] belprijsprogramma

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Spokos

Legacy Member
hey
ik heb weer een probleem
als ik in dit programma interzonaal en zondag bel
geeft hij als prijs per minuut 0.132 terwijl het 0.0845 moet zijn.
Ziet iemand de fout?:s Alle hulp is welkom!
Code:
#include <iostream>
using namespace std;

int main()
{
	char soortgesprek,piekdal,piek,dal;
	int dag,starttijd,tijdsduur,minuten;
	double ppm,bedrag;
	while (soortgesprek!='*')
	{
	cout<<"\nSoort gesprek\n<Z: zonaal>\n<I: interzonaal>\n<*: stoppen> : ";
	cin>>soortgesprek;
	if (soortgesprek=='*')
	{return 0;}
	cout<<"\nDag:\n";
	cout<<"\t1: maandag\n";cout<<"\t2: dinsdag\n";cout<<"\t3: woensdag\n";cout<<"\t4: donderdag\n";cout<<"\t5: vrijdag\n";cout<<"\t6: zaterdag\n";cout<<"\t7: zondag\n";
	cin>>dag;
	if (dag==1||dag==2||dag==3||dag==4||dag==5)
	{
	cout<<"Starttijd\n\t1: tussen 8u en 18u\n\t2: tussen 18u en 8u\n";
	cin>>starttijd;
	}
	if (dag==6 || dag==7)
	{
		dal=piekdal;
	}
	else
	{
		if (starttijd==1)
		{
			piek=piekdal;
		}
		else
		{
			dal=piekdal;
		}
	}
	cout<<"Tijdsduur in seconden : ";
	cin>>tijdsduur;
	cout<<"\n\ntijdsduur = "<<tijdsduur;
	minuten=tijdsduur/60+1;
	cout<<"\naangerekende minuten = "<<minuten;
	if (soortgesprek=='z' || soortgesprek=='Z')
	{
		if (piek==piekdal){ppm=0.0495;}
		else{ppm=0.0233;}
	}
	else if (soortgesprek=='i' || soortgesprek=='I')
	{
		if(piek==piekdal)
		{ppm=0.1320;}
		else{ppm=0.0845;}
	}
	cout<<"\nprijs per minuut = "<<ppm;
	bedrag=ppm*minuten;
	cout<<"\n\t\tTe betalen bedrag : "<<bedrag<<endl;
	}
	return 0;
}

killgore

Legacy Member
er bestaan hier wel degelijk
Code:
-tags.

Met al die lussen en condities is het echt niet te doen om dat niet-intended eventjes te gaan begrijpen

MacK

Legacy Member
Ik heb de fout niet gevonden in uw programma, want dat is vrij moeilijk met uw code: Geen indentatie, zoals Killgore al zei, in combinatie met al die if-else structuren, is vrij moeilijk te lezen!

Maar hetgeen ik wel wil opmerken, is dat je daar ongeïnitialiseerde waarden (piekdal) toekent aan variabelen. Het zal uw programma niet doen crashen, maar ik kan wel zeggen dat je zoiets toch nooit moogt doen.
Verder als ik even uw logica volg, wil je piekdal als variabele gebruiken om bij te houden of uw gesprek dan al dan niet in het piek-uur of het dal-uur valt. Dan moet je dat niet zo doen:
dal = piekdal; ==> neemt de waarde van piekdal (ongeïnitialiseerd!) en stopt ze in dal;

ik denk dat jij eerder zoiets wil:
piekdal = dal; ==> neemt de waarde van dal en stopt ze in piekdal;

Verder zou je dan ook in het begin van uw main moeten zetten:
char soortgesprek,piekdal,piek = 'p',dal = 'd';


Geen idee of dat uw programma gaat doen werken (want ik heb het niet helemaal gelezen), maar volgens mij is dat toch hetgeen dat je wil.

Ik raad u aan (en ik denk dat anderen mij gelijk zullen geven) om ofwel eens helemaal uw reeds geziene theorie grondig te herhalen, of uw boek te herlezen, of uw tutorials opnieuw te lezen, want uw code is niet zo heel goed. (ik wil u niet de grond in boren of zo hoor, maar je zal wat meer moeten oefenen.)

Tyfius

Legacy Member
Als ik de code hier uitvoer en kies voor "interzonaal" en "zondag", en "120" seconden bel toont die hier:
Code:
tijdsduur: 120
aangerekende minuten: 3
prijs per minuut: 0.0845
te betalen bedrag: 0.2535
Verder sluit ik me volledig aan bij MacK.

Spokos

Legacy Member
ja in mn programma zelf werk ik met tabs enzo, maar kzou niet weten hoe ge dat hier op dit forum moet doen. Verder bedankt voor de info die ik nu even ga uitproberen.

Spokos

Legacy Member
amai met die chars een waarde toe te kennen werkt het. Heel hard bedankt voor de info!

Cycloon

Legacy Member
Spokos zei:
ja in mn programma zelf werk ik met tabs enzo, maar kzou niet weten hoe ge dat hier op dit forum moet doen. Verder bedankt voor de info die ik nu even ga uitproberen.

Waarschijnlijk lees je het niet meer maar het moet als volgt:

[ code] Je code hiertussen [ /code]

(zonder spaties in de code tag dan).

Psychokillah

Legacy Member
Ik heb het al in uw plaats gedaan.
En ik zou toch willen opmerken dat je stilletjes aan moet leren debuggen.
We hebben ondertussen heel uw leerproces kunnen volgen via de vele threads. Maar als programmeur moet je toch ook leren zelf fouten te zoeken (zeker op dit eenvoudige niveau). Print hier of daar eens een variable af, zo zal je ergens wel merken dat je een verkeerde veronderstelling had gemaakt en dan kun je je fouten corrigeren.

Spokos

Legacy Member
mja maar in dit geval wistik niet wat er juist fout was, er stond ook geen fout in de debugger en kwist dus ook niet dat ik per se een waarde aan die char's moest toevoegen en dat die gelijkstelling omgekeerd moest. ik heb toch nog wat geleerd van de commentaar hier. Maar in het vervolg moetik het mss meer zelf analyseren mja das mss wel waar, maar hier vond ik de fout dus niet. Ik heb even de code wat properder(wel langer) gemaakt. Is dit een beetje beter als ervoor of niet?
Code:
#include <iostream>
using namespace std;

char Soortgesprek();
int Dag();
int Starttijd(int dag);
int Gespreksduur();
char Piekdal(int dag,int starttijd);
double Prijsperminuut(char soortgesprek,char piekdal);
void Bedrag(int minuten,double ppm);

int main()
{
	while (1==true)
	{
	char soortgesprek=Soortgesprek();
	if (soortgesprek=='*')
	{
		return 0;
	}
		else
		{
		int dag=Dag();
		int starttijd=Starttijd(dag);
		int minuten=Gespreksduur();
		char piekdal=Piekdal(dag,starttijd);
		double ppm=Prijsperminuut(soortgesprek,piekdal);
		Bedrag(minuten,ppm);
		}
	}
	return 0;
}

char Soortgesprek()
{
	char soortgesprek;
	cout<<"\nSoort gesprek\n<Z: zonaal>\n<I: interzonaal>\n<*: stoppen> : ";
	cin>>soortgesprek;
	return soortgesprek;
}

int Dag()
{
	int dag;
	cout<<"\nDag:\n";
	cout<<"\t1: maandag\n";cout<<"\t2: dinsdag\n";cout<<"\t3: woensdag\n";cout<<"\t4: donderdag\n";cout<<"\t5: vrijdag\n";cout<<"\t6: zaterdag\n";cout<<"\t7: zondag\n";
	cin>>dag;
	return dag;
}

int Starttijd(int dag)
{
	int starttijd;
	if (dag==1||dag==2||dag==3||dag==4||dag==5)
	{
	cout<<"Starttijd\n\t1: tussen 8u en 18u\n\t2: tussen 18u en 8u\n";
	cin>>starttijd;
	}
	return starttijd;
}

int Gespreksduur()
{
	int tijdsduur,minuten;
	cout<<"Tijdsduur in seconden : ";
	cin>>tijdsduur;
	cout<<"\n\ntijdsduur = "<<tijdsduur;
	minuten=tijdsduur/60+1;
	cout<<"\naangerekende minuten = "<<minuten;
	return minuten;
}

char Piekdal(int dag,int starttijd)
{
	char piekdal,piek='p',dal='d';
	if (dag==6 || dag==7)
	{
		piekdal=dal;
	}
	else
	{
		if (starttijd==1)
		{
			piekdal=piek;
		}
		else
		{
			piekdal=dal;
		}
	}
	return piekdal;
}
	
double Prijsperminuut(char soortgesprek,char piekdal)
{
double ppm;
if (soortgesprek=='z' || soortgesprek=='Z')
	{
		if (piekdal=='p'){ppm=0.0495;}
		else
		{
			ppm=0.0233;
		}
	}
	else if (soortgesprek=='i' || soortgesprek=='I')
	{
		if(piekdal=='p')
		{
			ppm=0.1320;
		}
		else
		{
			ppm=0.0845;
		}
	}
	cout<<"\nprijs per minuut = "<<ppm;	
	return ppm;
}

void Bedrag(int minuten,double ppm)
{
	double bedrag;
	bedrag=minuten*ppm;
	cout<<"\n\t\tTe betalen bedrag : "<<bedrag<<endl;
}

Tyfius

Legacy Member
Ice zei:
methodes die met hoofdletter beginnen = evil.
Waarom? Kan goed de company coding guidelines zijn. In C# is het helemaal zo. Functies met een hoofdletter, variabelen met een kleine letter. Daar is niks evil aan...

Bubbling Zombie

Legacy Member
Tyfius zei:
Waarom? Kan goed de company coding guidelines zijn. In C# is het helemaal zo. Functies met een hoofdletter, variabelen met een kleine letter. Daar is niks evil aan...

Ice zit nogal vast in java/smalltalk

kgaan hier boksen voor krijgen

:(

Ice

Legacy Member
Bubbling Zombie zei:
Ice zit nogal vast in java/smalltalk

kgaan hier boksen voor krijgen

:(

Inderdaad!

En het kan goed zijn dat 'upper case methodes' ne company policy is, maar dat wilt nog altijd niet zeggen dat ik niet evil mag vinden :p

Maar soit, het enige dat nog meer evil is dan methodes die met een hoofdletter beginnen is inconsistent zijn in uw naamgeving.
cfr
void Bedrag(int minuten,double ppm);
int main()


ps. SMALLTALK ROX KEKEKEKE!!!11 :')

Bubbling Zombie

Legacy Member
Ice zei:
Inderdaad!

En het kan goed zijn dat 'upper case methodes' ne company policy is, maar dat wilt nog altijd niet zeggen dat ik niet evil mag vinden :p

Maar soit, het enige dat nog meer evil is dan methodes die met een hoofdletter beginnen is inconsistent zijn in uw naamgeving.
cfr
void Bedrag(int minuten,double ppm);
int main()


ps. SMALLTALK ROX KEKEKEKE!!!11 :')

Da's anders wel ne general C# coding policy ze, Hoofdletters voor de methods enzo.

En msn, NU ! :p

KeaTs

Legacy Member
Goh, bij ons zijn methods ook mixed case, attributes ook, en class names zijn volledig upper case; en I :love: onze coding standard.

Ice

Legacy Member
Bubbling Zombie zei:
Da's anders wel ne general C# coding policy ze, Hoofdletters voor de methods enzo.

En msn, NU ! :p

Daarom ben jij toch wel een beetje een grotere loser dan mij :p
en kzit op msn! allez, nu toch!
(kakfile btw)
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan