Problema esercizio valore massimo, minimo, media

di il
8 risposte

Problema esercizio valore massimo, minimo, media

Riporto qui il testo dell'esercizio (non sapevo come sintetizzarlo meglio nel titolo della discussione):
- Creare un programma che legga i dati (int) dall’input tramite la funzione scanf e calcoli il
minimo, il massimo e la media per i valori pari immessi e il minimo, il massimo e la media
per i valori dispari.

Bene ho provato in mille modi cercando di cambiare più volte pezzi del codice ma non riesco ad ottenere quello che le specifiche mi richiedono...
Ecco qui il mio tentativo:
#include <stdio.h>
#include <limits.h>
int main ()
{
int min, max;
int counter=1;
int total=0;
int num;
min=INT_MAX;
max=INT_MIN;
float Media;
 printf("Inserire N numeri, -1 per terminare:");
 scanf("%d", &num);
while (num!=-1) {
if (num%2==1 || num==1) {
  total+=num;
  Media= (float) total/counter;
  counter++;
  if (num<min)
	min=num;
  if (num>max)
	max=num;
  printf("Per tutti i numeri dispari si ha...\nMinimo: %d\nMassimo: %d\nMedia: %.2f\n", min, max, Media);
  }
  else if (num%2==0 && num!=1) {
  total+=num;
  Media= (float) total/counter;
  counter++;
  if (num<min)
	min=num;
  if (num>max)
	max=num;
  printf("Per tutti i numeri pari si ha...\nMinimo: %d\nMassimo: %d\nMedia: %.2f\n", min, max, Media);
 }
  printf("Inserire N numeri, -1 per terminare:");
  scanf("%d", &num);
}
}
Perdonatemi gli errori concettuali (e non) che considerate banali, ho iniziato da poco più di 3 settimane il corso di programmazione all'università con un'esperienza pari a 0 alle spalle
Grazie in anticipo

8 Risposte

  • Re: Problema esercizio valore massimo, minimo, media

    Per cominciare, imposta tutte le variabili che ti servono.

    Il testo ti parla di 2 minimi, 2 massimi e 2 medie diverse (un gruppo per i pari e uno per i dispari).
  • Re: Problema esercizio valore massimo, minimo, media

    Ho dichiarato separatamente le variabili e sono riuscito a far uscire almeno la media corretta per ogni volta che inserisco un numero pari o dispari. Il problema è che adesso i vari Massimi e Minimi stampano continuamente questi valori:
    Inserire N numeri, -1 per terminare:1
    Per tutti i numeri dispari si ha...
    Minimo: -2147483648
    Massimo: 2147483647
    Media: 1.00
    Inserire N numeri, -1 per terminare:2
    Per tutti i numeri pari si ha...
    Minimo: -2147483648
    Massimo: 2147483647
    Media: 2.00
    Inserire N numeri, -1 per terminare:3
    Per tutti i numeri dispari si ha...
    Minimo: -2147483648
    Massimo: 2147483647
    Media: 2.00
    Inserire N numeri, -1 per terminare:-1
    
    Ho cambiato il codice così:
    #include <stdio.h>
    #include <limits.h>
    int main ()
    {
    int minD=INT_MIN;
    int minP=INT_MIN;
    int maxD=INT_MAX;
    int maxP=INT_MAX;
    int counterD=1;
    int counterP=1;
    int totalD=0;
    int totalP=0;
    int num;
    float MediaD, MediaP;
     printf("Inserire N numeri, -1 per terminare:");
     scanf("%d", &num);
    while (num!=-1) {
    if (num%2==1 || num==1) {
      totalD+=num;
      MediaD= (float) totalD/counterD;
      counterD++;
      if (num<minD)
    	minD=num;
      if (num>maxD)
    	maxD=num;
      printf("Per tutti i numeri dispari si ha...\nMinimo: %d\nMassimo: %d\nMedia: %.2f\n", minD, maxD, MediaD);
      }
      else if (num%2==0 && num!=1) {
      totalP+=num;
      MediaP= (float) totalP/counterP;
      counterP++;
      if (num<minP)
    	minP=num;
      if (num>maxP)
    	maxP=num;
      printf("Per tutti i numeri pari si ha...\nMinimo: %d\nMassimo: %d\nMedia: %.2f\n", minP, maxP, MediaP);
     }
      printf("Inserire N numeri, -1 per terminare:");
      scanf("%d", &num);
    }
    }
  • Re: Problema esercizio valore massimo, minimo, media

    Queste impostazioni devono essere invertite così
    
    int minD=INT_MAX;
    int minP=INT_MAX;
    int maxD=INT_MIN;
    int maxP=INT_MIN;
    
  • Re: Problema esercizio valore massimo, minimo, media

    Perfetto grazie mille!! Non vorrei risultare inopportuno, soprattutto dopo averti rubato del tempo, ma come mai per il "min" devo considerare "INT_MAX" e per il "max", "INT_MIN"? Grazie ancora
  • Re: Problema esercizio valore massimo, minimo, media

    Non ci hai pensato un po' su?

    Se cerchi un minimo, il valore di partenza deve essere un minimo o un massimo?
  • Re: Problema esercizio valore massimo, minimo, media

    Un massimo altrimenti la stringa "if (num<minD)" con quello che ne segue non avrebbe senso logico, dato che non potrebbe mai esistere un valore minore del minimo tra tutti i valori immessi... almeno credo
  • Re: Problema esercizio valore massimo, minimo, media

    Quindi non era difficile ... no?
  • Re: Problema esercizio valore massimo, minimo, media

    Dopo essere stato guidato, il tutto è sicuramente risultato più immediato, grazie dell'aiuto!
Devi accedere o registrarti per scrivere nel forum
8 risposte