programma school (veilige invoer)

Status
Niet open voor verdere reacties.

jfransen

Nieuwe gebruiker
Lid geworden
18 dec 2007
Berichten
1
Hallo,

ik moet een project indienen en moet in dat programma een veilige invoer geven. Kan iemand mij helpen?

de volgende code is dat van het programma:


Code:
#include <iostream>
#include <ctime>
using namespace std;

time_t vandaag();
const char* secondenNaarDatum(time_t aantalseconden);
time_t datumNaarSeconden(int dag, int maand, int jaar);

int main()
{	
	int nu, betaaldag, dag, maand, jaar, vervaldag, week_korting, aantal;
	char a;
	float prijs_totaal, prijs_eenheid, boete, korting, dag_laat;
	prijs_totaal = 0;
	bool failed = true;
	
	while (failed)
	{
		do
		{
			cout << "Geef aantal (0 om te stoppen): ";
			if (cin >> aantal)
			{
				failed = false;
			}
				else
				{
					failed = true;
					cout << "   Een negatief aantal kan niet. Probeer opnieuw..." << endl;
					cin.clear();
				}
					if (cin.peek() )
					{
						string rest;
						getline(cin, rest);
					}
		}while (aantal != 0);
	}	
					while (failed)
					{
						do
						{
							if (aantal > 0)
							{
								cout << "Geef eenheidsprijs: ";
								if(cin >> prijs_eenheid)
									{
										failed = false;
									}
							}		
								else
								{
									failed = true;
									cout << "   Een negatieve eenheidsprijs kan niet. Probeer opnieuw..." << endl;
									cin.clear();
								}
								if (cin.peek() )
								{
									string rest1;
									getline(cin, rest1);
								}
							
						}while (prijs_eenheid < 0);
					}
			prijs_totaal += (prijs_eenheid * aantal);
			
		
			
			nu = time(0);
			
			cout << "\nVandaag: " << secondenNaarDatum(nu);
			cout << "\nVervaldag: " << secondenNaarDatum(nu + (3600 * 24 * 30));
			cout << "\nContante betaling: " << secondenNaarDatum(nu + (3600 * 24 * 7)) << endl << endl;
			
			
			do
			{
				cout << "Op welke dag wordt deze factuur betaald? ";
				cin >> dag >> a >> maand >> a >> jaar;
					
					betaaldag = datumNaarSeconden(dag, maand, jaar);
					
					cout << "Factuur betaald op: " << secondenNaarDatum(betaaldag);
						
						vervaldag = nu + (3600 * 24 * 30);
						dag_laat = (betaaldag - vervaldag) / (24 * 3600);
						boete = dag_laat * (prijs_totaal / 100);
							
							week_korting = nu + (3600 * 24 * 7);
							korting = (prijs_totaal / 100 * 7);
								
				if (betaaldag < nu)
				{
					cout << "\n   Dat kan niet, dat is voor de aanmaakdatum van de factuur. Probeer opnieuw." << endl;
				}
					
					else if(betaaldag > vervaldag)
					{
						cout << "\nHet normale bedrag is " << prijs_totaal << " euro maar u bent te laat..." << endl;
						cout << "De boete is: " << boete << " euro." << endl;
						cout << "U moet dus uiteindelijk " << prijs_totaal + boete << " euro betalen." << endl;
					}
						
						else if (betaaldag < week_korting)
						{
							cout << "\nHet normale bedrag is " << prijs_totaal << " euro maar u verdient korting...";
							cout << "\nDe korting is: " << korting << " euro.";
							cout << "\nU moet dus uiteindelijk " << prijs_totaal - korting << " euro betalen.";
						}	
							
							else if (betaaldag > week_korting && betaaldag < vervaldag)
							{
								cout << "\nU moet dus uiteindelijk " << prijs_totaal << " euro betalen.";
							}
				
			}while (betaaldag < nu);
			
	return 0;
}

time_t datumNaarSeconden(int dag, int maand, int jaar) {
	time_t rawtime;
	struct tm * timeinfo;
	time ( &rawtime );
	timeinfo = localtime ( &rawtime );
	timeinfo->tm_year = jaar - 1900;
	timeinfo->tm_mon = maand - 1;
	timeinfo->tm_mday = dag;
	return mktime(timeinfo);
}

time_t vandaag() {
	return time(0);
}

const char* secondenNaarDatum(time_t aantalseconden) {
      struct tm * timeinfo;
      char * buffer = new char[80];
      timeinfo = localtime ( &aantalseconden );
      strftime (buffer,80,"%d/%m/%Y",timeinfo);
	return buffer;
}

ben ik hier fout bezig of is dit juist?
 
Laatst bewerkt door een moderator:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan