Problema compilazione funzioni

di il
2 risposte

Problema compilazione funzioni

Buonasera, solo alle prime armi con la programmazione in C.
Ho iniziato ad usare le funzioni e ogni volta che implemento una funzione, e poi compilo, mi dà l'errore [Error]: Id Returned 1 exit status.
Uso il Dev.
Qualcuno può risolvermi questo problema. Vi lascio il codice di un semplice programma per calcolare gli anni bisestili.
#include <stdio.h>
#include <stdlib.h>
#define boolean int
#define falso 0
#define vero !(falso)

boolean bisestile (int annoDaAnalizzare);
int main(){
	int anno;
	printf("Quale anno vuoi analizzare?");
	scanf("%d",&anno);
	
	if(bisestile(anno)==falso) 
	printf("L'anno NON e' bisestile");
	else printf("L'anno e' bisestile");
	
	return 0;
}
boolean bisestile (int annoDaAnalizzare){
	if(annoDaAnalizzare%100 && annoDaAnalizzare%400!=0) return falso;
	else if(annoDaAnalizzare%4==0)return vero;
	
}

2 Risposte

  • Re: Problema compilazione funzioni

    Ciao
    premetto che non conosco il compilatore dev.
    ma non è che l'errore telo da perche fa confusione con le parentesi graffe della routine bisestile?
    nel senso che la funzione
    boolean bisestile (int annoDaAnalizzare){
       if(annoDaAnalizzare%100 && annoDaAnalizzare%400!=0) return falso;
       else if(annoDaAnalizzare%4==0)return vero;
    }
    andrebbe scritta così
    boolean bisestile (int annoDaAnalizzare){
       if(annoDaAnalizzare%100 && annoDaAnalizzare%400!=0) {return false; }
       else if(annoDaAnalizzare%4==0) { return true; }
     }
    spero di esserti stato d'aiuto
  • Re: Problema compilazione funzioni

    In Code::Blocks con mingw/gcc funziona, senza errori di ld ma con un warning che avverte che la funzione per la verifica della "bisestilità" potrebbe ritornare senza specificare un valore di ritorno attendibile.

    Sempre in Code::Blocks con mingw/gcc, così funziona senza neppure un warning:
    #include <stdio.h>
    #include <stdlib.h>
    
    int bisestile( int anno );
    
    int main(){
        int anno;
        
        printf( "Quale anno vuoi analizzare?" );
        scanf( "%d", &anno );
    
        if( !bisestile(anno) )
            printf( "L'anno NON e' bisestile" );
        else printf( "L'anno e' bisestile" );
    
        return 0;
    }
    
    int bisestile( int anno ) {
        if( anno > 1582 ) /* calendario gregoriano */
            return (!(anno%400)) || ( (!(anno%4)) && (anno%100) );
        else /* calendario giuliano (non fa la verifica dei 400 anni) */
            return (!(anno%4)) && (anno%100);
    }
Devi accedere o registrarti per scrivere nel forum
2 risposte