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);
}