Programma che calcola rimbalzi di una pallina

di il
15 risposte

Programma che calcola rimbalzi di una pallina

Buongiorno, sono un nuovo utente e sono appena entrato nel mondo di c++.
ho un problema con un programma che il nostro professore ci ha chiesto di svolgere a casa per delle ore online che abbiamo per le scuole serali, il testo del problema è il seguente:
Si vuole realizzare un programma in linguaggio C++ che calcoli il numero di rimbalzi di una pallina di gomma che ogni volta rimbalza all' 80% dell'altezza precedente arrestandosi quando l'altezza è pari o inferiore a un centimetro. Si suppone che l'altezza iniziale da cui viene lanciata sia un numero in cm compreso tra 1-1000 .
Il programma deve stampare a video l'altezza di ogni rimbalzo numerandoli, poi chiedere all’utente se vuole proseguire con una nuova esecuzione del programma premendo il tasto Y o se vuole uscire dall’esecuzione.
allora il programma non è complicato probabilmente, ma non riesco a fare la parte del calcolo dopo aver inserito l'altezza e farlo fermare fino all'altezza minima richiesta, in più bisogna numerare ogni rimbalzo.
noi per ora usiamo solo <iostream> e non sono in grado di utilizzarne altre che ho visto cercando su internet.

15 Risposte

  • Re: Programma che calcola rimbalzi di una pallina

    Conosci il ciclo do...while?

    E come faresti sulla carta?
  • Re: Programma che calcola rimbalzi di una pallina

    oregon ha scritto:


    Conosci il ciclo do...while?

    E come faresti sulla carta?
    sì lo conosco, lo devo mettere all'inizio e poi alla fine lo userò per iniziare il programma un'altra volta se digito 'y' e fino a lì ok, ma come si fa a fargli fare dei calcoli, numerare ogni calcolo fino a quando non raggiungo il minimo richiesto?
  • Re: Programma che calcola rimbalzi di una pallina

    Ti avevo suggerito il ciclo non per ripetere il programma ma per risolvere il programma.
    E se avessi risposto alla seconda domanda, te ne saresti accorto.

    Per quanto riguarda la proposta di maxilrosso, è meglio usare la do...while e non la while.
  • Re: Programma che calcola rimbalzi di una pallina

    maxilrosso ha scritto:


    Con h chiami l'altezza da cui inizia a cadere la pallina, allora
    
    cont=0;
    while (h<1 cm) {
      h diventa l'80% del suo valore precedente
      cont++;
    }
    
    l'idea è questa
    Scusa l'ignoranza, ma sono proprio inesperto: cos'è il cont? Il ciclo a condizione iniziale l'ho capito e fin lì ci sono, ma tipo io metto un out che mi chiede di inserire questa altezza, poi nel cin metto h (che non ho capito se è float, double o chissà cosa) sotto metto questo while per far finire il calcolo quando arriva al minimo richiesto e alla fine la cosa del char per iniziare un'altra volta il programma.
    Veramente sono ignorante in materia e sto cercando di capire.
    grazie comunque.
  • Re: Programma che calcola rimbalzi di una pallina

    oregon ha scritto:


    Ti avevo suggerito il ciclo non per ripetere il programma ma per risolvere il programma.
    E se avessi risposto alla seconda domanda, te ne saresti accorto.

    Per quanto riguarda la proposta di maxilrosso, è meglio usare la do...while e non la while.
    Devo usare due volte il ciclo a condizine finale allora? Uno all'inizio e uno prima del calcolo?
  • Re: Programma che calcola rimbalzi di una pallina

    Allora ... riflettiamo un po' ... a tutte le domande c'è una risposta semplice ...

    Io sto parlando solo della risoluzione del problema, del calcolo, non di tutto il resto. Per ora lascia perdere la ripetizione del programma e pensa a risolvere la questione dei rimbalzi. Quindi parlando SOLO del ciclo do..while che serve a calcolare i rimbalzi, dando per scontato che il valore iniziale di h lo hai inserito con una cin tu.

    Dato che l'esercizio parla di "pari o inferiore a 1 cm", sarebbe opportuno fare tutti i calcoli almeno con un float. Dunque h deve essere un float.

    Comincia a scrivere qualcosa, altrimenti non possiamo fare riferimento ad eventuali errori di codice.
  • Re: Programma che calcola rimbalzi di una pallina

    oregon ha scritto:


    Allora ... riflettiamo un po' ... a tutte le domande c'è una risposta semplice ...

    Io sto parlando solo della risoluzione del problema, del calcolo, non di tutto il resto. Per ora lascia perdere la ripetizione del programma e pensa a risolvere la questione dei rimbalzi. Quindi parlando SOLO del ciclo do..while che serve a calcolare i rimbalzi, dando per scontato che il valore iniziale di h lo hai inserito con una cin tu.

    Dato che l'esercizio parla di "pari o inferiore a 1 cm", sarebbe opportuno fare tutti i calcoli almeno con un float. Dunque ha deve essere un float.
    Perché sarà un numero con la virgola, allora dopo aver inserito h io posso moltiplicare per 0.8 fino ad arrivare al minimo? Se sì, come faccio?
  • Re: Programma che calcola rimbalzi di una pallina

    oregon ha scritto:


    Allora ... riflettiamo un po' ... a tutte le domande c'è una risposta semplice ...

    Io sto parlando solo della risoluzione del problema, del calcolo, non di tutto il resto. Per ora lascia perdere la ripetizione del programma e pensa a risolvere la questione dei rimbalzi. Quindi parlando SOLO del ciclo do..while che serve a calcolare i rimbalzi, dando per scontato che il valore iniziale di h lo hai inserito con una cin tu.

    Dato che l'esercizio parla di "pari o inferiore a 1 cm", sarebbe opportuno fare tutti i calcoli almeno con un float. Dunque h deve essere un float.

    Comincia a scrivere qualcosa, altrimenti non possiamo fare riferimento ad eventuali errori di codice.
    #include <iostream>

    using namespace std;
    char palla;
    float h,p=0.8,r;

    int main()

    {
    do{
    cout << "Da che altezza vuoi far cadere la pallina?" << endl;
    cout<<"Scegli un numero compreso tra 1 e 1000cm"<<endl;
    cin>>h;
    do {
    h*=p;
    r=h*p;

    cout<<r<<endl;

    }while(r>=1);
    cout<<"vuoi riprovare?premi y altrimenti per chiudere inserisci un altro carattere"<<endl;
    cin>>palla;
    }while (palla=='y');


    return 0;

    }
    di errori non me ne da,ma non so come si numera e se fare così nei calcoli è sbagliato.
  • Re: Programma che calcola rimbalzi di una pallina

    Mettere h*=0 e poi r=h*p è inutile, elimina la r che non serve a niente e nel cout mettici direttamente h. Inoltre p pure potresti toglierlo perché l'operazione giusta sarebbe h=h*80/100 ma non importa perché alla fine è uguale. Il float all'inizio sostituiscilo con double. E poi è inutile dichiarare le variabili fuori dal main, tanto non serve che siano globali, quindi dichiarale nel main
  • Re: Programma che calcola rimbalzi di una pallina

    ANDPRI ha scritto:


    Mettere h*=0 e poi r=h*p è inutile, elimina la r che non serve a niente e nel cout mettici direttamente h. Inoltre p pure potresti toglierlo perché l'operazione giusta sarebbe h=h*80/100 ma non importa perché alla fine è uguale. Il float all'inizio sostituiscilo con double. E poi è inutile dichiarare le variabili fuori dal main, tanto non serve che siano globali, quindi dichiarale nel main
    ok, fatto adesso però vorrei sapere: come si fa a numerare ogni rimbalzo? Io per quello che ho capito dovrei avere ad ogni calcolo un cout che mi dica rimbalzo 1=..., rimbalzo 2=... ecc..
  • Re: Programma che calcola rimbalzi di una pallina

    Per numerare metti una variabile

    contatore=0;

    all'inizio, prima del ciclo e aumentala di uno all'interno del ciclo.
    Sempre all'interno del ciclo visualizza tale variabile
  • Re: Programma che calcola rimbalzi di una pallina

    oregon ha scritto:


    Per numerare metti una variabile

    contatore=0;

    all'inizio, prima del ciclo e aumentala di uno all'interno del ciclo.
    Sempre all'interno del ciclo visualizza tale variabile
    Ringrazio tutti, siete stati molto utili e gentili.
  • Re: Programma che calcola rimbalzi di una pallina

    Bak94 ha scritto:


    Scusa l'ignoranza, ma sono proprio inesperto: cos'è il cont?
    La tua domanda è più che lecita, poichè non eri l 'autore del codice. Proprio per questo colgo l occasione per darti un consiglio. Cerca sempre di dare un nome significativo alle tue variabili, in modo da rendere il codice più leggibile per te e per chi qui vuole darti una mano r, p ,n ,q ,k non rappresentano mai la scelta migliore, a meno che non si tratti di indici di scorrimento.
  • Re: Programma che calcola rimbalzi di una pallina

    beginner32 ha scritto:


    Bak94 ha scritto:


    Scusa l'ignoranza, ma sono proprio inesperto: cos'è il cont?
    La tua domanda è più che lecita, poichè non eri l 'autore del codice. Proprio per questo colgo l occasione per darti un consiglio. Cerca sempre di dare un nome significativo alle tue variabili, in modo da rendere il codice più leggibile per te e per chi qui vuole darti una mano r, p ,n ,q ,k non rappresentano mai la scelta migliore, a meno che non si tratti di indici di scorrimento.
    Hai ragione, in effetti rende le cose più chiare per me e chi legge.
Devi accedere o registrarti per scrivere nel forum
15 risposte