Δημοσιεύτηκε: 02 Σεπ 2011, 13:17
από Star_Light
migf1 έγραψε:Θα ξεφύγουμε, αλλά παρέθεσέ τον :lol:


Οκ :D

Spoiler: show
Κώδικας: Επιλογή όλων
#include <stdio.h>
int raiseToPower(int b, int n);

int main()
{

int b, n;
int z,i;

printf("\nPoses fores thelete na ektelestei to programma?\n");
scanf("%d",&z);

for(i=0; i<z; i++)
{
printf("Give the base: ");
scanf("%d",&b);
printf("Give the exponent: ");
scanf("%d",&n);
if(n<0)
{
printf("\n Invalid value \n");
continue;
}
printf("The result is : %d^%d = %d\n", b, n, raiseToPower(b, n));
}


return 0;
}


int raiseToPower(int b, int n )
{

if(n==0)
return 1;
else
return( b * raiseToPower(b, n-1) );
}


Λοιπον εδω κανω ελεγχο για μη αρνητικη τιμη (εκει που ειναι η if στην main)
πως θα μπορουσα εγω να υπολογιζω και αυτη την αρνητική τιμη? πχ 2^-1 = 1/2^1 = 1/2
πηγα να βαλω ενα "case" μεσα στην συναρτηση αλλα φυσικα δεν μου δουλεψε ενα τετοιο
=>
Κώδικας: Επιλογή όλων
if(n<0) return ( 1/ b * raiseToPower(b, n-1) );


μου εδινε segmentation fault βεβαια οχι αδικα μιας και η επιστρεφομενη τιμη ειναι double με αυτο που κανω ενω το προτυπο της συναρτησης την οριζει σε int.