Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere?
Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere?
HONOR Magic V6 è arrivato in Italia a 2.299,90 euro con una promessa precisa: unire 4 mm di spessore da aperto (8,75 mm chiuso nel modello White, 9 mm negli altri colori) a una batteria da 6.660 mAh, la più capiente mai vista su un pieghevole. Lo abbiamo usato per oltre una settimana in versione Red 16/512 GB per capire se lo Snapdragon 8 Elite Gen 5 tiene testa alla concorrenza anche fuori dai benchmark ufficiali
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni
Redmi Pad 2 9.7 punta su un display ampio e fluido, una batteria capace di accompagnare l'uso quotidiano senza ansie da ricarica e un prezzo accessibile, a partire da 179,90 euro per la versione con 64 GB di storage. Lo Snapdragon 6s 4G Gen 2 e i 4 GB di RAM della configurazione più diffusa frenano però chi cerca reattività e multitasking spinto: ecco il bilancio dopo due settimane di prova diretta
Peugeot Polygon Concept: ecco il futuro delle utilitarie
Peugeot Polygon Concept: ecco il futuro delle utilitarie
Polygon è la concept car di Peugeot che mostra il futuro delle soluzioni del segmento B: tra design compatti e innovativi affiancati da dimensioni compatte uno scherzo dalla manovrabilità incredibile per le manovre a bassa velocità
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 19-07-2005, 13:30   #1
Unrue
Senior Member
 
L'Avatar di Unrue
 
Iscritto dal: Nov 2002
Messaggi: 7162
Vettori di strutture

Salve ragazzi, ho un problemino con i vettori di strutture in c++.

Ho creato il seguente vettore di strutture:
struct { unsigned char *code;
int nbit;
} Codici[256];

Quello che vorrei fare è passare tale vettore ad una funzione, che mi accede ai campi della struttura e li modifica. Esempio:

Codici[2].nbit= 3;(non so se scritto così va bene)

In piu', tale funzione dovrebbe ritornarmi questo vettore di strutture, ma non so che dichiarazioni devo fare e non so principalmente se devo passare direttamente il vettore alla funzione od un puntatore a tale vettore. Thanks .
Unrue è online   Rispondi citando il messaggio o parte di esso
Old 19-07-2005, 13:50   #2
honny
Member
 
Iscritto dal: Jul 2003
Messaggi: 280
edit per non far incazzare ziosilvio .

Ultima modifica di honny : 19-07-2005 alle 15:06.
honny è offline   Rispondi citando il messaggio o parte di esso
Old 19-07-2005, 14:23   #3
Unrue
Senior Member
 
L'Avatar di Unrue
 
Iscritto dal: Nov 2002
Messaggi: 7162
mmm, ho provato ma mi dice che non riconosce il tipo PCodice: POi cosi' creo lo stesso un vettore di strutture?
Unrue è online   Rispondi citando il messaggio o parte di esso
Old 19-07-2005, 14:37   #4
honny
Member
 
Iscritto dal: Jul 2003
Messaggi: 280
edit per non far incazzare ziosilvio .

Ultima modifica di honny : 19-07-2005 alle 15:06.
honny è offline   Rispondi citando il messaggio o parte di esso
Old 19-07-2005, 14:46   #5
Unrue
Senior Member
 
L'Avatar di Unrue
 
Iscritto dal: Nov 2002
Messaggi: 7162
Ok, ora provo

Ultima modifica di Unrue : 19-07-2005 alle 14:53.
Unrue è online   Rispondi citando il messaggio o parte di esso
Old 19-07-2005, 14:48   #6
Unrue
Senior Member
 
L'Avatar di Unrue
 
Iscritto dal: Nov 2002
Messaggi: 7162
Allora, nel file header ho scritto cosi':

PCodice crea_codice_Huffman(Huffman*node,unsigned char*codice,int numerobit,int numeroalberi,Pcodice miocodice);

Nel file cpp lo definita cosi':

PCodice Huffman::crea_codice_Huffman(Huffman*node,unsigned char*current_code,int nbit,int numeroalberi,Pcodice miocodice){

//codice della funzione}

nel main ho scritto cosi':


struct { unsigned char *code;
int nbit;
} HuffmanCodes;
typedef HuffmanCodes*PCodice ;
PCodice miocodice = NULL;
miocodice=(PCodice)malloc( 256 * sizeof (Codice));

Dove sbaglio?
Unrue è online   Rispondi citando il messaggio o parte di esso
Old 19-07-2005, 14:59   #7
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16214
Tanta gente che posta del codice che presume corretto (tra l'altro senza spiegazione alcuna), ma nessuno che spiega cosa c'è che non va in quello per cui si chiede aiuto. Bah...
Quote:
Originariamente inviato da Unrue
Ho creato il seguente vettore di strutture:
struct { unsigned char *code;
int nbit;
} Codici[256];

Quello che vorrei fare è passare tale vettore ad una funzione, che mi accede ai campi della struttura e li modifica.
Hai creato un vettore di nome Codici, di lunghezza 256, i cui elementi sono oggetti di un tipo strutturato senza nome.
Ne segue che non puoi usarlo come argomento di una funzione.
Quote:
Codici[2].nbit= 3;(non so se scritto così va bene)
Va bene; e lo puoi usare sia se Codici è un array, sia se è un puntatore.
Quote:
tale funzione dovrebbe ritornarmi questo vettore di strutture
Una funzione non puo' restituire un array; in compenso, puo' restituire un puntatore al primo elemento dell'array.
Quote:
non so che dichiarazioni devo fare
La dichiarazione va bene a patto di dare un nome alla struttura. Un po' come:
Codice:
struct elem {
    unsigned char *code;
    int nbit;
};
elem Codici[256];
Quote:
non so principalmente se devo passare direttamente il vettore alla funzione od un puntatore a tale vettore.
Quando passi un array a una funzione, esso viene automaticamente convertito a un puntatore al suo primo elemento.
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu

Ultima modifica di Ziosilvio : 19-07-2005 alle 15:01.
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 19-07-2005, 15:02   #8
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16214
Quote:
Originariamente inviato da honny
mai usata la malloc ?
malloc? in C++? Direi che non è il caso...
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 19-07-2005, 15:12   #9
Unrue
Senior Member
 
L'Avatar di Unrue
 
Iscritto dal: Nov 2002
Messaggi: 7162
Quote:
Originariamente inviato da Ziosilvio
Quando passi un array a una funzione, esso viene automaticamente convertito a un puntatore al suo primo elemento.
Dunque, dimmi se ho sbagliato qualcosa:

Nel file header :
TabHuffman crea_codice_Huffman(Huffman*node,unsigned char*codice,int numerobit,int numeroalberi,TabHuffman HuffmanCodes[]);

Nel file cpp, definisco la funzione:

TabHuffman Huffman::crea_codice_Huffman(Huffman*node,unsigned char*current_code,int nbit,int numeroalberi,TabHuffman HuffmanCodes[]){

//codice
return HuffmanCodes}

nel main:

struct TabHuffman{ unsigned char *code;
int nbit;
};

TabHuffman HuffmanCodes[256];

Ultima modifica di Unrue : 19-07-2005 alle 15:22.
Unrue è online   Rispondi citando il messaggio o parte di esso
Old 19-07-2005, 15:12   #10
honny
Member
 
Iscritto dal: Jul 2003
Messaggi: 280
Quote:
Originariamente inviato da Ziosilvio
malloc? in C++? Direi che non è il caso...
[ot]
ho chiesto infatti quando ho notato che unrue ha scritto :
"POi cosi' creo lo stesso un vettore di strutture?"
mi si e' accesa la lampadina e ho chiesto...
[/ot]

ps: comunque il codice che ho eliminato era corretto , ed era talmente elementare che singole righe di commento fossero piu' che adeguate....( errore mio )
e con questo amici come prima
honny è offline   Rispondi citando il messaggio o parte di esso
Old 19-07-2005, 17:39   #11
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16214
Quote:
Originariamente inviato da honny
[ot]
ho chiesto infatti quando ho notato che unrue ha scritto :
"POi cosi' creo lo stesso un vettore di strutture?"
mi si e' accesa la lampadina e ho chiesto...
[/ot]
Ah, ok, allora avevo visto male io.
Chiedo scusa.
Quote:
ps: comunque il codice che ho eliminato era corretto , ed era talmente elementare che singole righe di commento fossero piu' che adeguate....( errore mio )
[Modalità "adesso honny mi mena" ON]
Ma allora, dovevi lasciare il codice dov'era, e magari mettere qualche spiegazione in più.
[Modalità "adesso honny mi mena" OFF]
Scherzi a parte: purtroppo ho intrapreso una vera e propria crociata personale contro un certo modo di aiutare i meno esperti, e spesso (es. in questo caso) mi lascio trascinare dallo zelo.
Chedo scusa.
Quote:
e con questo amici come prima
Amici come prima

P.S.: l'origine del tuo nick è per caso "honny soyt qui mal y pense"?
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu

Ultima modifica di Ziosilvio : 19-07-2005 alle 17:47.
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 19-07-2005, 17:44   #12
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16214
Quote:
Originariamente inviato da Unrue
Nel file header :
TabHuffman crea_codice_Huffman(Huffman*node,unsigned char*codice,int numerobit,int numeroalberi,TabHuffman HuffmanCodes[]);

Nel file cpp, definisco la funzione:

TabHuffman Huffman::crea_codice_Huffman(Huffman*node,unsigned char*current_code,int nbit,int numeroalberi,TabHuffman HuffmanCodes[]){

//codice
return HuffmanCodes}
Con i tipi non ci sono problemi, ma l'ultima riga di Huffman::crea_codice_Huffman dovrebbe essere "return HuffmanCodes;"
Quote:
nel main:

struct TabHuffman{ unsigned char *code;
int nbit;
};
Questa è una definizione di un tipo strutturato che viene usato in una dichiarazione di una funzione all'interno di un header, quindi va o nell'header stesso, o in uno dei file da esso inclusi.
Invece, la riga:
Quote:
TabHuffman HuffmanCodes[256];
dichiara una variabile, e può stare nel main.
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 19-07-2005, 19:31   #13
Unrue
Senior Member
 
L'Avatar di Unrue
 
Iscritto dal: Nov 2002
Messaggi: 7162
Ciao, ho spostato la definizione della struct nel file header, ma mi da' un'errore di sintassi alla riga:

TabHuffman Huffman::crea_codice_Huffman(Huffman*node,unsigned char*current_code,int nbit,int numeroalberi,TabHuffman HuffmanCodes[]){

//codice
}

definita nel file cpp. Non riesco a capire cosa ci sia di sbagliato.Ti riporto quello che ho scritto:

Nell'header:

struct TabHuffman{ unsigned char *code;
int nbit;
};

TabHuffman crea_codice_Huffman(Huffman*node,unsigned char*codice,int numerobit,int numeroalberi,TabHuffman HuffmanCodes[]);

Nel file cpp:


la riga incriminata,e poi nel main:

TabHuffman HuffmanCodes[256];

e poi per richiamare la funzione, sempre nel main:

prova.crea_codice_Huffman(PHuff[posiniziale],current_code,0,numeroalberi,HuffmanCodes);

Ultima modifica di Unrue : 19-07-2005 alle 19:35.
Unrue è online   Rispondi citando il messaggio o parte di esso
Old 20-07-2005, 10:54   #14
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16214
Quote:
Originariamente inviato da Unrue
Non riesco a capire cosa ci sia di sbagliato.
Che messaggi di errore ti dà il compilatore?
Quote:
TabHuffman crea_codice_Huffman(Huffman*node,unsigned char*codice,int numerobit,int numeroalberi,TabHuffman HuffmanCodes[]);
Questa dichiarazione dovrebbe andare nella parte "public" della definizione della classe Huffman.
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 20-07-2005, 11:00   #15
Unrue
Senior Member
 
L'Avatar di Unrue
 
Iscritto dal: Nov 2002
Messaggi: 7162
Si, la dichiarazione della funzione l'ho messa nel public del file header. Mi da' un'errore di sintassi nel file cpp quando vado a definire la funzione:

//a questa riga qua mi da' l'errore
TabHuffman Huffman::crea_codice_Huffman(Huffman*node,unsigned char*current_code,int nbit,int numeroalberi,TabHuffman HuffmanCodes[])


{//codice della funzione}
Unrue è online   Rispondi citando il messaggio o parte di esso
Old 21-07-2005, 08:51   #16
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16214
Aspetta un attimo: tu dichiari nell'header:
Codice:
TabHuffman crea_codice_Huffman(Huffman*node,unsigned char*codice,
                        int numerobit,int numeroalberi,TabHuffman HuffmanCodes[]);
e poi definisci nel .cpp:
Codice:
TabHuffman Huffman::crea_codice_Huffman(Huffman*node,unsigned char*current_code,
                        int nbit,int numeroalberi,TabHuffman HuffmanCodes[]){

//codice
}
Non vorrei sbagliare, ma se inserisci nella dichiarazione i nomi dei parametri, questi devono essere gli stessi che compaiono nella definizione.
Fa' una prova: nell'header, dichiara semplicemente:
Codice:
TabHuffman crea_codice_Huffman(Huffman*,unsigned char*,int,int,TabHuffman[]);
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu

Ultima modifica di Ziosilvio : 21-07-2005 alle 08:53.
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 21-07-2005, 16:23   #17
Unrue
Senior Member
 
L'Avatar di Unrue
 
Iscritto dal: Nov 2002
Messaggi: 7162
Allora, ho provato prima a mettere i nomi uguali e poi a fare come hai detto tu, ma il problema persiste!
Unrue è online   Rispondi citando il messaggio o parte di esso
Old 22-07-2005, 14:25   #18
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16214
Quote:
Originariamente inviato da Unrue
ho provato prima a mettere i nomi uguali e poi a fare come hai detto tu, ma il problema persiste!
Posta i messaggi di errore del compilatore.
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 22-07-2005, 15:08   #19
Unrue
Senior Member
 
L'Avatar di Unrue
 
Iscritto dal: Nov 2002
Messaggi: 7162
Quote:
Originariamente inviato da Ziosilvio
Posta i messaggi di errore del compilatore.
Ecco qua:

"Huffman.cpp": E2141 Declaration syntax error at line 68

alla riga incriminata.
Unrue è online   Rispondi citando il messaggio o parte di esso
Old 23-07-2005, 13:20   #20
Unrue
Senior Member
 
L'Avatar di Unrue
 
Iscritto dal: Nov 2002
Messaggi: 7162
Quote:
Originariamente inviato da Ziosilvio
Posta i messaggi di errore del compilatore.

Allora amico, ho dovuto cambiare un po' di cose in quanto la funzione incriminata è ricorsiva, quindi meglio non passargli l'array. Adesso gli faccio ritornare void, tanto non è necessario che ritorni qualcosa. Il problema pero' è questo, non avendolo piu' come parametro, come gli passo l'array di strutture? Ho definito nel file header la struttura

struct TabHuffman{ unsigned char *code;
int nbit;
};

Nel main il vettore di strutture: TabHuffman HuffmanCodes[256];

Potrei creare tale vettore in modo dinamico dentro la funzione giusto? Tale vettore cosi' è disponibile anche dopo l'uscita dalla funzione, in quanto mi serve anche per un'altra funzione. Quello che non capisco pero' è, avendo creato la struttura nel file header e il vettore di strutture nel file cpp, come mai quando richiamo la funzione,nel corpo della funzione HuffmanCodes non lo riconosce? Analogamente non riconosce il tipo TabHuffman qua nel main:

TabHuffman HuffmanCodes[256];

nonostante nel file header ci sia la dichiarazione alla struttura TabHuffman.
Unrue è online   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere? Recensione HONOR Magic V6: spessore record e sup...
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni Redmi Pad 2 9.7: ampio display, economico e peso...
Peugeot Polygon Concept: ecco il futuro delle utilitarie Peugeot Polygon Concept: ecco il futuro delle ut...
Reno16 Pro: il compatto di OPPO punta su fotocamera da 200MP e il nuovo Bubble! La recensione Reno16 Pro: il compatto di OPPO punta su fotocam...
 Hisense 55U7SE: tuttofare e accessibile, il MiniLED per film, sport e gioco Hisense 55U7SE: tuttofare e accessibile, il Min...
Intel investe altri 5 miliardi di euro p...
OPPO sceglie Clara per il debutto della ...
Migliori offerte sui robot aspirapolvere...
Nuove funzionalità per Network Se...
Come un'auto che non ha mai visto la str...
Nel calcio dei robot vince solo Booster:...
Windows 11, smartphone e PC sono sempre ...
Account Xbox bloccato e giochi persi. Mi...
Apple M7 Ultra: in arrivo nel 2027 con b...
Le auto autonome ostacolano ambulanze e ...
Steam Machine, LED rosso e falsi positiv...
SharpEmu, nuovo emulatore PlayStation 5 ...
Sovranità sui dati: Oracle AI Dat...
Monopattini, scatta l'obbligo di assicur...
CMF by Nothing in offerta su Amazon: Bud...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 13:52.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v