[c] Semplice funzione

Pubblicità

jolly

Utente Attivo
Messaggi
110
Reazioni
4
Punteggio
38
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?
 
:) Usa uno Switch !
Esempio:

Codice:
switch (espressione) {
case elem[SUB]1[/SUB]:
   istruzione[SUB]1[/SUB];
   break; [SUB]opt[/SUB]
case elem[SUB]2[/SUB]:
   istruzione[SUB]2[/SUB];
   break; [SUB]opt[/SUB]

...

case elem[SUB]n[/SUB]:
   istruzione[SUB]n[/SUB];
   break; [SUB]opt[/SUB]
default:
   istruzione;
   break; [SUB]opt[/SUB]
}
 
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 :)
 
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 :)
 
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 :sisi:

Fallo pure con gli else if :ok:
 
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)? :help:
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)
{
....
}
 
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)? :help:
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.
 
jolly io strutturerei il programma in modo diverso :look:

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!
 
Pubblicità
Pubblicità
Indietro
Top