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