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:
ben ik hier fout bezig of is dit juist?
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: