Media oltre la soglia

di Anonimizzato30715 il
12 risposte
Salve, è da ormai 4 mesi che programmo in c++ (seconda superiore) e mi è stato affidato un compito che mi sta facendo impazzire. La richiesta è la seguente: Scrivi un programma che, presi in input il numero N (N>0) di valori e il valore S di soglia, calcoli la media aritmetica di tutti i numeri presi in input che non superano il valore della soglia. N deve essere letto in input. L'esercizio infine mi chiede di utilizzare il ciclo for. Questo è il mio codice:

#include <iostream>
using namespace std;
main() {
int N, S, media, tot, conta;
S = 10;
tot = 0;
for(conta = 1; conta <= 5; conta ++){
cout << "Inserisci un numero : ";
cin >> N;
tot = tot + N;}
if (N > 0 && N <= S){
media = (tot / 5);
cout << "La media dei numeri che non superano la soglia e' di: " << media;}
else{
cout << "Il numero non e' maggiore di zero o non rientra nella soglia!";

ringrazio tutti coloro che risponderanno in anticipo.

12 Risposte

  • Perché il conteggio nella for fino a 5? Chi te lo ha detto?

    Il compito parla di N elementi.

    Il ciclo for deve andare da 1 a N e il valore N deve essere chiesto una sola volta PRIMA del ciclo for (non dentro).

    All'interno del ciclo devi usare in input un'altra variabile (magari double, così come tot deve essere double) per inserire i valori.
  • oregon ha scritto:


    Perché il conteggio nella for fino a 5? Chi te lo ha detto?

    Il compito parla di N elementi.

    Il ciclo for deve andare da 1 a N e il valore N deve essere chiesto una sola volta PRIMA del ciclo for (non dentro).

    All'interno del ciclo devi usare in input un'altra variabile (magari double, così come tot deve essere double) per inserire i valori.
    grazie per avermi risposto, ora lo miglioro ma il problema che avevo è che mi faceva la media di tutti i numeri mentre il problema dice di scartare quelli maggiori della soglia che è 10.
  • La if deve stare nella for e devi fare la somma con tot SOLO se il numero inserito è minore o uguale a S
  • oregon ha scritto:


    La if deve stare nella for e devi fare la somma con tot SOLO se il numero inserito è minore o uguale a S
    ma se metto l'if dentro il ciclo for mi ripete anche il cout e non mi considera l'else perchè mi dice che non c'è un if precedente
  • Non ho capito cosa dici. Mostra il codice con le modifiche, indenta il codice e usa i tag code per riportarli sul forum
  • oregon ha scritto:


    Non ho capito cosa dici. Mostra il codice con le modifiche, indenta il codice e usa i tag code per riportarli sul forum
    scusa non ho capito come riportare il codice dome dici tu. cmq riesco a fartelo vedere con le modifiche:

    #include <iostream>
    using namespace std;
    main() {
    int N, S, media, conta;
    double tot, num;
    S = 10;
    tot = 0;
    cout << "Inserisci il numero di valori con i quali il programma fara' una media: ";
    cin >> N;
    for(conta = 1; conta <= N; conta ++){
    cout << "Inserisci il valore: ";
    cin >> num;
    tot = tot + num;}
    if (num > 0 && num <= S){
    media = (tot / N);
    cout << "La media dei numeri che non superano la soglia e' di: " << media;}
    else{
    cout << "Il numero non e' maggiore di zero o non rientra nella soglia!";
    }
    }
  • La if DENTRO al ciclo per controllare se eseguire la somma
  • oregon ha scritto:


    La if DENTRO al ciclo per controllare se eseguire la somma
    scusa se ti rispondo ora ma ho avuto tanto da fare. Comunque ho capito e ti ringrazio molto. Avrei solo un'altra domanda, come vedi neò codice metto "inserisci un valore: " ma io vorrei mettere "Inserisci il primo valore: ", "Inserisci il secondo valore:" etc ma col ciclo for mi ripete sempre "Inserisci il primo valore: ". Nel c metto %d, %f in base alle variabili mentre nel c++ non so come fare.
  • Usa il cout con le variabili.
  • oregon ha scritto:


    Usa il cout con le variabili.
    scusa ma non ho capito bene cosa devo fare
  • cout<<"Inserisci il "<<conta<<" valore: ";
  • Alexv ha scritto:


    cout<<"Inserisci il "<<conta<<" valore: ";
    ah ok grazie mille
Devi accedere o registrarti per scrivere nel forum
12 risposte