PDA

Visualizza la versione completa : [C] ricerca del minimo, del massimo e stampa la media


Carax
19-10-2008, 11:48
Ragazzi scusatemi se vi disturbo, ma ho un problema con un programma in C.

Dovrei scrivere un programma che mi prende in input n int. Devo stampare il valore minimo, il massimo e la media.

quando vado a complilare il mio programma non mi da errori sintattici, quando lo eseguo mi fa inserire all'infinito dei numeri da tastiera.

Ecco il codice:

[CODE]#include <stdio.h>

int main(void)
{
int n=-1, max=-1, min=-1, sum=0, counter=0;
scanf("%d", &n);
max=min=n;
while(n>=0){
if (n<min){
min=n;
}else
if (n>max){
max=n;
}
sum+=n;
counter++;
scanf("%d", &n);
}
if (counter>0){
printf("La media %.2f\n", (float)sum/counter);
}else{
printf("Non hai inserito nessun numero");
}
printf("Il minimo %d e il mssimo %d", min, max);


return 0;
}[/ CODE]

Vi ringrazio in anticipo per il vostro aiuto.

oregon
19-10-2008, 11:55
Usi la variabile n all'inizio per sapere quanti valori inserire, ma la usi anche per inserire i valori, e questo e' sbagliato.

Dopo aver inserito n, nel ciclo while inserisci i valori usando un'altra variabile e decrementa n ad ogni giro.

P.S. I tag CODE non sono corretti ...

pastoreerrante
19-10-2008, 22:48
Un saluto a tutti,

sto imparando il C, cominciando dalle basi. Un esercizio prevede la ricerca del numero massimo prendendo in input tre interi, ma non riesco a farlo funzionare. La logica che ho usato per scrivere il programma la seguente: il numero massimo sempre quello che diviso per gli altri numeri del gruppo d come risultato un numero superiore a 1, quindi il programma prima effettua tutte le possibili divisioni fra i 3 interi, e poi confronta i sei risultati per vedere quali sono superiori a 1.



#include <stdio.h>

int main ()

{

int x, y, z;
float intermedio_1, intermedio_2, intermedio_3, intermedio_4, intermedio_5, intermedio_6;

printf ("Immettere tre interi:");
scanf ("%d%d%d", &x, &y, &z);

intermedio_1 = x / y;
intermedio_2 = x / z;
intermedio_3 = y / x;
intermedio_4 = y / z;
intermedio_5 = z / x;
intermedio_6 = z / y;

if ( intermedio_1 > 1 ) {
if ( intermedio_2 > 1 ) {
printf ("%d il numero maggiore\n", x);
}
}

if ( intermedio_3 > 1 ) {
if ( intermedio_4 > 1 ) {
printf ("%d il numero maggiore\n", y);
}
}

if ( intermedio_5 > 1 ) {
if ( intermedio_6 > 1 ) {
printf ("%d il numero maggiore\n", z);
}
}

return 0;

}


Grazie dell'aiuto - Daniele

oregon
19-10-2008, 23:54
Scusa Daniele, ma adesso in questo thread abbiamo due programmi e due problematiche diverse.

Perche' non aprivi una tua discussione (come prevede il regolamento, fra l'altro)?

pastoreerrante
20-10-2008, 08:48
Chiedo scusa, lo faccio subito. Ho agito cos perch mi sembrava inutile aprire un'altra discussione, dal momento che bene o male si tratta di un argomento simile.

Loading