Visualizzazione dei risultati da 1 a 3 su 3

Discussione: [C] limits.h

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    4

    [C] limits.h

    codice:
    //determina il maggiore, il minore e la media dei valori immessi
    
    #include<stdio.h>
    #include<limits.h>
    main()
    {
        // dichiarazione tipo di incognite, variabili etc
        int i, n, numero, max, min, media ;
        printf("Maggiore, minore e media\n");
    
        min = INT_MAX;
        max = INT_MIN;
        media= 0;
        i=1;
    
        do{
            printf("\nLunghezza della sequenza: ");
            scanf("%d", &n);
        }
    
        while(n<1);
        for(i=1; i<=n; i++){
            printf("valore int.: \t");
            scanf("%d", &numero);
            if(numero>max)
                max=numero;
            else
                if(numero<min)
                min = numero;
            media= media + numero;
        }
    
        printf("\nMaggiore: %d\n, max");
        printf("Minore: %d\n, min");
        printf("Media: %d\n, media");
    }
    Salve a tutto il forum,
    Dunque non riesco a capire il perchè riesco a compilare il codice correttamente ma come output, dopo aver inserito una serie di numeri, non mi restituisce dei risultati che mi aspetto.
    In output ho sia per il maggiore sia per il minore e come media sempre lo stesso risultato: (2293560)
    Ringrazio anticipatamente chi saprà fornirmi indicazioni.
    Buonanotte

  2. #2
    Utente di HTML.it L'avatar di minomic
    Registrato dal
    Nov 2010
    Messaggi
    635
    Ciao, ora dovrebbe funzionare tutto:

    codice:
    #include<stdio.h>
    #include<limits.h>
    
    int main()
    {
         // dichiarazione tipo di incognite, variabili etc
         int i, n, numero, max, min, media ;
         printf("Maggiore, minore e media\n");
    
         min = INT_MAX;
         max = INT_MIN;
    
         media= 0;
         i=1;
    
         do {
              printf("\nLunghezza della sequenza: ");
              scanf("%d", &n);
         }
         while(n<1);
         
         for(i=1; i<=n; i++) {
              printf("valore int.: \t");
              scanf("%d", &numero);
              if(numero>max)
                   max=numero;
              if(numero<min)
                   min = numero;
              media= media + numero;
         }
    
         printf("\nMaggiore: %d\n", max);
         printf("Minore: %d\n", min);
         printf("Media: %d\n", media/n);
    
         return 0;
    }

    1. avevi sbagliato a mettere le virgolette nei printf finali
    2. non dividevi la media per il numero di elementi
    3. c'era un errore di logica: se la sequenza viene inserita in ordine crescente, quell'else fa sì che il minimo non venga mai aggiornato. Togliendolo risolvi il problema

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    4
    Grazie Minomic per il tuo prezioso aiuto.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.