Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Cos'è la bolla dell'IA e perché se ne parla
Cos'è la bolla dell'IA e perché se ne parla
Si parla molto ultimamente di "bolla dell'intelligenza artificiale", ma non è sempre chiaro perché: l'IA è una tecnologia molto promettente e che ha già cambiato molte cose dentro e fuori le aziende, ma ci sono enormi aspettative che stanno gonfiando a dismisura i valori delle azioni e distorcendo il mercato. Il che, com'è facile intuire, può portare a una ripetizione della "bolla dotcom", e forse anche di quella dei mutui subprime. Vediamo perché
Tutti gli articoli Tutte le news

Vai al Forum
Discussione Chiusa
 
Strumenti
Old 23-10-2013, 10:38   #1
DomusP45
Senior Member
 
L'Avatar di DomusP45
 
Iscritto dal: Apr 2010
Città: Whiterun
Messaggi: 580
[C++] Come creare una lista di oggetti ricorsiva?

Salve a tutti,
sono un pò arrugginito in merito agli array con gli oggetti, e quindi vi chiedo aiuto su questo mio problema.

Devo creare una classe Cubo, definita da 8 punti e un puntatore a vettore di cubi, che altro non è che una lista di 8 oggetti cubo (se stessa in pratica). Ogni oggetto cubo è identificato da un vettore di 8 oggetti punto, dove punto è una struct fatta così:

struct punto{
double x;
double y;
double z;
bool V;
};

Ora, la classe deve essere caratterizzata da due funzioni:

1) Inizializza: che prende in ingresso x,y,z double ed un intero div (che indica la divisione) ed instanzia un numero di cubi iniziale in base a quanto ho diviso lo spazio di partenza con div. Esempio: viene dato 2000,2000,2000 e 4, inizializza divide le misure di questo spazio in 4 e quindi ne vengono fuori 64 cubi. Deve restiture in output il vettore di cubi.

2) verifica: che prende in ingresso un vettore di cubi e verifica con una funzione di retroproiezione su un'immagine se scartare o meno i vari cubi del vettore. Se non va bene, il cubo viene eliminato dalla vettore (vengono contrassegnati i punti come non buoni), altrimenti viene richiamata ricorsivamente su tutti i cubi buoni dopo che sono stati "esplosi" (cioè divisi in altri 8) con la funzione esplodi.

3) La funzione esplodi: prende in ingresso un cubo e lo divide in 8 (dividendo in due le tre misure) e restituisce in output il vettore di 8 sottocubi.

In pratica, immagino un grande cubo da 8 punti iniziali che rappresenta lo spazio in cui effettuo la foto dell'oggetto (dalla quale ottengo l'immagine binaria) e me li ricavo dalle dimensioni fornite in input (x,y,z) dopo di che:

1 - lancio inizializza, che mi restituisce un vettore di tot cubi in base a quanto è stato scelto di dividere;
2 - su tali cubi, lancio verifica, che mi indicherà quali cubi sono buoni e su cui lanciare "esplodi";

ripeto il punto 2 sui cubi usciti da esplodi.


Il discorso in schema è il seguente:



Dove con P indico i punti, con "C" i cubi di partenza e con "SC" i sottocubi.

In pratica è sempre l'oggetto cubo che viene "diviso" in altri 8 cubi più piccoli o cancellato dalla lista di partenza. Quello che dovrò ottenere alla fine è un vettore di cubi con i relativi punti selezionato man mano fino ad un limite fissato in partenza.

Come posso fare questa cosa?? Potete aiutarmi per favore???:muro
__________________
Come la chiami la chiami, la cocozza sempre cocozza è.

Ultima modifica di DomusP45 : 12-11-2013 alle 11:32.
DomusP45 è offline  
Old 23-10-2013, 14:10   #2
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Codice:
class Cube
{
private:
    array<unique_ptr<Cube>, 8> innerCubeList;
};
?
tomminno è offline  
Old 23-10-2013, 14:42   #3
DomusP45
Senior Member
 
L'Avatar di DomusP45
 
Iscritto dal: Apr 2010
Città: Whiterun
Messaggi: 580
Quote:
Originariamente inviato da tomminno Guarda i messaggi
Codice:
class Cube
{
private:
    array<unique_ptr<Cube>, 8> innerCubeList;
};
?
così va impostata? Ed è possibile poi nidificarla?
__________________
Come la chiami la chiami, la cocozza sempre cocozza è.
DomusP45 è offline  
Old 23-10-2013, 15:15   #4
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da DomusP45 Guarda i messaggi
così va impostata? Ed è possibile poi nidificarla?
La struttura è già nidificata di per sè. Ha al suo interno un array di elementi dello stesso tipo.
tomminno è offline  
Old 23-10-2013, 15:23   #5
DomusP45
Senior Member
 
L'Avatar di DomusP45
 
Iscritto dal: Apr 2010
Città: Whiterun
Messaggi: 580
Quote:
Originariamente inviato da tomminno Guarda i messaggi
La struttura è già nidificata di per sè. Ha al suo interno un array di elementi dello stesso tipo.
Ok...allora faccio delle prove, nel caso posso postarti un pò di codice quando ho fatto? Per avere un parere?
__________________
Come la chiami la chiami, la cocozza sempre cocozza è.
DomusP45 è offline  
Old 23-10-2013, 16:18   #6
vendettaaaaa
Senior Member
 
L'Avatar di vendettaaaaa
 
Iscritto dal: Jan 2012
Messaggi: 1267
Non c'è bisogno di chiedere permessi: tu posta, al massimo nessuno ti risponde
vendettaaaaa è offline  
Old 29-10-2013, 11:43   #7
DomusP45
Senior Member
 
L'Avatar di DomusP45
 
Iscritto dal: Apr 2010
Città: Whiterun
Messaggi: 580
Il problema è il seguente:

La classe cubo deve essere fatta di 8 punti (dove punto è x,y,z) e un puntatore ad una lista di 8 sottocubi, cioè una lista di 8 oggetti classe cubo.

Il puntatore a sottocubo va attivato solo se uno degli 8 punti della classe (quindi dell'oggetto cubo) sono di interesse, in tal caso, attivo il vettore di sotto-oggetti cubo, creando 8 oggetti cubo, che avranno a loro volta 8 punti a testa e il puntatore al proprio sotto-oggetto.

Al di là di come verificare se di interesse o meno, come si fa per attivare il sotto-oggetto assegnandogli gli 8 punti? (che ovviamente saranno diversi da sottocubo a sottocubo)

Come si fa ad instanziare questo tipo di gerarchia di oggetti? Alla fine non è una questione di classi derivate o meno, ma di oggetti negli oggetti, sempre dello stesso tipo però.

Sapete dirmi come si fa questa cosa??
__________________
Come la chiami la chiami, la cocozza sempre cocozza è.
DomusP45 è offline  
Old 29-10-2013, 12:48   #8
vendettaaaaa
Senior Member
 
L'Avatar di vendettaaaaa
 
Iscritto dal: Jan 2012
Messaggi: 1267
Quote:
Originariamente inviato da DomusP45 Guarda i messaggi
Il problema è il seguente:

La classe cubo deve essere fatta di 8 punti (dove punto è x,y,z) e un puntatore ad una lista di 8 sottocubi, cioè una lista di 8 oggetti classe cubo.

Il puntatore a sottocubo va attivato solo se uno degli 8 punti della classe (quindi dell'oggetto cubo) sono di interesse, in tal caso, attivo il vettore di sotto-oggetti cubo, creando 8 oggetti cubo, che avranno a loro volta 8 punti a testa e il puntatore al proprio sotto-oggetto.

Al di là di come verificare se di interesse o meno, come si fa per attivare il sotto-oggetto assegnandogli gli 8 punti? (che ovviamente saranno diversi da sottocubo a sottocubo)

Come si fa ad instanziare questo tipo di gerarchia di oggetti? Alla fine non è una questione di classi derivate o meno, ma di oggetti negli oggetti, sempre dello stesso tipo però.

Sapete dirmi come si fa questa cosa??
Prendendo il codice di tomminno, innerCubeList è un array di 8 unique_ptr<Cube>. Inizialmente questi puntatori sono 8 nullptr; per "attivare" innerCubeList basta che fai
for (i = 1; i < 8) innerCubeList[i].reset(new Cube{ x1, x2, x3 }); // semi-pseudo codice
vendettaaaaa è offline  
Old 29-10-2013, 12:56   #9
DomusP45
Senior Member
 
L'Avatar di DomusP45
 
Iscritto dal: Apr 2010
Città: Whiterun
Messaggi: 580
Quote:
Originariamente inviato da vendettaaaaa Guarda i messaggi
Prendendo il codice di tomminno, innerCubeList è un array di 8 unique_ptr<Cube>. Inizialmente questi puntatori sono 8 nullptr; per "attivare" innerCubeList basta che fai
for (i = 1; i < 8) innerCubeList[i].reset(new Cube{ x1, x2, x3 }); // semi-pseudo codice
ok...devo provare in questo modo allora...perchè questo tipo di direttive inner non le conosco. Quindi si usa "reset" per asseggnare ad ogni cubo un valore?

In tal caso sarebbe

for (i=0;i<7;i++){ inneCubeList[i].reset(new Cube{x[i],y[i],z[i]}

??
__________________
Come la chiami la chiami, la cocozza sempre cocozza è.
DomusP45 è offline  
Old 29-10-2013, 13:35   #10
vendettaaaaa
Senior Member
 
L'Avatar di vendettaaaaa
 
Iscritto dal: Jan 2012
Messaggi: 1267
Quote:
Originariamente inviato da DomusP45 Guarda i messaggi
ok...devo provare in questo modo allora...perchè questo tipo di direttive inner non le conosco. Quindi si usa "reset" per asseggnare ad ogni cubo un valore?

In tal caso sarebbe

for (i=0;i<7;i++){ inneCubeList[i].reset(new Cube{x[i],y[i],z[i]}

??
reset è un metodo di unique_ptr, si usa quello anzichè l'uguale perchè unique_ptr non è copiable (copy constructor e copy assignment sono contrassegnate con delete).
reset quindi equivale a:
delete innerCubeList[i]; innerCubeList[i] = new Cube{ x[i], y[i], z[i] };

E assegni un valore non ad ogni cubo, ma ad ogni puntatore a cubo!
vendettaaaaa è offline  
Old 29-10-2013, 13:58   #11
DomusP45
Senior Member
 
L'Avatar di DomusP45
 
Iscritto dal: Apr 2010
Città: Whiterun
Messaggi: 580
Quote:
Originariamente inviato da vendettaaaaa Guarda i messaggi
reset è un metodo di unique_ptr, si usa quello anzichè l'uguale perchè unique_ptr non è copiable (copy constructor e copy assignment sono contrassegnate con delete).
reset quindi equivale a:
delete innerCubeList[i]; innerCubeList[i] = new Cube{ x[i], y[i], z[i] };

E assegni un valore non ad ogni cubo, ma ad ogni puntatore a cubo!
ok, grazie della dritta...farò queste prove e ti farò sapere.
__________________
Come la chiami la chiami, la cocozza sempre cocozza è.
DomusP45 è offline  
Old 29-10-2013, 14:17   #12
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da DomusP45 Guarda i messaggi
ok...devo provare in questo modo allora...perchè questo tipo di direttive inner non le conosco. Quindi si usa "reset" per asseggnare ad ogni cubo un valore?

In tal caso sarebbe

for (i=0;i<7;i++){ inneCubeList[i].reset(new Cube{x[i],y[i],z[i]}

??
reset è un metodo della classe unique_ptr serve semplicemente a riassegnarne il contenuto.
Direttive inner? innerCubeList è solo un nome di variabile.

Mi sa che ti mancano parecchie basi prima di poter affrontare questo problema.

L'inizializzazione di una classe la si fa tramite generalmente tramite il costruttore, quello che serve a te è costruire una classe Cube nel momento in cui sai che ti serve e associarla all'elenco di oggetti Cube del parent.

Più che attivato userei il termine inizializzato
tomminno è offline  
Old 08-11-2013, 16:34   #13
DomusP45
Senior Member
 
L'Avatar di DomusP45
 
Iscritto dal: Apr 2010
Città: Whiterun
Messaggi: 580
Prego i moderatori di eliminare questo thread perchè ne ho aperto un altro più chiaro e conciso. Grazie.
__________________
Come la chiami la chiami, la cocozza sempre cocozza è.

Ultima modifica di DomusP45 : 12-11-2013 alle 11:47. Motivo: eliminazione thread
DomusP45 è offline  
 Discussione Chiusa


Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
FRITZ!Repeater 1700 estende la rete super-veloce Wi-Fi 7 FRITZ!Repeater 1700 estende la rete super-veloce...
L'aggiornamento ai contenuti pre-espansi...
Sony prepara il terreno per la sua handh...
DAZN per Android blocca l'accesso all'ut...
Amazon non si ferma più e abbassa...
Fire TV Stick 4K ancora in super offerta...
Google Pixel su Amazon, scontatissimi: t...
ECOVACS DEEBOT T80 OMNI e T50 OMNI Gen2 ...
Ribassi Bose su Amazon: QuietComfort ove...
Il portatile tuttofare migliore di Amazo...
SpaceX: un satellite ha fotografato il s...
36 idee regalo con offerte Amazon sotto ...
Sony assume il controllo dei Peanuts: Sn...
DJI Neo scende a 149€ su Amazon, in vers...
Scoperto un nuovo esopianeta che orbita ...
Blue Origin NS-37: successo per la missi...
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: 09:50.


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