// Esercizio 10 pag. 175 /* * File: main.cpp * Author: ospite * * Created on 27 maggio 2010, 8.20 */ #include #include using namespace std; /* * */ const int MAX=32; void binario(int n) { int q=n/2; int r=n-2*q; // i resti vengono visualizzati al contrario cout << r; if (q==0) return; binario(q); } void binario2(int n, int v[], int& m) { int q=n/2; int r=n-2*q; //cout << r; // memorizza i resti in un array che verrĂ  // stampato al contrario v[m]=r; m++; if (q==0) return; binario2(q,v,m); } void stampaRev(int v[], int n) { for (int i=n-1; i>=0; i--) cout << v[i]; cout << endl; } int main(int argc, char** argv) { int n=1256; cout << "Primo modo" << endl; // stampa la serie dei resti al contrario binario(n); cout << endl << "Secondo modo " << endl; int v[MAX]; int m=0; // memorizza la successione dei resti binario2(n,v,m); // la successione viene stampata nel verso corretto stampaRev(v,m); return (EXIT_SUCCESS); } // Esercizio 15 pag. 175 /* * File: main.cpp * Author: maurizio * * Created on 27 maggio 2010, 17.52 */ #include #include using namespace std; /* * */ int sommaDispariRic(int n); int sommaDispariIter(int n); int dispari(int n); int main(int argc, char** argv) { int n=9; cout << "Quadrato di " << n << " come somma dei primi " << n << " numeri dispari (versione iterativa): " << sommaDispariIter(n) << endl; cout << "Quadrato di " << n << " come somma dei primi " << n << " numeri dispari (versione ricorsiva): " << sommaDispariRic(n) << endl; return (EXIT_SUCCESS); } int dispari(int n) { return 2*n-1; } int sommaDispariIter(int n) { int s=0; for (int i=1; i<=n; i++) s=s+dispari(i); return s; } int sommaDispariRic(int n) { if (n==1) return 1; return sommaDispariRic(n-1)+dispari(n); }