|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Mar 2005
Messaggi: 497
|
[C#] Programma combinazioni con 80 numeri in gruppi di 5
Salve, volevo chiedervi dei suggerimenti su come fare un programma che mi generi tutte le combinazioni con i numeri da 1 a 80 in gruppi da 5.
Grazie per l'aiuto. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Intanto prova a dirci quante sono.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Mar 2005
Messaggi: 497
|
Ho fatto un piccolo Windows Form con un bottone ed una textbox e questo codice nella pagina cs:
Codice:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;
namespace Combinazioni
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
int A = 1;
int B = 2;
int C = 3;
int D = 4;
int E = 5;
do
{
if (A != B &&
A != C &&
A != D &&
A != E)
{
if (B != C &&
B != D &&
B != E)
{
if (C != D &&
C != E)
{
if (D != E)
{
textBox1.Text += A + " - " +
B + " - " +
C + " - " +
D + " - " +
E + "\n";
}
}
}
}
if (E == 80)
{
E = 5;
D++;
if (D == 80)
{
E = 5;
D = 4;
C++;
}
if (C == 80)
{
E = 5;
D = 4;
C = 3;
B++;
}
if (B == 80)
{
E = 5;
D = 4;
C = 3;
B = 2;
A++;
}
}
E++;
}
while (A != 77);
}
}
}
Il mio PC è da oramai 4 ore che elabora i dati di questo programma. E' forse andato in loop? |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Mar 2005
Messaggi: 497
|
Quasi quante quelle del superenalotto...
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Mar 2005
Messaggi: 497
|
Beh dovrebbe essere 80!/5!(75!)=24040016
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
Ti propongo un algoritmo ricorsivo
Codice:
funzione(array di appoggio, indice, n, k, DA){
maxIndex = indice + n - k;
for i = DA to maxIndex
appoggio[i] = i
se indice < k-1
funzione(array, indice + 1, n, k, j + 1)
n = 80 nel tuo caso k = 5 nel tuo caso DA parte da zero ed è l'indice dell'array temporaneo ho volutamente omesso molte cose ma il succo è: 1) - per ogni cella dell'array di appoggio tu puoi inserire numeri che partono da DA fino a maxIndex 2) - ad ogni iterazione chiami la funzione stessa incrementando l'indice dell'array temporaneo prendi carta e penna e prova a eseguire l'algoritmo con pochi numeri... |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Mar 2005
Messaggi: 497
|
Scusami ma non riesco ad interpretare bene l'algoritmo che mi proponi.
In che linguaggio è? |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
Non è in nessun linguaggio...è in pseudocodice
Ammetto di averlo scritto frettolosamente ma non è difficile da capire.. prova con carta e penna a simularlo magari con numeri fino a 5 presi a gruppi di 3 o 4 |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:40.




















