n° 219
Novembre 2017
Gennaio 19, 2018, 01:01:36 *
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
Pagine: [1] 2 3 ... 10
 1 
 inserita:: Oggi alle 11:55:06  
Aperta da pisinho - Ultimo messaggio da pisinho
Buongiorno,
si sa niente della rivista di Dicembre o DIcembre/Gennaio a questo punto ? siamo fermi al n. 219.
Anche per voi ?

Saluti

 2 
 inserita:: Gennaio 17, 2018, 01:05:17  
Aperta da GPCPP_2018 - Ultimo messaggio da oregon
op è un puntatore, tu lo hai usato per allocare e tu lo devi usare per distruggere l'oggetto. E' una regola semplice.

E' meglio sempre scrivere

if (op) delete[] op;

Altra storia se nella classe avessi inserito

prova op;

 3 
 inserita:: Gennaio 16, 2018, 11:49:36  
Aperta da GPCPP_2018 - Ultimo messaggio da AldoBaldo
"Disclaimer": NON SONO UN ESPERTO, QUINDI POTREI SCRIVERE DELLE INESATTEZZE.
Qualcuno più pratico mi corregga qualora fosse il caso. Detto questo...



Codice:
#include <cstdlib>
#include <iostream>

using namespace std;

class prova {
    public:
        int no;

        prova() {
            no=4;
        }

        ~prova() {}
};

class clase {
    public:
        int valore;
        prova *op;

        clase() {
            op = new prova[1];  /* quando crei un oggetto di classe clase
                                ** allochi dinamicamente un oggetto di classe
                                ** prova il puntatore al quale viene collocato
                                ** nella proprieta' op */
            valore = 1000;
            cout<<"classe ok"<<endl;
        }

        ~clase() {
            valore = 500; /* questo e' inutile, perche' la proprieta' valore
                          ** dell'oggetto che stai distruggendo non sara' piu'
                          ** disponibile dopo la distruzione */

            delete[] op;  /* quando distruggi l'oggetto di classe clase
                          ** provochi la scomparsa del puntatore conservato
                          ** nella proprieta' op, ma in nessun modo provochi
                          ** la deallocazione automatica della memoria
                          ** dinamica puntata; per liberare quella memoria
                          ** occorre provvedere a una distruzione esplicita
                          ** dell'oggetto puntato da op PRIMA che il puntatore
                          ** op finisca nel "limbo" delle cose distrutte */
                           
            op = NULL;    /* questo e' inutile, perche' la proprieta' op
                          ** dell'oggetto che stai distruggendo non sara' piu'
                          ** disponibile dopo la distruzione, se non per puro
                          ** caso; a scopi dimostrativi, facciamolo lo stesso */

            cout<<"classe terminata"<<endl;
        }
};

int main( int argc, char *argv[] ) {
    clase *pt = new clase[1];
    cout<<pt[0].valore<<endl;
    cout<<pt[0].op->no<<endl;

    delete[] pt;                /* qui hai distrutto l'oggetto creato in memoria
                                ** dinamica, della quale avevi conservato
                                ** l'indirizzo della collocazione in memoria
                                ** nella variabile pt; dal momento della
                                ** distruzione, pt punta a una zona di memoria
                                ** dove non trovi altro che "immondizia", per
                                ** cui pt non dovrebbe piu' essere usato; e'
                                ** pratica comune impostare su NULL un puntatore
                                ** non piu' valido, proprio per essere
                                ** consapevoli del suo stato di puntatore non
                                ** piu' valido */
   
    /* sarebbe bene aggiungere sempre...
   
    pt = NULL;
   
    ...per prudenza; continuiamo senza averlo fatto */
   
    cout<<pt[0].valore<<endl;   /* con questa riga stai mandando in console
                                ** valori in merito ai quali non si sa nulla:
                                ** potrebbero essere qualsiasi cosa, col rischio
                                ** anche (in programmi piu' articolati) di
                                ** combinare dei potenziali "disastri" */

    cout<<pt[0].op->no<<endl;   /* con questa riga, se non e' stato annullato in
                                ** precedenza, stai usando un puntatore ("op")
                                ** che non hai idea di dove punti; casualmente
                                ** POTREBBE anche essere ancora il puntatore
                                ** all'oggetto di classe prova creato
                                ** dall'oggetto di classe clase ormai distrutto,
                                ** ma piu' probabilmente no; a scopi
                                ** dimostrativi ho precedentemente impostato
                                ** pt[0].op->no su NULL, nel distruttore
                                ** CON pt[0].op->no su NULL IMPOSTATO SU NULL,
                                ** QUESTA RIGA MANDA IN PALLA IL PROGRAMMA! */

    system( "PAUSE" );
    return EXIT_SUCCESS;
}

 4 
 inserita:: Gennaio 16, 2018, 12:37:42  
Aperta da Mike F - Ultimo messaggio da michele.p
Allora proviamo a cambiare "il percorso": giro la tua richiesta alla Redazione.

 5 
 inserita:: Gennaio 16, 2018, 12:18:53  
Aperta da Mike F - Ultimo messaggio da Mike F
Provato con email standard, pec... nulla!
ad un certo punto mi hanno risposto dicendomi di andare a vedere all'ufficio postale, gli ho chiesto gli estremi della spedizione... mai piu' risposto.
Ora procederò con una denucia e con una segnalazione all'associazione dei consumatori.
Incredibile!!!!


 6 
 inserita:: Gennaio 15, 2018, 04:05:51  
Aperta da Daddy1 - Ultimo messaggio da Daddy1
Purtroppo restituendomi solo l'errore vuoto non ho nessun riferimento dell'errore.

Formatterò il PC, siccome avevo già in mente di farlo e prendo così due piccioni con una fava.

Comunque no, non è una cosa inerente all'università ma questo problema è sopraggiunto a lavoro.

Grazie mille per il tempo e il tuo aiuto,

Davide

 7 
 inserita:: Gennaio 15, 2018, 11:48:45  
Aperta da ningia55 - Ultimo messaggio da ningia55
Riporta una mail dove è possibile contattarti o al limite, se non vuoi/puoi riportare la mail, contattate l'utente in privato (o anche qui i"in chiaro" e poi vi scambiate le mail in privato).

Sarebbe opportuno che riportassi anche cosa offri in cambio, oggi come oggi la vedo difficile che qualcuno - salvo casi particolari - si offri "volontario".


Grazie per i suggerimenti!

Chi fosse interessato può contattarmi qui in privato o alla mail ningia55@libero.it, offro in cambio una ricompensa in soldi da stabilire con il programmatore.

 8 
 inserita:: Gennaio 14, 2018, 07:42:49  
Aperta da kar - Ultimo messaggio da kar
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.

 9 
 inserita:: Gennaio 13, 2018, 10:22:01  
Aperta da ubuntumate - Ultimo messaggio da michele.p
Ad esempio: implementazione della FFT (o DFT o DTFT) su FPGA?  Occhi al cielo

Insomma, una di 'ste robe  Ghigno qui:

http://users.encs.concordia.ca/home/a/amer/teach/elec442/notes/Ch8_DTFT_DFT_FS.pdf

 10 
 inserita:: Gennaio 13, 2018, 04:01:52  
Aperta da ubuntumate - Ultimo messaggio da ubuntumate
Un saluto a tutti,
quest'anno ho finalmente, dopo secoli, l'esame di maturità e devo realizzare necessariamente un circuito sui basare la tesina. Una tesina prettamente compilativa non è accettata. Io volevo realizzare qualcosa che unisse i miei maggiori interessi, ossia l'elettronica e la matematica. Al momento sto pensando di realizzare qualcosa su FPGA usando Verilog e VHDL che abbia comunque a che fare con Matematica, in particolare con l'Ottimizzazione (percorso di studio che vorrei intraprendere). Non ho molte idee e quello che ho non sono molto originali poiché riguardano soprattutto la riproduzione di vecchie CPU, di cui conosco solo nome dell'architettura. L'ideale sarebbe sfruttare il tempo destinato alla stesura della tesina per studiare argomenti comunque previsti nel percorso di studio delle architetture di elaboratori e della Matematica, quella più interessante. Dunque, se avete consigli su possibili progetti, risorse da visionare per trarre spunti etc etc fatevi avanti che qui i suggerimenti sono ben accetti!  Sorriso

Pagine: [1] 2 3 ... 10
Copyright © 2017 Edizioni Master SpA. p.iva : 02105820787

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



powered by Simple Machines