Minore tra 5 numeri

di Anonimizzato30575 il
4 risposte
Buonasera, ho scritto questo programma in C che calcola il minore tra 5 numeri dati in input e ho un dubbio.
Avrei intenzione di implementare una funzione che mostra un messaggio d'errore se viene inserito un carattere al posto di un numero... suppongo sia possibile ma non saprei come fare, qualcuno saprebbe aiutarmi?

Grazie.
//Scrivere un programma che legge 5 numeri da tastiera e ne restituisce il minimo

#include<stdio.h>
int main(void)
{
float i,n,min,s;
printf("Inserisci un numero: ");
scanf("%f",&n);
printf("\n");
min=n;
	for(i=0;i<4;i++)
	{
	printf("Inserisci un numero: ");
	scanf("%f",&s);
	printf("\n");
	if(s<min)
		min=s;
	}
printf("Il numero minore e' %f",min);
return 0;
}

4 Risposte

  • Puoi provare qualcosa del genere
    
    #include<stdio.h>
    #include<stdlib.h>
    int main(void){
        int i;
        float n;
        char ok = 0, buffer[100];
        while(!ok){
            ok = 1;
            printf("Inserisci un numero: ");
            scanf("%s",  buffer);   
            for(i = 0; buffer[i] != '\0'; i++)
                  if((buffer[i] > '9') || (buffer[i] < '0' && buffer[i] != '.' && buffer[i] != '-' && buffer[i] != '+'))
                    ok = 0;
            if(ok)
                n = strtof(buffer, NULL);
            else
                printf("Formato non valido\n");         
        }
        printf("Hai inserito %f", n);
        return 0;
    }
    
  • Weierstrass ha scritto:


    Puoi provare qualcosa del genere
    Grazie mille, è un po' troppo avanzato per me che faccio C solo a scuola quindi aspetterò altre risposte.
  • Puoi valutare il valore restituito dalla scansione e se è 0 cancellare il buffer di input e ripetere
  • Sì ma in quel caso se scrive "12we" la scanf funziona e si prende 12. Poi se a lui va bene a posto così
Devi accedere o registrarti per scrivere nel forum
4 risposte