PDA

Visualizza la versione completa : [C] Calcolo voti con array


robyy94
13-09-2011, 17:14
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:



#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 ;)

Celebron
13-09-2011, 18:11
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

torn24
13-09-2011, 18:15
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 "

robyy94
13-09-2011, 18:33
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




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.");

MItaly
13-09-2011, 18:51
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.

Loading