Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    636

    problemino (minimo, massimo, media) in C

    ciao a tutti
    ho fatto questo piccolo programmino
    praticamente calcolare il valore minimo, il massimo e la media di numeri interi relativi..ho fatto cosi..ma alcuni risultati non esscono per bene..potete dirmi dove sbaglio?
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #define N 20
    
    
    /*
     * 
     */
    
    int main(){
    
        int BETA[N];
        int i, j, app, MIN, MAX;
        int n = 0;
        float tot = 0;
        float MEDIA = 0;
    
        printf ("inserisci n : \n");
        scanf ("%d", &n);
    
        if (n >= 3 && n <= N){
            for (i = 0; i <= n - 1; i++){
                printf("Inserisci il numero : \n");
                scanf ("%d", &BETA[i]);
            }
            printf("I numeri inseriti sono : \n");
            for (i = 0; i <= n - 1; i++){
               
                printf ("%5d\n", BETA[i]);
                
            }
            for (i = 0; i <= n - 1; i++){
                for (j = i + 1; j <= n; j++ ){
                    if (BETA[i] > BETA[j]){
                    app = BETA[j];
                    BETA[j] = BETA[i];
                    BETA[i] = app;
                    }
                }
            }
            MIN = BETA[0];
            MAX = BETA[n];
            printf ("Minimo = %d\n", MIN);
            printf ("Massimo = %d\n", BETA[n]);
    
            for (i = 0; i <= n; i++){
                tot = tot + BETA[i];
                }
    
            MEDIA = (float)(tot / n);
            printf ("Media = %.2f\n", (float)MEDIA);
            
            
        }else{
            printf ("n minore di 3\n");
               }
    
          return 0;
    }

  2. #2
    prova a sostituire tutti le
    • " <= n - 1" con l'equivalente " < n";
    • " <= n" con la non equivalente "< n";

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    636
    ma perchè queste sotituzioni ?
    nel senso se queste sono equivalenti

    " <= n - 1" con l'equivalente " < n";

    dovrebbe andare cmq o no?

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    636
    ho modificato come mi ha detto
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #define N 20
    
    
    /*
     * 
     */
    
    int main(){
    
        int BETA[N];
        int i, j, app, MIN, MAX;
        int n = 0;
        float tot = 0;
        float MEDIA = 0;
    
        printf ("inserisci n : \n");
        scanf ("%d", &n);
    
        if (n >= 3 && n <= N){
            for (i = 0; i < n; i++){
                printf("Inserisci il numero : \n");
                scanf ("%d", &BETA[i]);
            }
            printf("I numeri inseriti sono : \n");
            for (i = 0; i < n; i++){
               
                printf ("%5d\n", BETA[i]);
                
            }
            for (i = 0; i < n; i++){
                for (j = i + 1; j < n; j++ ){
                    if (BETA[i] > BETA[j]){
                    app = BETA[j];
                    BETA[j] = BETA[i];
                    BETA[i] = app;
                    }
                }
            }
            MIN = BETA[0];
            MAX = BETA[n];
            printf ("Minimo = %d\n", MIN);
            printf ("Massimo = %d\n", MAX);
    
            for (i = 0; i < n; i++){
                tot = tot + BETA[i];
                }
    
            MEDIA = (float)(tot / n);
            printf ("Media = %.2f\n", (float)MEDIA);
            
            
        }else{
            printf ("n minore di 3\n");
               }
    
          return 0;
    }
    mi da il minimo e la media esatti..ma il massimo sbagliato!

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    636
    ok ho trovato l'errore
    si trovava qui
    codice:
    MAX = BETA[n];
    sostituito con
    codice:
    MAX = BETA[n-1];
    ora una cosa che non capisco è questa
    per l'ordinamento
    se io ho n numeri devo fare n-1 passi e per ogni passo devo confrontare con tutti gli n
    perchè quindi
    codice:
     for (i = 0; i < n; i++){
                for (j = i + 1; j < n; j++ ){
                    if (BETA[i] > BETA[j]){
                    app = BETA[j];
                    BETA[j] = BETA[i];
                    BETA[i] = app;
                    }
                }
            }
    invece di questo
    codice:
     for (i = 0; i < n-1; i++){
                for (j = i + 1; j < n; j++ ){
                    if (BETA[i] > BETA[j]){
                    app = BETA[j];
                    BETA[j] = BETA[i];
                    BETA[i] = app;
                    }
                }
            }
    ?????

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 © 2025 vBulletin Solutions, Inc. All rights reserved.