n° 219
Novembre 2017
Luglio 17, 2018, 10:48:45 *
Benvenuto! Accedi o registrati.
Hai dimenticato l'e-mail di attivazione?

Accesso con nome utente, password e durata della sessione
Notizia:
 
  Indice Linux Windows Techassistance Gameassistance videogame hardware Aiuto Ricerca Agenda Downloads Accedi Registrati  


* Messaggi recenti
Messaggi recenti
  Visualizza messaggi
Pagine: [1]
1  Linguaggi di programmazione / C# / dividere il codice su pi¨ file inserita:: Gennaio 21, 2018, 02:05:53
Provenendo dal VBA, volevo sapere se anche in c# ho la possibilitÓ di sistemare delle routine (o anche classi) in moduli separati da poter richiamare all'interno del Main() di un programma Windows Form, in modo da avere il codice pi¨ pulito e leggibile.

Grazie

2  Linguaggi di programmazione / C# / Creare cartelle della tombola inserita:: Gennaio 14, 2018, 07:42:49
Salve. Sto cercando da giorni, ormai, di creare un algoritmo per generare, in maniera casuale, le cartelle della tombola.

Di seguito il codice che ho giÓ scritto (sicuramente migliorabile ...) nella speranza che possiate darmi qualche dritta che mi faccia uscire dall'empasse....

Codice:
namespace Tombola
{
    public partial class formStampa : Form
    {

        private static List<int> numeri = new List<int>();
        private List<int> numeriCol1 = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90 };

        private int[,,] cartella = new int[6, 3, 9];

        public formStampa()
        {
            InitializeComponent();

        }


        private void button2_Click(object sender, EventArgs e)
        {

            // posiziona almeno un numero per decina su ogni cartella
            int col = 0;
            int dal = 0;
            int al = 0;
            int riga2 = 0;
            int quantiPerRiga = 0;

            for (int serie2 = 0; serie2 <= 5; serie2++)
            {
                for (int colo = 0; colo <= 8; colo++)
                {
                    if (colo == 0)
                    {
                        dal = 1;
                        al = 9;
                        riga2 = 1;
                    }
                    if (colo == 1)
                    {
                        dal = 10;
                        al = 19;
                        riga2 = 2;
                    }
                    if (colo == 2)
                    {
                        dal = 20;
                        al = 29;
                        riga2 = 0;
                    }
                    if (colo == 3)
                    {
                        dal = 30;
                        al = 39;
                        riga2 = 1;
                    }
                    if (colo == 4)
                    {
                        dal = 40;
                        al = 49;
                        riga2 = 0;
                    }
                    if (colo == 5)
                    {
                        dal = 50;
                        al = 59;
                        riga2 = 0;
                    }
                    if (colo == 6)
                    {
                        dal = 60;
                        al = 69;
                        riga2 = 2;
                    }
                    if (colo == 7)
                    {
                        dal = 70;
                        al = 79;
                        riga2 = 0;
                    }
                    if (colo == 8)
                    {
                        dal = 80;
                        al = 90;
                        riga2 = 2;
                    }


                    if (cartella[serie2, riga2, colo] == 0)
                    {
                        Random random = new Random();
                        int numeroDecina = random.Next(dal, al);

                        while (numeriCol1.IndexOf(numeroDecina) == -1)
                        {
                            random = new Random();
                            numeroDecina = random.Next(dal, al);
                        }

                        cartella[serie2, riga2, colo] = numeroDecina;  // cartella[serie, RIGA, 0] = numeroDecina;
                        numeriCol1.Remove(numeroDecina);

                        stampacartelle();

                        numeroserie.Text = numeroDecina.ToString();
                        numeroserie.Update();
                        numeriMancanti.Text = numeriCol1.Count.ToString();
                        numeriMancanti.Update();
                    }
                    else
                    {
                        MessageBox.Show("Doppione");
                    }
                }

            }

            // ora posiziono tutti gli altri numeri
            col = 0;
            quantiPerRiga = 0;

            while (numeriCol1.Count != 0)
            {
                Random random = new Random();
                int numeroDecina = random.Next(numeriCol1.Min(), numeriCol1.Max() + 1);
                while (numeriCol1.IndexOf(numeroDecina) == -1)
                {
                    Application.DoEvents();
                    numeroDecina = random.Next(numeriCol1.Min(), numeriCol1.Max() + 1);
                }

                if (numeroDecina < 10)
                {
                    col = 0;
                }
                else if (numeroDecina == 90)
                {
                    col = 8;
                }
                else
                {
                    col = numeroDecina / 10;
                }

                bool trovato = true;
                int tentativi = 0;

                while (trovato)
                {
                    if (tentativi > 15 && numeriCol1.Count <= 4)
                    {
                        MessageBox.Show("Soluzione non trovata. Ritentare");
                        trovato = false;
                    }
                    Random random2 = new Random();
                    int riga = random2.Next(0, 3);

                    Random random3 = new Random();
                    int serie = random3.Next(0, 6);


                    quantiPerRiga = 0;
                    for (int y = 0; y <= 8; y++)
                    {
                        if (cartella[serie, riga, y] != 0)
                            quantiPerRiga++;
                    }

                    if (quantiPerRiga < 5)
                    {
                        if (cartella[serie, riga, col] == 0)
                        {
                            cartella[serie, riga, col] = numeroDecina;
                            numeriCol1.Remove(numeroDecina);

                            stampacartelle();

                            numeroserie.Text = numeroDecina.ToString();
                            numeroserie.Update();
                            numeriMancanti.Text = numeriCol1.Count.ToString();
                            numeriMancanti.Update();

                            trovato = false;
                        }
                        else
                        {
                            tentativi++;
                        }
                    }

                }
            }

            MessageBox.Show("Finito");



        }

        private void stampacartelle()

        {
            label55.Text = "";
            label56.Text = "";
            label57.Text = "";
            label58.Text = "";
            label59.Text = "";
            label60.Text = "";
            label61.Text = "";
            label62.Text = "";
            label63.Text = "";
            label64.Text = "";
            label65.Text = "";
            label66.Text = "";
            label67.Text = "";
            label68.Text = "";
            label69.Text = "";
            label70.Text = "";
            label71.Text = "";
            label72.Text = "";

            char pad = '0';
            for (int s = 0; s <= 6; s++)
            {
                for (int r = 0; r <= 3; r++)
                {
                    for (int c = 0; c <= 8; c++)
                    {
                        // CARTELLA 0  
                        if (s == 0 && r == 0)
                        {

                            label55.Text = label55.Text + (cartella[s, r, c].ToString().PadLeft(2, pad)) + "  ";
                            label55.Update();
                        }
                        if (s == 0 && r == 1)
                        {

                            label56.Text = label56.Text + (cartella[s, r, c].ToString().PadLeft(2, pad)) + "  ";
                            label56.Update();
                        }
                        if (s == 0 && r == 2)
                        {

                            label57.Text = label57.Text + (cartella[s, r, c].ToString().PadLeft(2, pad)) + "  ";
                            label57.Update();
                        }

                        // CARTELLA 1
                        if (s == 1 && r == 0)
                        {

                            label60.Text = label60.Text + (cartella[s, r, c].ToString().PadLeft(2, pad)) + "  ";
                            label60.Update();
                        }
                        if (s == 1 && r == 1)
                        {

                            label59.Text = label59.Text + (cartella[s, r, c].ToString().PadLeft(2, pad)) + "  ";
                            label59.Update();
                        }
                        if (s == 1 && r == 2)
                        {

                            label58.Text = label58.Text + (cartella[s, r, c].ToString().PadLeft(2, pad)) + "  ";
                            label58.Update();
                        }

                        // CARTELLA 2
                        if (s == 2 && r == 0)
                        {

                            label63.Text = label63.Text + (cartella[s, r, c].ToString().PadLeft(2, pad)) + "  ";
                            label63.Update();
                        }
                        if (s == 2 && r == 1)
                        {

                            label62.Text = label62.Text + (cartella[s, r, c].ToString().PadLeft(2, pad)) + "  ";
                            label62.Update();
                        }
                        if (s == 2 && r == 2)
                        {

                            label61.Text = label61.Text + (cartella[s, r, c].ToString().PadLeft(2, pad)) + "  ";
                            label61.Update();
                        }

                        // CARTELLA 3
                        if (s == 3 && r == 0)
                        {

                            label66.Text = label66.Text + (cartella[s, r, c].ToString().PadLeft(2, pad)) + "  ";
                            label66.Update();
                        }
                        if (s == 3 && r == 1)
                        {

                            label65.Text = label65.Text + (cartella[s, r, c].ToString().PadLeft(2, pad)) + "  ";
                            label65.Update();
                        }
                        if (s == 3 && r == 2)
                        {

                            label64.Text = label64.Text + (cartella[s, r, c].ToString().PadLeft(2, pad)) + "  ";
                            label64.Update();
                        }

                        // CARTELLA 4
                        if (s == 4 && r == 0)
                        {

                            label69.Text = label69.Text + (cartella[s, r, c].ToString().PadLeft(2, pad)) + "  ";
                            label69.Update();
                        }
                        if (s == 4 && r == 1)
                        {

                            label68.Text = label68.Text + (cartella[s, r, c].ToString().PadLeft(2, pad)) + "  ";
                            label68.Update();
                        }
                        if (s == 4 && r == 2)
                        {

                            label67.Text = label67.Text + (cartella[s, r, c].ToString().PadLeft(2, pad)) + "  ";
                            label67.Update();
                        }

                        // CARTELLA 5
                        if (s == 5 && r == 0)
                        {

                            label72.Text = label72.Text + (cartella[s, r, c].ToString().PadLeft(2, pad)) + "  ";
                            label72.Update();
                        }
                        if (s == 5 && r == 1)
                        {

                            label71.Text = label71.Text + (cartella[s, r, c].ToString().PadLeft(2, pad)) + "  ";
                            label71.Update();
                        }
                        if (s == 5 && r == 2)
                        {

                            label70.Text = label70.Text + (cartella[s, r, c].ToString().PadLeft(2, pad)) + "  ";
                            label70.Update();
                        }

                    }
                }
            }
        }



        }
    }
}
Le regole da seguire sono:

1) cartelle da 3 righe e 9 colonne
2) numeri per decina per colonna (prima colonna 1-9, seconda 10-19 ..... nona 80-90)
3) nella serie da 6 cartelle tutti i 90 numeri presenti, nessuno ripetuto
4) cinque numeri per riga (e quattro spazi vuoti)
5) numeri in cartella ordinati in ordine decrescente per colonna (considerando gli eventuali valori "0" come spazi) (non implementato nel codice postato)
6) non pi¨ di due numeri per colonna (non implementato nel codice postato)

Il lungo codice postato presenta principalmente questo problema:

1) a volte il ciclo non si chiude in quanto restano 1 /2 numeri che impossibile sistemare (per esempio, resta il numero 19 e l'unica riga dove sistemarlo (in quanto contiene 4 numeri) Ŕ questa __/10/__/__/47/52/__/70/__/. A questo punto il programma non trovando disponibile il posto delle decine libero va in loop e si blocca)

quindi immagino sia scritto in maniera errata (va forse utilizzata una ricorsivitÓ ? che io non so implementare ....)

Spero qualcuno possa aiutarmi.

Grazie.
3  Linguaggi di programmazione / Java / Re: Classe per estrarre combinazioni da un insieme inserita:: Dicembre 15, 2017, 08:35:37
In sostanza vorresti/dovresti scrivere un algoritmo che ti ritorni tutte le combinazioni di k elementi dati da un insieme di n elementi, con n>k.

In sostanza devi creare un codice che ti fornisca disposizioni semplici(con ripetizione)/permutazioni. Presumo quello che vedi on line qui:  Sorriso

http://utenti.quipo.it/base5/combinatoria/calcombinat.htm

Scusa per il ritardo. Si Ŕ un'ottima base di partenza. Grazie
4  Linguaggi di programmazione / Java / Classe per estrarre combinazioni da un insieme inserita:: Dicembre 03, 2017, 10:46:09
Salve a tutti.
 Avrei la necessitÓ di implementare su un mio programma un algoritmo che estragga da un insieme di lettere (max 10) tutte le combinazioni (anche con ripetizioni) che si possono creare estraendo "n" lettere.
Quindi se ho 5 lettere e digito 3 devo ottenere tutte le combinazioni di tre lettere che si formano con tutte e 5 le lettere impostate.

Ho cercato su internet ma ho trovato molti spunti per anagrammi (e quindi con numero pari di lettere sia in entrata che in uscita) ma non quello che vorrei io.

Qualcuno pu˛ indicarmi qualche risorsa su cui documentarmi o propormi del codice da cui trarre spunto ?

Grazie
5  Linguaggi di programmazione / Java / Re: Eclipse: come configurarlo al meglio ? inserita:: Febbraio 29, 2012, 07:44:02
Ciao e grazie per la risposta. In effetti come inizio vorrei indirizzami su swing.  Ma c'e' qualcosa di diverso da eclipse o netbeans che sia consigliato per i principianti come me?  ( so che un editor di testo per iniziare e' il massimo,  ma mi farebbe anche comodo avere i suggerimenti in linea e le tante altre comoditÓ di un ide ). Grazie
6  Linguaggi di programmazione / Java / Eclipse: come configurarlo al meglio ? inserita:: Febbraio 28, 2012, 07:42:04
Salve a tutti.
Questo e' il mio primo post sul forum.
Utilizzo Ubuntu 11.10.
Vorrei incominciare ad imparare a programmare in java. Ho installato tutto il necessario e sembra andare.
Vorrei chiedervi come configurare al meglio l'ambiente IDE di eclipse. Per esempio se cerco di utilizzare delle librerie esterne (i cui jar sono su /home/carlo/leclipselib) eclipse non me li vede.
Non so se, inoltre, c'e' qualche altro settaggio utile e necessario (in generale).
Grazie.
Pagine: [1]
Copyright © 2017 Edizioni Master SpA. p.iva : 02105820787

Tutti i diritti di proprietà letteraria e artistica riservati. - Privacy



powered by Simple Machines