Domanda [C] Calcolare tutte le combinazioni

Stato
Discussione chiusa ad ulteriori risposte.

Biuni

Utente Gold
16 Dicembre 2014
304
59
160
343
Ciao a tutti,
qualcuno sa aiutarmi su come creare una funzione in C che faccia tutte le possibili somme tra i numeri di un insieme?
Per spiegarmi bene:
Ho un insieme composto da i numeri { 1 , 2 , 3 } (che è in un array a)
Devo calcolare tutte le possibili somme di questo insieme quindi:
  • 1+1 = 2
  • 1+2 = 3
  • 1+3 = 4
  • 2+1 = 3
  • 2+2 = 4
  • 2+3 = 5
  • 3+1 = 4
  • 3+2 = 5
  • 3+3 = 6
I risultati poi andranno inseriti in un array che verrà confrontato con l'array dell'insieme per controllare se tutti i numeri risultanti dalle somme sono interni all'insieme stesso.

Spero di essere stato chiaro, se c'è qualcosa che non è chiaro chiedete e vi spiegherò più dettagliatamente. Grazie mille.
 
Codice:
int numeri_somma[100]; // array dei numeri dati
Int numeri_risultato[100]; // array per i risultati
int i, z; // indici per cicli

// Ciclo di lettura di tutti i numeri nella lista dei numeri dati
for (i=0; i<sizeof(numeri_somma); i++){
   for (z=0; i<sizeof(numeri_somma); i++){
       // Inserisco nell'array dei numeri somma tutte le somme
       numeri_risultato[indice] = numeri_somma[z] + numeri_somma[i];
       // aumento l'indice dell'array dei numeri somma per inserire il numero successivo
       indice += 1;
   }
}

Probabilmente ho scritto fesserie, sono arrugginito, ma non credo che lo svolgimento sia diverso. Ho dubbi sull'inserimento dei risultati nella lista, sono sicuro che c'è un modo diverso e più corretto ma che non ricordo.

Nell'ultima parte non ho afferrato il concetto.
 
Ciao a tutti,
qualcuno sa aiutarmi su come creare una funzione in C che faccia tutte le possibili somme tra i numeri di un insieme?
Per spiegarmi bene:
Ho un insieme composto da i numeri { 1 , 2 , 3 } (che è in un array a)
Devo calcolare tutte le possibili somme di questo insieme quindi:



    • 1+1 = 2
    • 1+2 = 3
    • 1+3 = 4
    • 2+1 = 3
    • 2+2 = 4
    • 2+3 = 5
    • 3+1 = 4
    • 3+2 = 5
    • 3+3 = 6
I risultati poi andranno inseriti in un array che verrà confrontato con l'array dell'insieme per controllare se tutti i numeri risultanti dalle somme sono interni all'insieme stesso.

Spero di essere stato chiaro, se c'è qualcosa che non è chiaro chiedete e vi spiegherò più dettagliatamente. Grazie mille.
Utilizza la ricorsione e gli alberi... se ti sforzi un po ci arrivi da solo (che è meglio) sono poche righe di codice...
 
Stato
Discussione chiusa ad ulteriori risposte.