Lista Utenti taggati

Risultati da 1 a 13 di 13

Discussione: [c] Semplice funzione

  1. #1
    Utente Attivo
    Data Registrazione
    06-01-06
    Località
    Mugnano di napoli
    Messaggi
    107
    Specifiche del sistema
    Ringraziamenti / Mi Piace
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Predefinito [c] Semplice funzione

    Salve ecco un semplice esercizio:
    Scrivete una funzione che prenda in input la media di uno studentee restituisca 4 qualora la sua media sia compresa tra 90 e 100,3 tra 80 e 89,2 tra 70 e 79,1 tra 60 e 69 e 0 qualora sia inferiore a 60.
    Ecco come ho svolto:
    Codice:
    #include <stdio.h>
    
    int punti (int);
    
    void main()
    {
    	int m;
    	
    	printf( "Inserisci la media: " );
    	scanf( "%d" ,&m );
    	
    	printf( "%d\n",punti(m));
    }
    
    int punti (int m)
    {	
    		
    	if (m>=90 && m<=100) {
    		return 4;
    	}
    
    	else if (m>=80 && m<=89) {
    		return 3;
    	}
    	
    	else if (m>=70 && m<=79) {
    		return 2;
    	}
    
    	else if (m>=60 && m<=69) {
    		return 1;
    	}
    
    	else if (m<60) {
    		return 0;
    	}
    
    }
    C'è qualche altro modo per evitare di scrivere tutti questi if-else,o va bene cosi?
    Purtroppo lo switch va bene solo per specificare un numero o carattere,cioè(case '1',case 'A') giusto?
    "Impossible is Nothing"

  2.  
    Stanco della Pubblicità? Registrati

  3. #2
    Utente
    Data Registrazione
    03-01-12
    Messaggi
    35
    Specifiche del sistema
    Ringraziamenti / Mi Piace
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Predefinito Re: [c] Semplice funzione

    Usa uno Switch !
    Esempio:

    Codice:
    switch (espressione) {
    case elem1:
       istruzione1;
       break; opt
    case elem2:
       istruzione2;
       break; opt
    
    ...
    
    case elemn:
       istruzionen;
       break; opt
    default:
       istruzione;
       break; opt
    }

  4. #3
    Utente Attivo
    Data Registrazione
    06-01-06
    Località
    Mugnano di napoli
    Messaggi
    107
    Specifiche del sistema
    Ringraziamenti / Mi Piace
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Predefinito Re: [c] Semplice funzione

    scusa ma come faccio ad usare lo switch,come faccio a rappresentare m>=90 && m<=100 ?
    mica posso fare
    Codice:
    switch (m) {
    case <=90 && <=100:
            return 4;
            break;
    }
    non credo che posso usare uno switch
    "Impossible is Nothing"

  5. #4
    Utente Attivo
    Data Registrazione
    15-06-10
    Messaggi
    435
    Specifiche del sistema
    Ringraziamenti / Mi Piace
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Predefinito Re: [c] Semplice funzione

    Si l'unico modo sono gli if-else Non credo che si possa fare con lo switch!

  6. #5
    Utente
    Data Registrazione
    03-01-12
    Messaggi
    35
    Specifiche del sistema
    Ringraziamenti / Mi Piace
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Predefinito Re: [c] Semplice funzione

    Sì avete ragione scusate, ho risposto senza pensare.

  7. #6
    Utente
    Data Registrazione
    03-01-12
    Messaggi
    35
    Specifiche del sistema
    Ringraziamenti / Mi Piace
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Predefinito Re: [c] Semplice funzione

    Prova a fare così: return (numero in input - 60) / 10
    Ovviamente il risultato deve essere contenuto in un int.
    Se non ho sbagliato dovresti ottenere quello richiesto senza utilizzare
    If ma solo quel return. Fammi sapere

  8. #7
    Utente Attivo
    Data Registrazione
    21-08-09
    Località
    Reggio Emilia - Modena
    Messaggi
    182
    Specifiche del sistema
    Ringraziamenti / Mi Piace
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Predefinito Re: [c] Semplice funzione

    Citazione Originariamente Scritto da Devrak Visualizza Messaggio
    Prova a fare così: return (numero in input - 60) / 10
    Ovviamente il risultato deve essere contenuto in un int.
    Se non ho sbagliato dovresti ottenere quello richiesto senza utilizzare
    If ma solo quel return. Fammi sapere
    (90 - 60)/10 = 3 e non 4

    Fallo pure con gli else if
    Concluso positivamente con:

  9. #8
    Utente
    Data Registrazione
    03-01-12
    Messaggi
    35
    Specifiche del sistema
    Ringraziamenti / Mi Piace
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Predefinito Re: [c] Semplice funzione

    Citazione Originariamente Scritto da Kappa27 Visualizza Messaggio
    (90 - 60)/10 = 3 e non 4

    Fallo pure con gli else if
    Oh cavolo ! La seconda volta che rispondo la seconda che dico una cagata Avevo letto male il post e avevo visto 90-100 = 3.
    Perdonatemi

  10. #9
    Utente Attivo
    Data Registrazione
    06-01-06
    Località
    Mugnano di napoli
    Messaggi
    107
    Specifiche del sistema
    Ringraziamenti / Mi Piace
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Predefinito Re: [c] Semplice funzione

    devrak:
    figurati,apprezzo sempre quando qualcuno cerca di aiutarmi,a presto
    "Impossible is Nothing"

  11. #10
    Utente Attivo
    Data Registrazione
    06-01-06
    Località
    Mugnano di napoli
    Messaggi
    107
    Specifiche del sistema
    Ringraziamenti / Mi Piace
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Predefinito Re: [c] Semplice funzione

    Nel momento in cui credo di aver capito queste funzioni,mi sorgono sempre dei dubbi.
    Come mai in questo caso m fa da parametro e da argomento...
    Codice:
    int punti (int);
    
    void main()
    {
    	int m;
    	
    	printf( "Inserisci la media: " );
    	scanf( "%d" ,&m );
    	
    	printf( "%d\n",punti(m));
    }
    
    int punti (int m)
    {	
    		
    	if (m>=90 && m<=100) {
    		.....
    	}
    mentre altre volte come nel caso di sotto gli argomenti della funzione (number1,number2) li dobbiamo copiare in altre variabili (x,y)?
    Codice:
    #include <stdio.h>
    int massimo (int,int);
    
    void main(void)
    {
            int number1,number2;
            printf( "Inserisci due interi: " );
            scanf( "%d%d" , &number1, &number2 );
         
            printf( "Il numero massimo è: %d\n" ,massimo (number1,number2) );
    }
    
    int massimo (int x,int y)
    {
    ....
    }
    "Impossible is Nothing"

  12. #11
    Utente
    Data Registrazione
    10-01-12
    Messaggi
    13
    Specifiche del sistema
    Ringraziamenti / Mi Piace
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Predefinito Re: [c] Semplice funzione

    Citazione Originariamente Scritto da jolly Visualizza Messaggio
    Nel momento in cui credo di aver capito queste funzioni,mi sorgono sempre dei dubbi.
    Come mai in questo caso m fa da parametro e da argomento...
    Codice:
    int punti (int);
    
    void main()
    {
        int m;
        
        printf( "Inserisci la media: " );
        scanf( "%d" ,&m );
        
        printf( "%d\n",punti(m));
    }
    
    int punti (int m)
    {    
            
        if (m>=90 && m<=100) {
            .....
        }
    mentre altre volte come nel caso di sotto gli argomenti della funzione (number1,number2) li dobbiamo copiare in altre variabili (x,y)?
    Codice:
    #include <stdio.h>
    int massimo (int,int);
    
    void main(void)
    {
            int number1,number2;
            printf( "Inserisci due interi: " );
            scanf( "%d%d" , &number1, &number2 );
         
            printf( "Il numero massimo è: %d\n" ,massimo (number1,number2) );
    }
    
    int massimo (int x,int y)
    {
    ....
    }
    Invece di x e y puoi tranquillamente chiamarle number1 e number2 non c'e' nessun problema.
    La visibilita' di tali variabili rimangono confinate nel metodo o procedura e quindi non si crea un problema di omonimia.

  13. #12
    Utente Attivo
    Data Registrazione
    06-01-06
    Località
    Mugnano di napoli
    Messaggi
    107
    Specifiche del sistema
    Ringraziamenti / Mi Piace
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Predefinito Re: [c] Semplice funzione

    ops hai ragione grazie per avermi tolto questo dubbio
    "Impossible is Nothing"

  14. #13
    Moderatore
    Data Registrazione
    07-03-10
    Località
    Avellino
    Messaggi
    7,902
    Specifiche del sistema
    Ringraziamenti / Mi Piace
    Mentioned
    25 Post(s)
    Tagged
    1 Thread(s)

    Predefinito Re: [c] Semplice funzione

    jolly io strutturerei il programma in modo diverso

    main

    funzione leggi

    funzione calcola

    funzione stampa

    così è vero che hai molte più funzioni, ma dato che le funzioni si usano per facilitare il compito della programmazione in quanto possono essere riutilizzate da altri programmatori o altri programmi, facendo come dico io accentui questo scopo in quanto la funzione che legge un valore la puoi riutilizzare in qualsiasi altro programma che legga un valore e così via e il main avrà solo il compito di invocarle e di passare i dati da una funzione all'altra... tra l'altro anche quando avrai bisogno di una funzione che legga 5 parametri e non uno e restituisca un valore, fare una piccola modifica è una operazione molti più semplice perchè modifichi solo una funzione a se stante e non un main che potrebbe essere molto lungo e complesso.

    ovviamente IMHO!



  15.  
    Stanco della Pubblicità? Registrati

Informazioni Discussione

Utenti che Stanno Visualizzando Questa Discussione

Ci sono attualmente 1 utenti che stanno visualizzando questa discussione. (0 utenti e 1 ospiti)

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
Torna Su