Ciclo voti

di il
4 risposte

Ciclo voti

Dove ho sbagliato??

import java.util.Scanner;

public class CicloEs14 {
	
	
	public static void main(String[] args) {

		/*
		 * Si scriva un programma che legge un elenco di voti ottenuti durante un esame come interi 
		 * da 0 a 30. si mostri il numero totale di voti e il numero di voti in ciascuna delle seguenti
		 * categorie: ottimo (voti 29 e 30), distinto (voti da 26 a 28), buono (voti da 23 a 25), discreto
		 * (voti da 20 a 22), sufficiente (voti 18 e 19), insufficiente (voti da 0 a 17). si usi un numero
		 * negativo per indicare la fine dell'inserimento.
		 * 
		 * l'input fosse:
		 * 0 2 17 18 20 22
		 * 
		 * output fosse:
		 * numero totale di voti:11
		 * numero di ottimi: 2
		 * numero di distinti: 2
		 * numero di buoni: 2
		 * numero di disceti: 2
		 * numero di sufficienti: 2
		 * numero di insufficienti: 2
		 * 
		 */
		
		int n = 0, voti = 0, cont = 0, ottimo = 0, distinti = 0,buoni = 0,discreti = 0,sufficienti = 0,insufficienti = 0;
		
		Scanner in = new Scanner(System.in);
		

		System.out.println("Quanti voti vuoi inserire: ");
		n = in.nextInt();
		
					while(voti <= n){
						
						System.out.println("inserisci voti: ");
						voti = in.nextInt();
						
							if((voti >= 29) && (voti <= 30)){
								ottimo++;
							}
							else if((voti >=26) && (voti <= 28)){
								distinti++;
							}
							else if((voti >= 23) && (voti <= 25)){
								buoni++;
							}
							else if((voti >= 20) && (voti <= 22)){
								discreti++;
							}
							else if((voti >= 18) && (voti <= 19)){
								sufficienti++;
							}
							else if((voti >= 0) && (voti <= 17)){
								insufficienti++;
							}
							else
								if(n < 0){
									System.out.println("Terminato!!!");
									System.exit(0);
								}
					}
					
					System.out.println("numero totali di voti: " + n);
					System.out.println("numero di ottimi: " + ottimo);
					System.out.println("numero di distinti: " + distinti);
					System.out.println("numero di buoni: " + buoni);
					System.out.println("numero di discreti: " + discreti);
					System.out.println("numero di sufficienti: " + sufficienti);
					System.out.println("numero di insufficienti: " + insufficienti);
					
		
		} 
	}







4 Risposte

  • Re: Ciclo voti

    robot ha scritto:


    Dove ho sbagliato??
    Il while(voti <= n) non ha senso (perché voti lo usi dopo anche per ricevere il voto i-esimo. Usa un ciclo for, da 0 per i<n (o 1 per i<=n).
    Usa una variabile specifica solo per il voto i-esimo (che può anche definita nel ciclo), chiamala voto, non voti.

    I confronti dei range sono ok. Il if(n < 0){ non serve. Quando il for è terminato ... sai che è finito l'input e quindi stampi i risultati.
  • Re: Ciclo voti

    RISOLTO -- FUNZIONA
    
    import java.util.Scanner;
    
    public class CicloEs14 {
    	
    	
    	public static void main(String[] args) {
    
    		/*
    		 * Si scriva un programma che legge un elenco di voti ottenuti durante un esame come interi 
    		 * da 0 a 30. si mostri il numero totale di voti e il numero di voti in ciascuna delle seguenti
    		 * categorie: ottimo (voti 29 e 30), distinto (voti da 26 a 28), buono (voti da 23 a 25), discreto
    		 * (voti da 20 a 22), sufficiente (voti 18 e 19), insufficiente (voti da 0 a 17). si usi un numero
    		 * negativo per indicare la fine dell'inserimento.
    		 * 
    		 * l'input fosse:
    		 * 0 2 17 18 20 22
    		 * 
    		 * output fosse:
    		 * numero totale di voti:11
    		 * numero di ottimi: 2
    		 * numero di distinti: 2
    		 * numero di buoni: 2
    		 * numero di disceti: 2
    		 * numero di sufficienti: 2
    		 * numero di insufficienti: 2
    		 * 
    		 */
    		
    		/*Il while(voti <= n) non ha senso (perché voti lo usi dopo anche per ricevere il voto i-esimo. 
    		 * Usa un ciclo for, da 0 per i<n (o 1 per i<=n).Usa una variabile specifica solo per il voto i-esimo 
    		 * (che può anche definita nel ciclo), chiamala voto, non voti.I confronti dei range sono ok. 
    		 * Il if(n < 0){ non serve. Quando il for è terminato ... sai che è finito l'input e quindi stampi 
    		 * i risultati.*/
    		
    		int n = 0, voto = 0, cont = 0, ottimo = 0, distinti = 0,buoni = 0,discreti = 0,sufficienti = 0,insufficienti = 0;
    		
    		Scanner in = new Scanner(System.in);
    		
    
    		System.out.println("Quanti voti vuoi inserire: ");
    		n = in.nextInt();
    		
    					
    					for(int i = 1; i <= n; i++){
    						
    						System.out.println("inserisci voti: ");
    						voto = in.nextInt();
    						
    							if((voto >= 29) && (voto <= 30)){
    								ottimo++;
    							}
    							else if((voto >=26) && (voto <= 28)){
    								distinti++;
    							}
    							else if((voto >= 23) && (voto <= 25)){
    								buoni++;
    							}
    							else if((voto >= 20) && (voto <= 22)){
    								discreti++;
    							}
    							else if((voto >= 18) && (voto <= 19)){
    								sufficienti++;
    							}
    							else if((voto >= 0) && (voto <= 17)){
    								insufficienti++;
    							}
    							else
    									System.out.println("Terminato!!!");
    								
    					}
    					
    					System.out.println("numero totali di voti: " + n);
    					System.out.println("numero di ottimi: " + ottimo);
    					System.out.println("numero di distinti: " + distinti);
    					System.out.println("numero di buoni: " + buoni);
    					System.out.println("numero di discreti: " + discreti);
    					System.out.println("numero di sufficienti: " + sufficienti);
    					System.out.println("numero di insufficienti: " + insufficienti);
    					
    		
    		} 
    	}
    
    
    
    
    
    
    
  • Re: Ciclo voti

    robot ha scritto:


    RISOLTO -- FUNZIONA
    Non vedo il senso di quel:
    else
        System.out.println("Terminato!!!");
    Se arrivi in quel else, non vuol dire che è terminato il ciclo ... semplicemente è stato inserito un voto che non rientra in nessuno dei range testati. Quindi al massimo avrebbe più senso dire "Voto non riconosciuto" o cose del genere.
  • Re: Ciclo voti

    Corretto, Grazie.
Devi accedere o registrarti per scrivere nel forum
4 risposte