Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    13

    [C] Calcolo voti con array

    Ciao a tutti!

    Devo fare un programma, che inserito un tot di voti, mi dia la media dei voti e mi dice se si è promossi, rimandati o bocciati.

    Ecco il codice che ho già scritto:

    codice:
    #include <stdlib.h>
    #include <stdio.h>
    
    int main () {
        int N=5;
        int voti[N];
        int i;
        int insuf=0;     //materie con voti compresi tra 4 e 5
        int grave=0;     //materie con voti dal 3 al 2
        int media=0;
        
        printf("Inserisci i tuoi voti");
        printf("\n\n\n");
        for (i=0 ; i<N ; i++){
            printf("%d :", i+1);
            scanf("%d", &voti[i]);
            
            media=(media+voti[i]);
            
        } 
        
        for (i=0 ; i<N ; i++){
            
            if ((voti[i] <= 5) && (voti[i] >= 4)) insuf++;
            if ((voti[i] <= 3) && (voti[i] >= 1)) grave++;
        }
        
    
        media=media/N; 
        printf("\n\nLa media dei tuoi voti e' %d", media);
        
       
        
        system("\n\npause");
    }


    Come devo fare per visualizzare se si è promossi, rimandati o bocciati?
    PS: oltre alle "regole normali" (insuf <= 3 rimandato , insuf > 3 bocciato)

    devo aggiungere:
    1 materia grave => rimandato
    1 materia grave + insuf => bocciato
    materia grave o insu > 2 => bocciato



    Grazie in anticipo

  2. #2
    fai un controllo alla fine con un for e qualche if e in alcune variabili numeriche appropriate ti segni i dati che ti interessano
    al termine con gli if fai i controlli che ti servono
    all that you need:
    http://www.cplusplus.com/reference/clibrary/

  3. #3
    Utente di HTML.it L'avatar di torn24
    Registrato dal
    Aug 2008
    Messaggi
    551

    spero non sia uno scherzo :)

    niente di difficile devi tradurre quello che hai scritto in codice
    usando if else if else
    1 materia grave => rimandato
    1 materia grave + insuf => bocciato
    materia grave o insu > 2 => bocciato


    se grave = 1 e insuf = 0 stampa rimandato
    altrimenti se grave = 1 0 e insuf = 1 stampa bocciato
    altrimenti se grave=0 e insuf =0 stampa promosso
    altrimenti stampa bocciato "in tutti gli altri casi "
    Tecnologia

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    13
    Grazie dei suggerimenti.

    In realtà avevo già trovato la soluzione prima di aprire questo 3d, solo che un errore di sintassi mi aveva bloccato.

    Riporto la soluzione, magari può tornare utile a qualcun'altro

    codice:
    if ((insuf==0)&&(grave==0))
    printf("Sarai promosso.");
    else
    if ((grave>1)||(insuf>3)||((grave==1)&&(insuf>1)))
    printf("Sarai bocciato.");
    else
    printf("Serai rimandato.");

  5. #5
    Nota tra l'altro che non è necessario salvare i voti che vengono inseriti, puoi incrementare i vari contatori al volo e fare una media "al volo" (sommi i voti man mano che vengono inseriti e li conti, e alla fine fai somma/numero). In questa maniera non hai il limite a N voti, ma si possono inserire un numero arbitrario di voti senza problemi.
    Amaro C++, il gusto pieno dell'undefined behavior.

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.