Gli esercizi
Testi e soluzioni di alcuni esercizi
Funzioni per il calcolo delle potenze
Letto in input un numero floating point x e un numero intero n, calcola la potenza xn utilizzando tre algoritmi differenti: iterativa, ricorsiva e facendo uso delle funzioni esponenziale e logaritmo naturale (per questo include la libreria math.h).
Per compilare il programma potenze.c con il compilatore GCC si deve utilizzare il seguente comando: gcc potenze.c -o potenze -Wall -lm.
/* ** potenze.c ** ** Legge in input un numero floating point (x) ed un numero ** intero (n); quindi calcola la potenza x^n con tre funzioni ** differenti: iterativa, ricorsiva e facendo uso delle funzioni ** esponenziale e logaritmo naturale (per questo include la ** libreria math.h). ** ** Marco Liverani (liverani@mat.uniroma3.it) - Marzo 2001 */ #include <stdlib.h> #include <stdio.h> #include <math.h> /* * potenza con algoritmo iterativo */ float potenza1(float x, int n) { int i; float p = 1.0; for (i=1; i<=n; i++) { p = p*x; } return(p); } /* * potenza con algoritmo ricorsivo */ float potenza2(float x, int n) { if (n == 0) { return(1); } else { return(x * potenza2(x, n-1)); } } /* * potenza con exp e log (solo per x>0) */ float potenza3(float x, int n) { float p; p = exp(n * log(x)); return(p); } /* * funzione principale (main) */ int main(void) { int n; float x, p; printf("Inserisci la base: "); scanf("%d", &x); printf("Inserisci l'esponente: "); scanf("%d", &n); p = potenza1(x, n); printf("Primo algoritmo: %f^%d = %f\n", x, n, p); p = potenza2(x, n); printf("Secondo algoritmo: %f^%d = %f\n", x, n, p); p = potenza3(x, n); printf("Terzo algoritmo: %f^%d = %f\n", x, n, p); return(0); }