Gleitkomma Ausnahme



  • Guten Abend.
    Hier der Code:

    #include<stdio.h>
    #include<stdlib.h>
    
    int is_friendly( int, int );
    
    int main( void )
    {
    	printf( "Paar gefunden: %d und %d sind befreundet", value_a, value_b );
    	int value_a;
    	int value_b;
    	int const ITER_LIMIT = 10000;	/* iteration limit */
    	int const PAIRS_LIMIT = 3;	/* how many pairs to find */
    	int pairs_found = 0;
    
    	for( value_a = 2; value_a <= ITER_LIMIT && pairs_found < PAIRS_LIMIT; ++value_a )
    	{
    		for( value_b = 2; value_b <= ITER_LIMIT; ++value_b )
    		{
    
    			if( is_friendly( value_a, value_b ) )
    			{
    				pairs_found++;
    				printf( "Pair found: %d and %d are friendly", value_a, value_b );
    			}
    		}
    	}
    	return 0;
    }
    
    /* checks, if 2 numbers are friendly numbers.
     * returns 1, if numbers are friendly, zero otherwise.
     */
    int is_friendly( int a, int b )
    {
    	int i;
    	int sum_a = 0;
    	int sum_b = 0;
    
    	for( i = 1; i <= b/2; ++i )
    		if( a % i == 0 )
    			sum_a += i;
    
    	if( sum_a == b )
    	{
    		for( i = 1; i <= a/2; ++i )
    			if( b % i == 0 )
    				sum_b += i;
    		if( sum_b == a )
    			return 1;
    		else
    			return 0;
    	}
    	else
    		return 0;		
    }
    

    Der Code kompiliert problemlos mit gcc -Wall -Werror -pedantic -std=c99 ( ist so von der Uni vorgegeben), dennoch laesst er sich nicht ausfuehren. Es kommt nach ./name_des_programms in der Kommandozeile die Meldung: Gleitkomma Ausnahme und weiß nicht wieso.
    Koennt ihr mir bitte helfen?

    PS: Der Vorschau-Button funktioniert nicht 🙂



  • asasasasas schrieb:

    Der Code kompiliert problemlos mit gcc -Wall -Werror -pedantic -std=c99 ( ist so von der Uni vorgegeben), dennoch laesst er sich nicht ausfuehren.

    Der Code compiliert schon mal nicht wegen Zeile 8.

    asasasasas schrieb:

    Es kommt nach ./name_des_programms in der Kommandozeile die Meldung: Gleitkomma Ausnahme und weisz nicht wieso.
    Koennt ihr mir bitte helfen?

    Das ist sehr merkwuerdig, da du keine Gleitkommaberechnung hast.
    Wann (bei welchen Werten von a und b) kommt denn die Ausnahme?
    Auf welchem System und mit welchem gcc arbeitest du?

    asasasasas schrieb:

    PS: Der Vorschau-Button funktioniert nicht 🙂

    Doch. Man darf halt nur ASCII verwenden (du hast ein sz benutzt)



  • DirkB schrieb:

    Das ist sehr merkwuerdig, da du keine Gleitkommaberechnung hast.

    Das ist noch viel merkwürdiger, weil der Code gar nicht kompiliert, wie Du selbst festgestellt hast ...


  • Mod

    DirkB schrieb:

    Das ist sehr merkwuerdig, da du keine Gleitkommaberechnung hast.

    Auch ein paar andere Fehler werden teilweise mit floating point exceptions bedacht. Ich habe das zum Beispiel mal bei einer Integerdivision durch Null gesehen.


Anmelden zum Antworten