Oppure

Loading
28/03/22 22:39
dexter4551
Ciao a tutti, sono un autodidatta di C# e stavo provando a fare un'esercizio per la combinazione di parole in modo da creare frasi con parole random.

Esempio: Ho n parole in input e tramite il mio programma in C# dovrei creare la maggior parte di combinazione possibili fatte di 12 parole, disposte in maniera random (non è necessario che creino una frase di senso compiuto).

Per esempio, parole in input: abandon","ability","able","about","above","absent","absorb","abstract","absurd","abuse",
"access","accident","account","accuse","achieve","acid","acoustic","acquire","across","act",
"action","actor","actress","actual","adapt","add","addict","address","adjust","admit",

tipo frase: abandon, ability, able, about, above, absorb, absurd, abuse, access, accident, account.
abandon, able, ability....
...... x 12 volte


Potete aiutarmi a creare questo programma, dato che sono ancora un principiante per visual basic e c# (sarei grato ache se mi rivelate se già conoscete un software che svolge questa operazione).

Grazie mille per il vostro aiuto.
Dexter4551.
29/03/22 0:15
Ma tu non hai neanche provato? Vuoi che te lo scriva il forum?

Parti male...
29/03/22 8:24
torn24
Facciamo una premessa 12 parole o 12 caratteri sono solo 12 cose diverse, le combinazioni possibile sono molto elevate, quindi meglio partire da un numero minore di parole. Ti serve il principio di funzionamento non ha nessuno scopo pratico.

Prima del codice pensa in italiano cosa deve fare il programma, e poi cerca il modo di scriverlo nel linguaggio di programmazione.
Sicuramente dovrai salvare le tue parole da qualche parte, forse un array.
Dovrai generare una successione di numeri casuali da 0 a 11, con un vincolo, la successione non deve essere uguale a una precedente.
Per cui mi genero i miei numeri casuali e li salvo da qualche parte, ogni volta che genero numeri casuali controllo nel mio elenco che non siano uguali a quelli esistenti, se fosse cosi, casualmente rigenero un altra sequenza fino a quando ne "trovo" una nuova.
Ultima modifica effettuata da torn24 29/03/22 8:28
aaa
29/03/22 13:45
Carlo
Principiante quanto?
Sai aprire un progetto winform o console con visualstudio?
in programmazione tutto è permesso
29/03/22 17:52
Le combinazioni (che vuol dire "la maggior parte"??) sono

n! / ((n-12)! 12!)

Le permutazioni sono di più ...

il programma e' semplice ma se non hai nessuna esperienza devi chiedere che te lo scrivano
Ultima modifica effettuata da 29/03/22 20:33
08/04/22 14:09
dexter4551
Ho pochissima esperienza dato che non programmo da circa 5-6 anni (ho svolto un misero corso di programmazione informatica di java / visual basic / c# durante i miei primi anni universatari).
Quindi sono benissimo come si utilizza visual studio e aprire un progetto winform o console e le nezioni base della programmazione (classe, array, funzione ecc...)
Si quello che vorrei ottenere è la combinazione di una serie di parole, impostate in input.
C'è un'anima pia in questo forum che mi aiuta a scrivere questo codice?
08/04/22 20:58
Carlo
Credo che tutti siano pronti ad aiutarti, facci vedere cosa hai scritto e dove ti sei impantanato.
Oppure per te aiuto significa che lo dobbiamo scrivere noi da zero?

Se userai WinForm in C#, inizia ad aprire un progetto, metti nel form una ListBox con la proprietà Dock=Fill:
using System.Windows.Forms;

namespace MescolaParole
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            string[] parole = { "abandon","ability","able","about","above","absent","absorb","abstract","absurd","abuse",
                                "access","accident","account","accuse","achieve","acid","acoustic","acquire","across","act",
                                "action","actor","actress","actual","adapt","add","addict","address","adjust","admit" };
            string frase = "";
          
            for (int ciclo1 = 0; ciclo1 < parole.Length; ciclo1++)
            {
                frase = parole[ciclo1 ] + ", ";
                for (int ciclo2 = 0; ciclo2 < parole.Length; ciclo2++)
                {
                     if (ciclo1 != ciclo2) frase += parole[ciclo2] + ", ";
                }
                listBox1.Items.Add(frase);
            }
        }
    }
}

Il codice non fa quello che chiedi, da le prime 30 combinazioni possibili senza ripetere le parole, ma ti può servire per fare domande ed iniziare...
Ultima modifica effettuata da Carlo 08/04/22 21:27
in programmazione tutto è permesso
09/04/22 6:47
Il senso di un forum del genere non è quello di ottenere codice su richiesta se non si sa programmare. Non è una software house gratuita dove arriva chiunque e ordina un programma e lo porta via gratis e senza sforzo.

È una comunità di sviluppatori - con varie esperienze - che si aiutano su codici e problemi esistenti e su cui tutti intervengono attivamente compreso chi ha proposto il thread.
Ultima modifica effettuata da 09/04/22 6:48