#include <stdio.h>
int somma(int x, int y)
{
int prec;
if (y == 0)
return x;
else {
prec = somma(x, --y);
return ++prec;
}
}
int prodotto(int x, int y)
{
if (y == 0)
return 0;
else
return (somma(x, prodotto(x, --y)));
}
int esponente(int x, int y)
{
if (y == 0)
return 1;
else
return (prodotto(x, esponente(x, --y)));
}
int leggiIntero()
{
int i;
printf("Immetti un intero ! ");
scanf("%d%*[^\n]", &i);
getchar();
return i;
}
int main(void)
{
int i, j;
char ch;
do {
printf("\n*** IMMETTI UN CARATTERE A SCELTA FRA I SEGUENTI ***\n");
printf("***** 1: leggi il primo intero\n");
printf("***** 2: leggi il secondo intero\n");
printf("***** 3: stampa il primo intero\n");
printf("***** 4: stampa il secondo intero\n\n");
printf("***** s: somma i due interi\n");
printf("***** p: moltiplica i due interi\n");
printf("***** e: eleva il primo intero al secondo\n\n");
printf("***** Q: per terminare il programma\n\n");
scanf("%c%*[^\n]", &ch);
getchar();
switch (ch) {
case '1':
i = leggiIntero();
break;
case '2':
j = leggiIntero();
break;
case '3':
printf("Primo intero : %d\n", i);
break;
case '4':
printf("Secondo intero: %d\n", j);
break;
case 's': case 'S':
printf("Somma di %d e %d = %ld\n", i, j, somma(i, j));
break;
case 'p': case 'P':
printf("Prodotto di %d e %d = %ld\n", i, j, prodotto(i, j));
break;
case 'e': case 'E':
printf("%d elevato a %d = %ld\n", i, j, esponente(i, j));
break;
case 'q': case 'Q':
printf("CIAO :-)\n");
break;
}
} while (ch != 'Q' && ch != 'q');
return 0;
}