Ciao a tutti, volevo chiedere un parere riguardo un problema
Sto scrivendo un programma che riceve in input le ore di lavoro di un dipendente, e calcola la retribuzione in base alle ore stesse, se sono inferiori o uguali a 40 la retribuzione applicata sarà di 10, mentre tutte le ore di straordinario, che si conteggiano dalla 41esima ora in poi, verranno retribuite a 15, cioè il 50% in più dello standard.
Ora nel mio codice rilevo un problema di iterazione credo, perche se l'esecuzione entra nell'else, scrivendo ad asempio come input un numero maggiore di 41, quando scriverò un altro numero mi darà un valore errato, in più nell'esecuzione ho rilevato questa anomalia:
vi posto il codice:
#include <iostream>
using namespace std;
int main()
{
int hoursWorked = 0;
double hourlyRate = 0;
int counter = 1;
double total = 0;
double totalOver = 0;
cout << "Inserire le ore di lavoro svolte (-1 Per Terminare): ";
cin >> hoursWorked;
cout << "Inserire la paga oraria del dipendente: ";
cin >> hourlyRate;
while (hoursWorked != -1)
{
if (hoursWorked <= 40)
{
hourlyRate = 10;
total = hoursWorked * hourlyRate;
cout << "Il salario del dipendente e': " << total << endl;
}
else
{
hoursWorked -= 40;
hourlyRate = 15;
totalOver = hoursWorked * hourlyRate;
cout << "Il Salario del dipendente e': " << total + totalOver << endl;
}
counter++;
cout << "Inserire le ore di lavoro svolte (-1 Per Terminare): ";
cin >> hoursWorked;
}
cout << "\nControllati i salari di " << counter << " dipendenti.\n";
return 0;
}