#include"stdio.h" /* guadagni */
/* Una societa' di vendite possiede N (15) negozi.
si vuole stampare l'elenco dei negozi, che in un dato periodo
hanno guadagnato meno di una certa cifra ( un terzo della media).
Si vuole poi stampare l' elenco dei negozi che hanno guadagnato
meno della media dei guadagni, calcolata escludendo il massimo ed
il minimo guadagno (media ridotta).
Analisi :
Rappresentiamo gli N valori reali, in un array di numeri reali.
Algoritmo:
1) Lettura degli N valori reali, con memorizzazione nell'array.
2) Calcolo Media dei guadagni nell' array.
3) Scansione dell' array, con stampa di indice e valore ,quando
il valore e' inferiore a un terzo della media.
4) Calcolo del Max valore nell' array (massimo guadagno ottenuto
da un negozio ).
5) Calcolo del Min valore nell' array (minimo guadagno ottenuto
da un negozio).
6) Calcolo di Media2 = media ridotta.
7) Scansione dell' array, con stampa di indice e valore quando
il valore e' inferiore a Media2.
*/
#define DIM 15
#define RAGIONE 1/3
int main( )
{
/* Trattiamo i dati cristallizzati nel programma, mediante l' uso
di costanti */
/*DIM dimensione del vettore = numero dei negozi */
/*RAGIONE usata per calcolare quali negozi vanno elencati
tra le pecore nere*/
int cont, i; /* variabile per scandire il vettore */
float Negozi[DIM];
float Somma_Guadagni, /* per calcolare la media*/
Media, /* per contenere la media dei guadagni */
Media2, /* per contenere la media ridotta*/
Min,Max; /* Minimo e massimo guadagno */
char car;
/* punto 1 lettura dei guadagni dei negozi */
printf("\n_________________________________");
printf("\n Elencare i guadagni dei %d negozi : ",DIM);
for (i=0;i<=DIM-1;i++)
{printf("\n - negozio %2d : ",i+1);
scanf("\n%f",&Negozi[i]);
}
/* punto 2 calcolo della media dei guadagni: NB si scandisce
il vettore, accumulando in Somma_Guadagni la somma dei suoi
valori */
Somma_Guadagni = 0; /* inizializzazione */
for(i=0;i<DIM;i++)
{Somma_Guadagni= Somma_Guadagni+Negozi[i];
/* a questo punto in Somma_Guadagni c' e' la somma di tutti i
guadagni: per calcolare la media si divide per il numero dei
negozi N=DIM.*/

}
Media=Somma_Guadagni/DIM;
printf("\nMedia dei guadagni = %10.2f\n",Media);
/* Punto 3 stampa delle pecore nere: si scandisce tutto il vettore
analizzando ogni componente; quando la componente e'inferiore
a Media*RAGIONE si stampa la componente ed il suo indice*/

printf("\nStampa delle pecore nere:\n");
cont=0; /* cont conta i negozi pecore nere*/
for(i=0;i<DIM;i++)
if(Negozi[i] < Media*RAGIONE)
{
printf("\nNegozio numero %2d con guadagno = %10.2f",i+1,Negozi[i]);
cont=cont+1;
}
if (cont==0)
printf("\nNon esistono negozi pecore nere.");


/*Calcolo di Media2. NB Somma_Guadagni e' la somma dei guadagni;
conoscendo Max e Min si ha che:
Media2=(Somma_Guadagni - Max - Min)/(DIM-2) */


/* Punto 4 : calcolo di Max = si inizializza Max= " primo elemento
del vettore"; poi si scandisce il vettore e si "ricorda" in Max
ciascun massimo parziale eventualmente incontrato volta per volta */


Max=Negozi[0];
for(i=1;i<DIM;i++)
if(Max < Negozi[i]) Max= Negozi[i];
/* Punto 5 Calclo di Min : si inizializza Min = "primo elemento del
vettore"; poi si scandisce il vettore e si "ricorda" in Min ciascun
minimo parziale eventualmente incontrato volta per volta */
Min=Negozi[0];
for(i=1;i<DIM;i++)
if(Min > Negozi[i]) Min = Negozi[i];
printf("\n\nDigitare un carattere e premere invio per la videata successiva\n");
scanf("\n%c",&car);
printf("\n\nMassimo guadagno: %10.2f ",Max);

printf("\nMinimo guadagno : %10.2f ", Min);
/* Punto 6: calcolo di Media2 */
Media2=(Somma_Guadagni - Max - Min)/(DIM-2);
printf("\n\nDigitare un carattere e premere invio per la videata successiva\n");
scanf("\n%c",&car);

printf("\nMedia ridotta : %12.4f ",Media2);
/* Punto 7: */
printf("\nStampa di coloro che hanno guadagnato meno della media ridotta:\n");

for(i=0;i<DIM;i++)
if(Media2 > Negozi[i])
{printf("\n- Negozio numero %2d con guadagno = %10.2f",i+1,Negozi[i]);
if(Negozi[i]==Min)
printf(" ***");
else
printf("\n");
}
printf("\n\nDigitare un carattere e premere invio \n");
scanf("\n%c",&car);

return  0;
}

 

return to programmi