Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [C] error: ‘else’ without a previous ‘if’

    Salve a tutti ecco la mia ennesima domanda giornaliera...
    Ho fatto un altro programmino in C89 che chiede il reddito mensile in dollari all'utente e calcola l'imposta corrispondente secondo il seguente metodo.

    codice:
    Se il reddito non è superiore a 750$ l'imposta vale l'1% del reddito;
    Se il reddito è compreso tra 750$ e 2250$ l'imposta vale 7.50$ + il 2% della quota sopra i 750$
    Se il reddito è compreso tra 2250$ e 3750$ l'imposta vale 37.50$ + il 3% della quota sopra i 2250$
    Se il reddito è compreso tra 3750$ e 5250$ l'imposta vale 82.50$ + il 4% della quota sopra i 3750$
    Se il reddito è compreso tra 5250$ e 7000$ l'imposta vale 142.50$ + il 5% della quota sopra i 5250$
    Se il reddito è maggiore di 7000$ l'imposta vale 230.00$ + il 6% della quota sopra i 7000$
    Il mio problema è che compilando il seguente
    codice:
    #include <stdio.h>
    
    #define FASCIA1 750.00f
    #define FASCIA2 2250.00f
    #define FASCIA3 3750.00f
    #define FASCIA4 5250.00f
    #define FASCIA5 7000.00f
    
    #define TASSA2 7.50f
    #define TASSA3 37.50f
    #define TASSA4 82.50f
    #define TASSA5 142.50f
    #define TASSA6 230.00f
    
    #define PERCENTUALE2 2.00f
    #define PERCENTUALE3 3.00f
    #define PERCENTUALE4 4.00f
    #define PERCENTUALE5 5.00f
    #define PERCENTUALE6 6.00f
    
    int main(void)
    {
    	float reddito, quota, imposta_percentuale, imposta_totale;
    
    	printf("Immetta prego il suo reddito in dollari: ");
    	scanf("%f", &reddito);
    
    	if (reddito < FASCIA1)
    		imposta_totale = reddito / 100.00f;
    	else if (reddito < FASCIA2)
    		quota = reddito - FASCIA1;
    		imposta_percentuale = quota / 100.00f * PERCENTUALE2;
    		imposta_totale = TASSA2 + imposta_percentuale;
    	else if (reddito < FASCIA3)
    		quota = reddito - FASCIA2;
    		imposta_percentuale = quota / 100.00f * PERCENTUALE3;
    		imposta_totale = TASSA3 + imposta_percentuale;
    	else if (reddito < FASCIA4)
    		quota = reddito - FASCIA3;
    		imposta_percentuale = quota / 100.00f * PERCENTUALE4;
    		imposta_totale = TASSA4 + imposta_percentuale;
    	else if (reddito < FASCIA5)
    		quota = reddito - FASCIA4;
    		imposta_percentuale = quota / 100.00f * PERCENTUALE5;
    		imposta_totale = TASSA5 + imposta_percentuale;
    	else 
    		quota = reddito - FASCIA5;
    		imposta_percentuale = quota / 100.00f * PERCENTUALE6;
    		imposta_totale = TASSA6 + imposta_percentuale;
    
    	if (reddito < 0)
    		printf("Non sono ammessi valori negativi.\n");
    	else printf("L'ammontare delle sue imposte sul reddito e' di %.2f$\n", imposta_totale);
    
    	return 0;
    }
    Ottengo il seguente errore compilando con gcc

    codice:
    zorgatone@zorgatone-laptop:~/Scrivania/Programmazione In C$ gcc -o sez5prog5_comp.out sez5prog5.c
    sez5prog5.c: In function ‘main’:
    sez5prog5.c:34: error: ‘else’ without a previous ‘if’
    sez5prog5.c:38: error: ‘else’ without a previous ‘if’
    sez5prog5.c:42: error: ‘else’ without a previous ‘if’
    sez5prog5.c:46: error: ‘else’ without a previous ‘if’
    zorgatone@zorgatone-laptop:~/Scrivania/Programmazione In C$
    Mi dareste una manina a capire il mio errore? (L'ultimo di una lunga serie... )
    Grazie a tutti in anticipo.
    Zorgatone...

  2. #2
    mancano le parentesi graffe!

  3. #3
    Originariamente inviato da Luciano79
    mancano le parentesi graffe!
    Sono strettamente necessarie?? Non dovrebbe funzionare lo stesso??? Perchè ho provato a metterle ma mi da ancora puù errori!!!!

  4. #4
    se dopo la condizione hai una sola istruzione allora non sono obbligatorie.
    codice:
    if (Condizione)
      FAI QUESTO;
    else if (Condizione2)
    {
      FAI QUELLO;
      FAI ANCHE QUELL'ALTRO;
    }
    else if (Condizione3)
      NON FARE NULLA;
    else
    {
      FAI;
      RIFAI;
    }

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da Zorgatone
    Sono strettamente necessarie??
    Se hai più istruzioni da eseguire, sono necessarie.

    Perchè ho provato a metterle ma mi da ancora puù errori!!!!
    Come le hai messe?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Originariamente inviato da oregon
    Se hai più istruzioni da eseguire, sono necessarie.



    Come le hai messe?
    Ok ora così funziona l'errore era di avere compreso i vari else nella graffa del primo if!!!
    codice:
    #include <stdio.h>
    
    #define FASCIA1 750.00f
    #define FASCIA2 2250.00f
    #define FASCIA3 3750.00f
    #define FASCIA4 5250.00f
    #define FASCIA5 7000.00f
    
    #define TASSA2 7.50f
    #define TASSA3 37.50f
    #define TASSA4 82.50f
    #define TASSA5 142.50f
    #define TASSA6 230.00f
    
    #define PERCENTUALE2 2.00f
    #define PERCENTUALE3 3.00f
    #define PERCENTUALE4 4.00f
    #define PERCENTUALE5 5.00f
    #define PERCENTUALE6 6.00f
    
    int main(void)
    {
    	float reddito, quota, imposta_percentuale, imposta_totale;
    
    	printf("Immetta prego il suo reddito in dollari: ");
    	scanf("%f", &reddito);
    
    	if (reddito < FASCIA1)
    		{imposta_totale = reddito / 100.00f;}
    	else if (reddito < FASCIA2)
    		{quota = reddito - FASCIA1;
    		imposta_percentuale = quota / 100.00f * PERCENTUALE2;
    		imposta_totale = TASSA2 + imposta_percentuale;}
    	else if (reddito < FASCIA3)
    		{quota = reddito - FASCIA2;
    		imposta_percentuale = quota / 100.00f * PERCENTUALE3;
    		imposta_totale = TASSA3 + imposta_percentuale;}
    	else if (reddito < FASCIA4)
    		{quota = reddito - FASCIA3;
    		imposta_percentuale = quota / 100.00f * PERCENTUALE4;
    		imposta_totale = TASSA4 + imposta_percentuale;}
    	else if (reddito < FASCIA5)
    		{quota = reddito - FASCIA4;
    		imposta_percentuale = quota / 100.00f * PERCENTUALE5;
    		imposta_totale = TASSA5 + imposta_percentuale;}
    	else 
    		{quota = reddito - FASCIA5;
    		imposta_percentuale = quota / 100.00f * PERCENTUALE6;
    		imposta_totale = TASSA6 + imposta_percentuale;}
    
    	if (reddito < 0)
    		{printf("Non sono ammessi valori negativi.\n");}
    	else {printf("L'ammontare delle sue imposte sul reddito e' di %.2f$\n", imposta_totale);}
    
    	return 0;
    }
    Grazie a tutti!!!!!!!!!!!!!!!

  7. #7
    Originariamente inviato da Zorgatone
    Sono strettamente necessarie?? Non dovrebbe funzionare lo stesso??? Perchè ho provato a metterle ma mi da ancora puù errori!!!!
    Le graffe, ma anche le tonde, usale SEMPRE anche quando non sono necessarie.
    L'avarizia nell'uso delle parentesi, produce prima o poi sempre problemi.
    ;-)

  8. #8
    Originariamente inviato da MacApp
    Le graffe, ma anche le tonde, usale SEMPRE anche quando non sono necessarie.
    L'avarizia nell'uso delle parentesi, produce prima o poi sempre problemi.
    ;-)
    Notato, infatti ho iniziato a usarle subito dopo in ogni caso... Grazie comunque per la precisazione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.