|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Oct 2007
Messaggi: 3
|
[C++] Cicli per incrementare le variabili
Ciao a tutti, questo è il mio primo post su questo forum, spero di aver postato e bene e non aver postato una domanda eccessivamente frequente
![]() Sto realizzando un semplice programmino per generare dei numeri primi ma ho un problema dovuto alle mie scarsissime conoscenze di programmazione. Dunque: ho una formula di 26 variabili che da come risultato un numero primo, la versione attuale del programma attirubisce un valore random alle variabili, io vorrei poter realizzare un programma che partendo da 1, fino ad un valore massimo stabilito dall'utente, esegua la formula con tutte le combinazioni possibili delle variabili. Qualcuno è in grado di darmi un'idea di come strutturare i cicli per realizzarlo? tutte le idee che mi sono venute in mente non coprono tutte le combinazioni possibili, non mi serve il codice ma solo un'idea su come strutturarlo. Grazie in anticipo, Federico. |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Comunque, parlando in generale, ci sono almeno 2 possibilità: fare N cicli annidati (dove N è il numero delle variabili, se devi avere 3 variabili farai 3 cicli annidati) oppure "linearizzare" la progressione usando la stessa logica dei sistemi di numerazione: parti con un array es. {1, 1, 1}, incrementi il primo valore 2..3..4...max dopodiché lo riporti al valore iniziale e incrementi il valore successivo e così via.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
|
Puoi fare degli inner loop del tipo
Codice:
for (a = 1; i<MAX_VALORE; a++) for (b = 1; i<MAX_VALORE; b++) for (c = 1; i<MAX_VALORE; c++) for [...] numero_primo = formula(a,b,c,....)
__________________
Il sole è giallo |
![]() |
![]() |
![]() |
#4 |
Junior Member
Iscritto dal: Oct 2007
Messaggi: 3
|
Dunque grazie per le risposte, il linguaggio sarebbe il pascal o il c++, agli array non ci avevo pensato ma mi sfugge una cosa sulla serie di cicli annidati: in questo modo copre tutte le combinazioni? non inizia ad aumentare prima l'ultima variabile e poi tutte le altre? ad esempio riuscirei a ottenere la combinazione a=3, b=1, c=4?
|
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Faccio degli esempi in "C", con 3 variabili ognuna con valori da 1 a 10 compresi. (A) Cicli annidati Codice:
int a, b, c; for (a = 1; a <= 10; a++) { for (b = 1; b <= 10; b++) { for (c = 1; c <= 10; c++) { printf ("%d, %d, %d\n", a, b, c); } } } (B) Come "sistema di numerazione": Codice:
int n[3] = { 1, 1, 1 }; int carry, i; do { for (i = 0; i < 3; i++) printf ("%d, ", n[i]); printf ("\n"); carry = 1; for (i = 2; i >= 0; i--) { if ((n[i] += carry) > 10) n[i] = 1; else { carry = 0; break; } } } while (!carry); ![]()
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#6 |
Junior Member
Iscritto dal: Oct 2007
Messaggi: 3
|
Grazie mille per le risposte ora proverò a vedere cosa riesco a fare
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:37.