Problemino esercizio C

di il
1 risposte

Problemino esercizio C

Buongiorno ragazzi, sono alle prime armi con la programmazione e sto cercando di fare quest esercizio che vi posto :

Esercizio 1 [Min-Max-Media]. Scrivere un programma C che legga in input
prima un numero n e poi attenda l’inserimento di altri n numeri da tastiera. Il
progamma stampa il valore minimo, il valore massimo e la media aritmetica degli n
numeri inseriti.
Esempio: Se l’input `e 5 2 7 9 8 6 allora il programma attende l’inserimento del
primo valore n. In questo caso n = 5 quindi il programma attende l’inserimento
di altri 5 interi, ossia 2 7 9 8 6. Dopo aver determinato qual `e il valore minimo, il
valore massimo e la media dei 5 interi inseriti, il programma stamper`a: 2 9 6.40.
Infatti 2 `e il valore minimo, 9 `e il valore massimo e 6.40 `e la media aritmetica data
da (2 + 7 + 9 + 8 + 6)/5.
Input: Il programma legger`a un primo interno n > 0 e poi altri n interi (tali interi
possono essere positivi, negativi o zero).
Output: Il programma stamper`a il valore minimo, il valore massimo e la media arit-
metica degli n interi in input. Se stampati su una sola riga i tre valori devono essere
separati da UNO ED UN SOLO spazio, altrimenti possono anche essere stampati su
3 righe diverse. Per la stampa della media si usi invece che %f l’espressione %.2f per
indicare che devono essere stampate solo due cifre dopo la virgola.


#include <stdio.h>
#include <stdlib.h>
int main(void)
{  
  int conta, x, min, max;
  int somma;
  float media;
  printf("Immetti quanti numeri vuoi elaborare:");
  scanf ("%d", &x); 
printf("\nBene, Adesso immetti %d interi:\n",x);              
  min = x;
  max = 0;
  conta = 0;
  somma= 0; 
  while (conta < x) {
    scanf("%d", &x);
    if (x < min) min=x;
    if (x > max) max=x;
    conta = conta + 1;
    somma = somma + x;
    
  }
  media = (float) somma/conta;
  printf("Il minimo e` %d\n", min);
  printf("Il massimo e` %d\n", max);
  printf("La somma e` %d\n", somma);
  printf ("La media e' %.2f", media);
  system ("PAUSE");
  return 0;
}
Non riesco a capire dove sbaglio, sapreste darmi una mano? Una volta mi fa inserire 4 numeri, una volta 5, una volta 3 ma mai quanti ne do io all'inizio!
Aspetto vostre notizie.
Ciao e grazie

1 Risposte

  • Re: Problemino esercizio C

    Ciao, avevi un po di errori. Ti posto il mio codice che così dovrebbe andare:
    
    #include <stdio.h>
        #include <stdlib.h>
        int main(void)
        { 
          int conta=0, x=0,n=0, min=0, max=0;
          int somma=0;
          float media=0;
          printf("Immetti quanti numeri vuoi elaborare:");
          scanf ("%d", &n);
    	  printf("\nBene, Adesso immetti %d interi:\n",n);             
          scanf ("%d", &x);
    	  min=x;
    	  somma=x;
          while (conta++ < n) {
    		scanf("%d", &x);
            if (x < min) min=x;
            if (x > max) max=x;
            somma +=x;
          }
          media = (float) somma/conta;
          printf("Il minimo e` %d\n", min);
          printf("Il massimo e` %d\n", max);
          printf("La somma e` %d\n", somma);
          printf ("La media e' %.2f", media);
          system ("PAUSE");
          return 0;
        }
    
    un errore grave è quando facevi:

    printf("Immetti quanti numeri vuoi elaborare:");
    scanf ("%d", &x);//salvi il valore in x

    e poi:
    printf("\nBene, Adesso immetti %d interi:\n",x);
    qui andrebbe un altra scanf() comunque successivamente fai di nuovo:
    scanf ("%d", &x);//vai ad inserire un nuovo valore in x e il precedente si è perso
    il valore x che dovrebbe contenere il numero degli elementi da inserire, lo sovrascrivi e quindi il ciclo while() successivo è sballato tutto.
    In C per incrementare di uno una variabile basta fare cosi:
    variabile++ o ++variabile, per incrementare invece var-- o --var
    La posizione degli operatori ++ e -- serve a stabilire quando la variabile deve essere incrementata.
    Ad esempio while(conta++ >n)

    incrementa conta di uno dopo aver verificato la condizione.
    se invece ci fosse stato
    while(++conta >n)
    incrementa prima conta e poi verifica la condizione.
    somma+=x; è equivalente che scrivere somma = somma +x;
    inoltre quando dichiari le variabili puoi inizializzarle subito:
    int a=0;
Devi accedere o registrarti per scrivere nel forum
1 risposte