Domanda Risolto Aiuto per risoluzione compito di programmazione

matte000000

Utente Iron
25 Agosto 2020
1
1
0
12
volevo chiedervi gentilmente se potevate aiutarmi in questo problema di informatica
un corso di judo con un numero minimo di 6 partecipanti e massimo di 15, acquisiste la numerosità di partecipanti(e questo l’ho fatto) successivamente acquisire l’età di ciascun partecipante,visualizzare:
quanti sono i partecipanti tra i 14 e 20 anni
età del partecipante più giovane
età media
età media dei maggiorenni
ps: abbiamo fatto if else while e do
se per caso sapete come risolverlo
 
Dovresti dirmi il linguaggio di programmazione e quello che hai scritto fino ad ora per poterti aiutare. Attendo risposta.
 
Ultima modifica:
Mettiamo caso che il linguaggio sia C++ (anche se sarebbe stato tutto più facile con un linguaggio che permette di usare più facilmente i dati "chiave-valore"), il codice, potrebbe essere così (senza contare possibili bug), anche se la descrizione del tuo problema non era molto chiara:

C++:
#include <iostream>

using namespace std;

int main() {

    int partecipanti;
    int i = 0;

    do {

      cout << "Inserisci il numero di partecipanti per il corso di Judo (MIN 6, MAX 15):  ";
      cin >> partecipanti;
    }
    while (partecipanti < 6 || partecipanti > 15);
    cout << "Adesso inserisci l'eta di ogni partecipante\n";

    //Qui verrà creato un array che contiene le età di partecipanti, e che avrà per dimensione la variabile intera partecipanti

    int eta_part[partecipanti];

    while (i <= partecipanti) {
      /*Qui utilizzo un while per chiedere l'età di ogni partecipante (sarebbe stato più comodo un ciclo for)*/

      cout << "Inserisci l'eta del partecipante: ";
      cin >> eta_part[i];
      i++; //Utilizzo i come contatore, cioè, viene utilizzato come indice per l'array
    }

    //Controllo qunanti sono i partecipanti tra i 14 e 20 anni

    i = 0;

    int partecipanti_14_e_20_anni = 0;
    while (i <= partecipanti) {

      if (eta_part >= 14 && eta_part <= 20) {
        partecipanti_14_e_20_anni++;
      }

      i++;
    }

    cout << "I partecipanti tra i 14 e 20 anni sono: " << partecipanti_14_e_20_anni << endl;

    //Controllo l'età del partecipante più giovane (anche qui, sarebbe stato più utile un for)

    i = 0;
    int minn = eta_part[0];
    while (i <= partecipanti) {

      if (eta_part[i] < minn) {
        minn = eta_part[i];
      }
      i++;
    }

    //Visualizzo l'età del partecipante più giovane
    cout << " L'eta del partecipante piu giovane corrisponde a " << minn << endl;
    //Controllo l'età media
    i = 0;
    int x = 0;
    while (i <= partecipanti) {
      x += eta_part[i]; //x è uguale a x+età
      i++;
    }

    int media_eta = x / partecipanti;

    cout << "La media dell'eta corrisponde a " << media_eta << endl;

    //Controllo età media maggiorenni
    i = 0;
    int media_eta_maggiorenni;


     int eta_maggiorenni = 0;
      int maggiorenni = 0;
    while (i <= partecipanti) {

      if (eta_part[i] >= 18) {
        eta_maggiorenni += eta_part[i];
        maggiorenni++;
      }

      media_eta_maggiorenni = eta_maggiorenni / maggiorenni;
      i++;
    }

    cout << "La media dell'eta dei maggiorenni corrisponde a " << media_eta_maggiorenni << endl;

    return 0;

    //Esempio by theDust1n https://www.inforge.net/forum/members/thedust1n.267157/
}
 
  • Mi piace
Reazioni: Kode
@theDust1n
Mi è caduto l'occhio su questa parte:
C:
    i = 0;
    int media_eta_maggiorenni;

    while (i <= partecipanti) {
      int eta_maggiorenni = 0;
      int maggiorenni = 0;

      if (eta_part >= 18) {
        eta_maggiorenni += eta_part;
        maggiorenni++;
      }

      media_eta_maggiorenni = eta_maggiorenni / maggiorenni;
      i++;
    }

qui maggiorenni varrà sempre 0 o 1, così come età maggiorenni, in quanto le resetti ogni volta che inizi il ciclo. Per altro avrei anche un errore dovuto alla divisione per 0.
Dovresti fare un ciclo dove sommi tutte le età superiori ai 18 anni, e quanti sono i maggiorenni e solo dopo calcolare la media.

Credo che nella formattazione si siano anche perse le [i].


PS. comunque non diamo mai soluzioni "pronte" a chi chiede, così da farlo ragionare e condurlo alla soluzione...
 
  • Mi piace
Reazioni: theDust1n
Ultima modifica:
@theDust1n
Mi è caduto l'occhio su questa parte:
C:
    i = 0;
    int media_eta_maggiorenni;

    while (i <= partecipanti) {
      int eta_maggiorenni = 0;
      int maggiorenni = 0;

      if (eta_part >= 18) {
        eta_maggiorenni += eta_part;
        maggiorenni++;
      }

      media_eta_maggiorenni = eta_maggiorenni / maggiorenni;
      i++;
    }

qui maggiorenni varrà sempre 0 o 1, così come età maggiorenni, in quanto le resetti ogni volta che inizi il ciclo. Per altro avrei anche un errore dovuto alla divisione per 0.
Dovresti fare un ciclo dove sommi tutte le età superiori ai 18 anni, e quanti sono i maggiorenni e solo dopo calcolare la media.

Credo che nella formattazione si siano anche perse le [i].


PS. comunque non diamo mai soluzioni "pronte" a chi chiede, così da farlo ragionare e condurlo alla soluzione...
Strano, dopo averlo compilato funzionava, ora ci riguardo.
Per il PS: In futuro farò come hai detto riguardo le soluzioni


Edit: ho corretto quelle variabili che si azzeravano e ho messo apposto eta_part.