Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [c++]ciclo

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826

    [c++]ciclo

    Ciao.
    Ho un ciclo for che deve effettuare 3 comportamenti diversi per una serie di 3 numeri successivi:
    ad es la serie

    123 456 789

    1-4-7 effettua comportamento 1
    2-5-8 effettua comportamento 2
    3-6-9 effettua comportamento 3

    codice:
    nMax=9;
    for(int i=0;i<nMax;i++)
    {
       seitch(i)
       {
          case ??? i%1 comportamento 1
          case ???i%2 comportamento 2
          case ???i%3 comportamento 3
    
       
       }
    }
    PEnso che si possa utilizzare il resto ma non mi so bene come fare.
    ad es prendendo la posizione , dividendola per il max della serie e prendere il resto questo potrà essere 1,2 o 3.

    Qual è il metodo piu' "pulito" per effettuare questo ciclo?

    specifico che la serie puo' avere i numeri piu' disparati:
    498 632 778 999 ecc...
    Grazie.

  2. #2
    codice:
    for(int i = 0, nMax = 9; i < nMax; i++) {
       switch(i) {
    
          case 7:
          case 4:
          case 1: comportamento 1
          case 8:
          case 5:
          case 2: comportamento 2
          case 9:
          case 6:
          case 3: comportamento 3
    
       }
    
    }

  3. #3
    intendi forse una roba del genere?
    Codice PHP:
    #include <iostream>
    #include <cassert>

    void Comportamento1 (){
        
    std::cout << __func__ << std::endl;
    }

    void Comportamento2 (){
        
    std::cout << __func__ << std::endl;
    }

    void Comportamento3 (){
        
    std::cout << __func__ << std::endl;
    }

    int main (void){
        const 
    int nMax 9;
        for (
    int i 0nMax; ++i){
            
            switch (
    + (i%3)){
                case 
    1:
                    
    Comportamento1 ();
                    break;

                case 
    2:
                    
    Comportamento2 ();
                    break;
                    
                case 
    3:
                    
    Comportamento3 ();
                    break;
                    
                default:
                    
    assert (false);
        
            }
        }
        return 
    0;

    In ogni modo puoi anche evitare lo switch:
    Codice PHP:
    #include <iostream>
    #include <cassert>

    typedef void (*ComportamentoX) (void);

    void Comportamento1 (){
        
    std::cout << __func__ << std::endl;
    }

    void Comportamento2 (){
        
    std::cout << __func__ << std::endl;
    }

    void Comportamento3 (){
        
    std::cout << __func__ << std::endl;
    }

    int main (void){
        const 
    ComportamentoX aComportamentoArray [] = {
            
    Comportamento1,
            
    Comportamento2,
            
    Comportamento3
        
    };
        const 
    int nMax 9;
        for (
    int i 0nMax; ++i){
            
    aComportamentoArray [i%3] ();
        }
        return 
    0;


  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    grande ,grazie.

  5. #5
    Originariamente inviato da menphisx
    codice:
    for(int i = 0, nMax = 9; i < nMax; i++) {
       switch(i) {
    
          case 7:
          case 4:
          case 1: comportamento 1
          case 8:
          case 5:
          case 2: comportamento 2
          case 9:
          case 6:
          case 3: comportamento 3
    
       }
    
    }
    Mancano alcuni break, o sbaglio ?
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  6. #6
    Originariamente inviato da Samuele_70
    Mancano alcuni break, o sbaglio ?
    Era pseudo-codice

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.