Informatica 2 Liceo Scientifico Scienze Applicate/Es (for) Analisi sequenza dati: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Nessun oggetto della modifica
Riga 110:
 
Siamo pronti ora a contare quante volte il numero 54 e' stato inserito da tastiera, per contare usiamo una variabile che funge da contatore che viene inizializzata a zero e gestita in modo similare all'accumulatore con la differenza che ora l'eventuale incremento e' solo unitario, si ottiene
<source lang="c">
#include <iostream>
using namespace std;
 
/* l'utente inserisce 100 numeri , il programma calcola la somma e la media */
 
int main(int argc, char** argv)
{ int x,i, somma, conta;
float media;
somma=0;
conta=0;
for(i=1;i<=100;i++)
{cout<<"inserisci il "<<i<<"° numero ";
cin>>x;
somma=somma+x;
if(x==54) conta++;
}
media=(float)somma/100;
cout<<"la somma dei numeri vale "<<somma<<endl;
cout<<"la media dei numeri inseriti vale "<<media<<endl;
cout<<"il numero 54 e' stato inserito "<<conta<<" volte"<<endl;
return 0;
}
</source >
 
conta++ in questo caso puo' essere sostituito perfettamente da conta=conta+1;
l'if scritto e' un if semplice la cui unica istruzione del caso vero e' stata scritta sulla stessa riga della condizione per compatezza.
 
passiamo al calcolo del min e del max, se si vuole trovare l'altezza dell'alunno piu' grande di una classe si procede nel seguente modo
si chiama il primo alunno e si memorizza la sua altezza su un foglietto (essendo il primo la sua altezza e temporaneamente anche quella max )
poi uno ad uno si chiamano gli studenti successivi e si confronta il valore del foglietto (max temporaneo) con l'altezza dello studente, se questo e' piu' alto si aggiorna il valore del foglietto
alla fine il valore scritto sul foglietto e' il nostro max assoluto
Ora questa procedura ha l'inconveniente di dover trattare il primo studente in modo diverso da quelli successivi, il primo studente infatti non subisce un confronto ma la sua altezza diventa il valore scritto su foglietto, per omogeneizzare lo stesso trattamento (confronto) a tutti gli studenti , prima di entrare in classe scriviamo sul foglietto un numero molto negativo e anche se non e' vero lo pensiamo come l'altezza max temporanea, poi entriamo in classe e
uno ad uno si chiamano gli studenti e si confronta il valore del foglietto (max temporaneo) con l'altezza dello studente, se questo e' piu' alto si aggiorna il valore del foglietto
alla fine il valore scritto sul foglietto e' il nostro max assoluto
Ora il numero piu' piccolo che una variabile intera puo' assumere e' il valore INT_MIN.
Per risolvere il problema del min scriviamo sul foglietto il numero piu' grande che ci viene in mente ( INT_MAX ) e
poi entrati in classe uno ad uno si chiamano gli studenti e si confronta il valore del foglietto (minx temporaneo) con l'altezza dello studente, se questo e' piu' basso si aggiorna il valore del foglietto
alla fine il valore scritto sul foglietto e' il nostro min assoluto .Il programma allora diventa
<source lang="c">
#include <iostream>
#include <stdlib.h>
using namespace std;
 
/* l'utente inserisce 100 numeri , il programma calcola la somma e la media */
 
int main(int argc, char** argv)
{ int x,i, somma, conta, min,max;
float media;
somma=0;
conta=0;
max=INT_MIN;
min=INT_MAX;
for(i=1;i<=100;i++)
{cout<<"inserisci il "<<i<<"° numero ";
cin>>x;
somma=somma+x;
if(x==54) conta++;
if(x>max)max=x;
if(x<min)min=x;
}
media=(float)somma/100;
cout<<"la somma dei numeri vale "<<somma<<endl;
cout<<"la media dei numeri inseriti vale "<<media<<endl;
cout<<"il numero 54 e' stato inserito "<<conta<<" volte"<<endl;
cout<<"il minimo vale"<<min<<endl;
cout<<"il massimo vale"<<max<<endl;
return 0;
}
</source >
 
si e' dovuta aggiungere una libreria stdlib per avere a disposizione INT_MAx e INT_MIN.
 
ora ci rimane il problema di contare i numeri pari, un numero intero e' pari