#include<stdio.h> /*sommapn*/
/*
Programma che ricevendo in input una sequenza di numeri
interi terminata da 0, calcola e stampa in output la
somma dei numeri positivi e negativi e la somma
complessiva.
Usiamo tre variabili accumulatore, una per la sommapositivi,
una per la sommanegativi, ed un'altra per la somma complessiva.
NB il terzo accumulatore potrebbe essere eliminato sapendo che
somma_complessiva=somma_negativi+somma_positivi.

1) Non sappiamo a priori quanti saranno i numeri in input (dipende
da quando viene inserito 0 in input)

2) usiamo un ciclo do - while con condizione di uscita numero letto=0..
3) successivamente facciamo la stessa cosa con un ciclo while.
*/

int  main( )
{
int sommapos,sommaneg,somma, /* variabili accumulatore */
num; /* variabile usata per leggere i numeri in input */
char car;
/* inizializzazioni */
somma=0;
sommapos=0;
sommaneg=0;
do
{ printf("\nInserite il numero ( 0 per finire )\n");
scanf("\n%d",&num);
if (num<0)
sommaneg=sommaneg+num;
if(num>0)
sommapos=sommapos+num;
somma=somma+num;
}while(num!=0);
/* stampa dei risultati */
printf("\n- Soluzione do_while terminata -");
printf("\Somma complessiva = %5d",somma);
printf("\nSomma dei numeri negativi inseriti= %5d",sommaneg);
printf("\nSomma dei numeri positivi inseriti= %5d",sommapos);
printf("\n\nDigitare un tasto qualunque per continuare con la");
printf("\nsoluzione che usa il while ,altrimenti u per uscire\n");
scanf("\n%c",&car);car = toupper(car);
if(car!='U') ;
else exit();
/* soluzione while */
/* inizializzazioni */
somma=0;
sommaneg=0;
sommapos=0;
/* lettura del primo numero in input */
printf("\nInserite il primo numero ( 0 per finire )\n");
scanf("\n%d",&num);
while(num!=0)
{
/* adottiamo lo schema per cui esegiuamo la prima lettura fuori
del ciclo (prima) e effettuiamo le successive letture (se
necessarie) alla fine delle iterazioni */

if(num<0)
sommaneg=sommaneg+num;
if (num>0)
sommapos=sommapos+num;
somma=somma+num;
/* poi si passa a leggere il prossimo numero da processare */
printf("\nInserite un numero ( 0 per finire )\n");
scanf("\n%d",&num);

} /* end ciclo while */
/* stampa dei risultati */

printf("\n- Soluzione while terminata -");
printf("\nSomma complessiva = %5d",somma);
printf("\nSomma dei numeri negativi inseriti= %5d",sommaneg);
printf("\nSomma dei numeri positivi inseriti=%5d",sommapos);
printf("\n\nDigitare un carattere qualunque per uscire e premere invio\n");
scanf("\n%c",&car);

return  0;
}

return to programmi