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
Rispondi
 
Strumenti
Old 12-11-2013, 11:46   #1
DomusP45
Senior Member
 
L'Avatar di DomusP45
 
Iscritto dal: Apr 2010
Città: Whiterun
Messaggi: 580
[C++] Array di oggetti ramificato, funzioni ricorsive

Salve a tutti,
ho chiesto questa cosa in un altro thread, ma adesso che ho le idee più chiare, devo aprire un thread a parte per poter spiegare la situazione e poter chiedere un aiuto concreto. Quindi mi scuso, ma ho fatto prima ad aprire un nuovo thread più chiaro e diretto invece che modificare quello. Ho segnalato ai moderatori di chiudere quello.

Sono un pò arrugginito in merito agli array con gli oggetti ok, ma non riesco ad uscirmene come logica in questa cosa.

Devo creare una classe "Cubo", dove il cubo viene definito da 8 punti e un puntatore a vettore di cubi, che altro non è che una lista/array di 8 oggetti cubo (se stessa in pratica) ed un intero che ne indica il livello.

Ogni oggetto cubo è identificato da un vettore di 8 oggetti punto, dove punto è una struct fatta così:

Codice:
struct punto{
double x;
double y;
double z;
bool V;  //valore booleano per identificare punto buono o meno
};
La classe deve essere caratterizzata da tre 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 x=200,y=200,z=200 e div=4. Inizializza fissa gli 8 punti dello spazio iniziale dalle misure, divide le misure di questo spazio in 4 e quindi ne vengono fuori 64 cubi contenuti. Deve restiture in output il vettore dei 64 cubi che hanno ognuno 8 punti ovviamente.

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 (e vengono contrassegnati i punti come non buoni V = false), altrimenti viene richiamata ricorsivamente su tutti i cubi buoni dopo che sono stati "esplosi" (cioè divisi in altri 8) con la funzione esplodi.

3) esplodi: prende in ingresso un cubo e lo divide in 8 cubi più piccoli (dividendo in due le tre misure in pratica) e restituisce in output il vettore di 8 sottocubi.

Il processo in pratica deve essere:

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, fino ad un massimo livello di esplosione fissato a priori.


Il discorso in schema è il seguente:



Dove con P indico i punti, con "C" i cubi di partenza e con "SC" i cubi più piccoli.

Quello che dovrò ottenere alla fine è un vettore di cubi con i relativi punti selezionati (cioè contrassegnati con V true)

Lasciando perdere il "come ottenere le coordinate degli 8 punti di ogni cubo" (che attualmente non saprei come ottenerle da un punto o una sola dimensione) mi interessa capire come posso ottenere una struttura del genere? Cioè in grado di generare una struttura ramificata di quel tipo..

Il file h della classe potrebbe essere questo?

Codice:
#include <array>

using namespace std;

class cubo
{

	int livello; //variabile livello cubo
	
	struct punto{
		double x;
		double y;
		double z;
		bool V;    //definizione del punto co variable bool per verifica
		};

public:

	cubo(); //costruttore

	~cubo(); //distruttore

	array<unique_ptr<cubo>, 8> sottocubi; //vettore sottocubi

	void inizializza(double x, double y, double z, int div);
	void verifica(cubo* test);
	void esplodi(cubo* test);

};
Uso visual c++ 2010 in windows 7 64bit.

Vi prego aiutatemi!!!!
__________________
Come la chiami la chiami, la cocozza sempre cocozza è.

Ultima modifica di DomusP45 : 12-11-2013 alle 11:52.
DomusP45 è offline   Rispondi citando il messaggio o parte di esso
Old 18-11-2013, 19:18   #2
DomusP45
Senior Member
 
L'Avatar di DomusP45
 
Iscritto dal: Apr 2010
Città: Whiterun
Messaggi: 580
up... nessuno mi sa aiutare?
__________________
Come la chiami la chiami, la cocozza sempre cocozza è.
DomusP45 è offline   Rispondi citando il messaggio o parte di esso
Old 19-11-2013, 16:27   #3
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Hai provato ad implementare e hai trovato qualcosa che non va o stai chiedendo preventivamente l'approvazione del codice che hai scritto?
Cosa ti fa pensare che quello che hai scritto non vada bene per rispondere al quesito iniziale?

Questa struttura ti era già stata proposta nell'altro thread.
Scrivere codice sotto dettatura non serve a molto.

Personalmente non userei i raw pointer per il resto credo possa andare, ma può darsi che mi sfugga qualcosa del tuo problema.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 19-11-2013, 16:46   #4
DomusP45
Senior Member
 
L'Avatar di DomusP45
 
Iscritto dal: Apr 2010
Città: Whiterun
Messaggi: 580
Quote:
Originariamente inviato da tomminno Guarda i messaggi

Personalmente non userei i raw pointer
Intendi nelle funzioni (i puntatori agli oggetti) oppure il discorso degli array con unique_ptr?
__________________
Come la chiami la chiami, la cocozza sempre cocozza è.
DomusP45 è offline   Rispondi citando il messaggio o parte di esso
Old 19-11-2013, 17:54   #5
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da DomusP45 Guarda i messaggi
Intendi nelle funzioni (i puntatori agli oggetti) oppure il discorso degli array con unique_ptr?
I raw pointer sono i puntatori alla C, quindi si mi riferisco alle firme dei metodi (non funzioni!).
E' buona norma in C++ evitarli il più possibile visto che esistono alternative più sicure. Però non è sbagliato.
Probabilmente ti conviene iniziare con la classe che hai scritto te invece che seguire altre strade.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 19-11-2013, 17:59   #6
DomusP45
Senior Member
 
L'Avatar di DomusP45
 
Iscritto dal: Apr 2010
Città: Whiterun
Messaggi: 580
Quote:
Originariamente inviato da tomminno Guarda i messaggi
I raw pointer sono i puntatori alla C, quindi si mi riferisco alle firme dei metodi (non funzioni!).
E' buona norma in C++ evitarli il più possibile visto che esistono alternative più sicure. Però non è sbagliato.
Probabilmente ti conviene iniziare con la classe che hai scritto te invece che seguire altre strade.
grazie tomminno.

Domani in giornata devo definire le ultime cose e poi comincio a scrivere anche il file cpp e ad implementare i vari metodi, costruttori, distruttori...devo solo definire come fare la verifica (la funzione di retroproiezione) in modo di avere un risultato nei test per poter avviare il tutto e fare prove.

Se avessi bisogno di altri consigli, chiederò qui.
__________________
Come la chiami la chiami, la cocozza sempre cocozza è.
DomusP45 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


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...
Cloud sovrano: l'approccio di Broadcom c...
HONOR conferma l'arrivo in Italia di Mag...
La Cina sotto pressione impone maniglie ...
OpenAI integra le app in ChatGPT per tra...
NVIDIA sarebbe pronta a tagliare la prod...
Prezzo minimo storico per iPhone 16 Pro:...
Riot Games scopre una falla nei BIOS che...
Beats in super offerta su Amazon: aurico...
Batterie elettriche, Samsung SDI e Stell...
Clivet presenta Fullness, la pompa di ca...
SpaceX lancerà 167 razzi spaziali...
Yakuza Kiwami 3 e Dark Ties protagonisti...
Privacy a rischio: ecco la VPN che regis...
SpaceX ha annunciato che un satellite St...
ASUSTOR presenta i nuovi NAS Lockerstor ...
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: 18:46.


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