04.06.2008 | 22:12:22
immagine
Ing. Emanuele Scapin
Le istruzioni iterative (cicli)
  • Attenzione: gli esempi sotto riportati sono stati scritti e compilati con Cygwin e non con Dev-C++.


  • Questo è il codice in C++ che produce la conversione di un numero in base 10 in un numero binario (base 2).
    Notare però che la sequenza delle cifre binarie non è stampata nell'ordine corretto.

    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    
    int main(int argc, char** argv) {
    
        int n; // numero da convertire
        printf("introdurre numero da convertire in binario\n");
        scanf("%d", &n);
        
        int q = n; // assegno un valore diverso da zero per iniziare il ciclo
        while (q != 0) {
           q = (int) n / 2; // faccio un cast per avere solo la parte intera
           int r = n % 2;
           printf("%d\n", r);
           n = q;
        }
        return 0;
    }
        

  • Questo è il codice in C++ che produce la conversione di un numero in base 10 in un numero binario (base 2) come il precedente, ma utilizza una stringa per stampare la sequenza binaria nell'ordine corretto.

    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    
    int main(int argc, char** argv) {
    
        int n; // numero da convertire
        string s = ""; // stringa per valore convertito
        printf("introdurre numero da convertire in binario\n");
        scanf("%d", &n);
        
        int q = n; // assegno un valore diverso da zero per iniziare il ciclo
        while (q != 0) {
           q = (int) n / 2; // faccio un cast per avere solo la parte intera
           int r = n % 2;
           char buffer[2];
           sprintf(buffer, "%d", r);
           s = buffer + s;
           n = q;
        }
        cout << s << endl;
        return 0;
    }
        

  • Questo è il codice in C++ che produce la conversione di un numero in base 10 in un numero esadecimale (base 16), utilizza una stringa per stampare la sequenza binaria nell'ordine corretto, inoltre utilizza una serie di if nidificati per individuare il simbolo esadecimale se il resto è maggiore di 9.

    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    
    int main(int argc, char** argv) {
    
        int n; // numero da convertire
        string s = ""; // stringa per valore convertito
        printf("introdurre numero da convertire in binario\n");
        scanf("%d", &n);
        
        int q = n; // assegno un valore diverso da zero per iniziare il ciclo
        while (q != 0) {
           q = (int) n / 16; // faccio un cast per avere solo la parte intera
           int r = n % 16;
           
           if (r == 10) s = 'A' + s;
           else if (r == 11) s = 'B' + s;
           else if (r == 12) s = 'C' + s;
           else if (r == 13) s = 'D' + s;
           else if (r == 14) s = 'E' + s;
           else if (r == 15) s = 'F' + s;
           else {
               char buffer[2];
               sprintf(buffer, "%d", r);
               s = buffer + s;
           }
    
           n = q;
        }
        cout << s << endl;
        return 0;
    }
        

  • Questo è il codice in C++ che produce un triangolo isoscele di asterisci, ovvero un albero di Natale.
    Versione con ciclo For, notare la nidificazione dei cicli.

    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    
    // Un triangolo isoscele di asterisci,
    // ovvero un albero di Natale.
    // Versione con ciclo for.
    int main(int argc, char** argv) {
    
        int n; // n altezza albero, numero righe utilizzate
        cout << "introdurre altezza desiderata" << endl;
        cin >> n;
        
        for(int i = 0; i < n; i++) {
            for(int k = n-i; k > 0; k--) {
                printf(" "); 
            }
            for(int j = 0; j < (i*2)-1; j++) {
                printf("*");
            }
            printf("\n");
        }   
        return 0;
    }
    

    Il risultato prodotto sarà il seguente.




© Emanuele Scapin 2008-2012

 

Valid HTML 4.01! Valid CSS!