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)); }

Rispondi quotando