Esercizio in c - se il valore ha oppure non ha cifre dopo la virgola diverse da zero.

di Anonimizzato19406 il
6 risposte
Salve a tutti,

Mi potete dire dove ho sbagliato?

//02 - COSTRUTTI DI SELEZIONE - PARTE 1
//15) Dati un valore reale, dire se il valore ha oppure non ha cifre dopo la virgola diverse da zero.

#include <stdio.h>
#include <stdlib.h>

int main()
{
	float n1, temp;

	printf("\nInserisci il 1° valore: ");
	scanf("%f", &n1);

	if (n1 == temp) {
		temp = int(n1);
		printf("Non ha cifre dopo la virgola.\n");
		if (n1 != 0)
			printf("Il valore ha cifre dopo la virgola: %.2f\n");
		//else
		//	exit(1);
	}
	else {
		printf("Valore non accettabili\n");
	}
}

6 Risposte

  • La prima if che senso ha?
  • Temp dev'essere di tipo intero, a cui verrà assegnato il valore intero di n1 tramite casting.
    poi controlli se i due numeri sono uguali: se sì significa che n1 non ha cifre decimali, altrimenti le ha.
    se l'esercizio ti chiede anche di stampare le cifre decimali, una volta stabilito che n1 ha cifre decimali, esegui la sottrazione n1 -= temp e stampi n1.
    (penso ci sia un formattatore per printf che ti consenta di stampare solo le cifre decimali di un numero senza dover rimuovere la sua parte intera, ma in questo momento non mi viene in mente).
  • Salve a tutti,

    Ho corretto il codice, funziona, ma c'è qualcosa che non và.
    Esempio:
    Quando scrivo 2.0, deve stampare, ci sono cifre dopo la virgola
    Quando scrivo 2, deve stampare non ci sono cifre dopo la virgola.
    E' questo il problema che mi dà.
    Mi potete aiutare a correggere il codice?
    
    //02 - COSTRUTTI DI SELEZIONE - PARTE 1
    //15) Dati un valore reale, dire se il valore ha oppure
    //non ha cifre dopo la virgola diverse da zero.
    
    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
    	float x1;
    	int temp;
    
    	printf("\nInserisci il 1° valore: ");
    	scanf("%f", &x1);
    
    	temp = (int)x1;
    	x1 = x1 - temp;
    
    	if (temp == .0)
    		printf("\nNon ha cifre dopo la virgola %d.\n", temp);
    		if (x1 != temp)
    		printf("\nIl valore ha cifre dopo la virgola: %.1f\n", x1);
    	else
    		printf("Valore non accettabili\n");
    	printf("\n");
    }
    
    
  • Quando scrivo 2.0, deve stampare, ci sono cifre dopo la virgola
    Quando scrivo 2, deve stampare non ci sono cifre dopo la virgola.
    ma 2.0 secondo te ha cifre dopo la virgola?
  • Gli zeri dopo la virgola, come si impara dalle elementari, non sono significativi...
  • Ahaha giusto, mi sono confuso.
Devi accedere o registrarti per scrivere nel forum
6 risposte