Newsgroup: it.comp.lang.c++
Titolo: ciclo con valore sentinella

Ciao non riesco a far terminare il programma quando vorrei inserendo il
valore sentinella potreste dirmi dove sbaglio?
#include<iostream.h>
#include<iomanip.h>
int main()
{
  float houwor=0,//ore lavorate
  ratewor,//paga oraria
  salary,//paga ricevuta
  straord=0,//ore con maggiorazione
  standard,// ore di lavoro regolare
  rest;//differenza di ore tra regolari e straordinarie
  while(houwor!=-1){
    cout << "immetti ore lavorate:";
    cin >> houwor;
    cout << "immetti ore regolari:";
    cin >> standard;
    cout << "immetti paga oraria:";
    cin >> ratewor;
    cout <<setiosflags(ios::fixed |ios::showpoint) <<
    setprecision(2);
    if(houwor<=standard) {
     salary=ratewor*houwor;
     cout << "paga ricevuta:" << salary << endl;
    }
     else {
    rest=houwor-standard;
    straord=(rest*ratewor)*1.5;
    salary=(standard*ratewor)+straord;
    cout << "paga ricevuta:" << salary << endl;
       }
  }
  return 0;
}
 
Grazie per la cortese attenzione.
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 valore sentinella potreste dirmi dove sbaglio?
A parte gli header
#include<iostream.h>
#include<iomanip.h>
che dovresti sostituire con
#include<iostream>
#include<iomanip>
e la mancanza prima di main di
using namespace std;
il tuo programma a me funziona benissimo.
matteo!

A primo acchitto il programma sembra dover funzionare tranquillamente
e non edo nessuna sentinella. Inoltre non ho capito a che ti serve la
sentinella se deve fare dei semplici calcoli e ti deve fornire
l'output. Forse sbaglio, ma mi faresti cosa gradita nel posta il
sorgente co qualche commento in più sul perchè della sentinella e dove
la vorresti usare. Inoltre a che cosa ti serve e che cosa intendi.
Ciao


 Ciao
Chiedo scusa la mia intenzione sarebbe quella di far terminare il ciclo
inserendo un numero o una lettera al posto delle ore lavorate,credevo che
inserendo il valore -1 nel ciclo while avrei fatto arrestare il ciclo.


Mmmm ti rispondo subito allora. Se tu inserisci il valore -1,
inizializzando la variabile globale a 0 ancor prima di entrare nel
ciclo, devi vedere le operazioni che si fanno su quella variabile.
Sempre visionando il tuo programma velocemente (ma lo farò qualora
dovessi sbagliare aspettando il post di risp da te), già entrando nel
ciclo la variabile impostata da 0 passa a -1 qualora tu lo digitassi e
tra if ed else pre il nuovo controllo deve arrivare alla fine del
ciclo, dove il valore di controllo sarà ben diverso da -1. Puoi
provare a debugure o a fare a mente i calcoli e te ne accorgerai,
quindi dal ciclo con -1 non uscirai mai.
Fammi sapere e a presto!!!!


Prima di tutto: Scusate il mio italiano ma sono straniero.
Il problema è che comunque vengono eseguite le istruzioni dopo cin>>houwor
perche il controllo della condizione (del valore di houwor) per finire il
ciclo while viene realizzato al inizio del prossimo ciclo, e credo invece
che tu vuoi che il programmino finisca subito dopo aver scritto -1 perciò
secondo me ci sta un if(houwor == -1)
Questo sarebbe el codice [ho soltanto aggiunto   if(houwor == -1) continue;]
#include<iostream.h>
#include<iomanip.h>
int main(){
    float houwor=0,     //ore lavorate
    ratewor,                //paga oraria
    salary,                    //paga ricevuta
    straord=0,            //ore con maggiorazione
    standard,                // ore di lavoro regolare
    rest;                    //differenza di ore tra regolari e
straordinarie
    while(houwor!=-1){
        cout << "immetti ore lavorate:";
        cin>>houwor;
        if(houwor == -1)            //// Qui faccio un controllo
            continue;                    //// E qui faccio finire prima il
ciclo per non fare eseguire tutto il resto



Ho provato a fare 2 calcoli ed ad inizializzare la variabile a zero prima
del ciclo e ho visto che fino alla fine dello stesso non si ferma,inserendo
invece un if nel punto in cui voglio che termini funziona come
vorrei.Evidentemente non avevo ben compreso la funzionalita' esatta del
valore sentinella.
Grazie a tutti per l'aiuto^_^
