Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726

    [C] Generazione di sequenze

    Ciao a tutti,

    sto cercando del materiale riguardo la generazione di sequenze in C.
    Conoscete qualche buon manuale on-line che ne parla??


    Grazie

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462

    Re: [C] Generazione di sequenze

    Originariamente inviato da Downloader
    sto cercando del materiale riguardo la generazione di sequenze in C.
    Cosa sono le "sequenze in C"?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726
    Se ad esempio ho una sequenza {1,2,3} e voglio tutte le possibili sequenze di lunghezza 2 otterò:
    (1,1) (1,2) (1,3)
    (2,1) (2,2) (2,3)
    (3,1) (3,2) (3,3)

  5. #5
    codice:
    #include <stdio.h>
    /* Macro per determinare le dimensioni di un array */
    #define ARRSIZE(arr)    ((size_t)(sizeof(arr)/sizeof(*arr)))
    /* Funzione richiamata ricorsivamente da WriteCombinations */
    void InternalWriteCombinations(int * values, size_t elements, int seqLength, char * buffer, char * writePtr, size_t availableSize);
    /* Scrive le combinazioni di simboli contenuti nell'array values (il numero dei suoi elementi è contenuto in elements); le combinazioni saranno lunghe seqLength caratteri */
    void WriteCombinations(int * values, size_t elements, int seqLength);
    
    int main()
    {
        int values[]={1,2,3}; /* valori da utilizzare */
        WriteCombinations(values,ARRSIZE(values),3); /* l'ultimo parametro è la lunghezza delle sequenze */
        return 0;
    }
    
    void InternalWriteCombinations(int * values, size_t elements, int seqLength, char * buffer, char * writePtr, size_t availableSize)
    {
        int i, usedChars;
        for(i=0; i<elements; i++)
        {
            usedChars=_snprintf(writePtr,availableSize,"%d ",values[i]);
            if(seqLength>1)
                InternalWriteCombinations(values,elements,seqLength-1,buffer, writePtr+usedChars,availableSize-usedChars);
            else
                puts(buffer);
        }
    }
    
    void WriteCombinations(int * values, size_t elements, int seqLength)
    {  
        char buffer[512];
        InternalWriteCombinations(values, elements, seqLength, buffer, buffer, ARRSIZE(buffer));
    }
    Amaro C++, il gusto pieno dell'undefined behavior.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.