Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator
Dopo oltre 4 anni si rinnova la serie Sony Alpha 7 con la quinta generazione, che porta in dote veramente tante novità a partire dai 30fps e dal nuovo sensore partially stacked da 33Mpixel. L'abbiamo provata per un breve periodo, ecco come è andata dopo averla messa alle strette.
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1
realme e Aston Martin Aramco F1 Team si sono (ri)unite dando alla vita un flagship con chip Snapdragon 8 Elite Gen 5 e design esclusivo ispirato alle monoposto di Formula 1. La Dream Edition introduce la nuova colorazione Lime Essence abbinata al tradizionale Aston Martin Racing Green, decorazioni intercambiabili personalizzate e una confezione a tema F1, intorno a uno smartphone dall'ottima dotazione tecnica con batteria da 7000mAh ricaricabile a 120W e isola fotografica intercambiabile
OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum
OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum
Abbiamo partecipato all'OVHcloud Summit 2025, conferenza annuale in cui l'azienda francese presenta le sue ultime novità. Abbiamo parlato di cloud pubblico e privato, d'intelligenza artificiale, di computer quantistici e di sovranità. Che forse, però, dovremmo chiamare solo "sicurezza"
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 24-11-2010, 21:13   #1
Negative_creep
Senior Member
 
L'Avatar di Negative_creep
 
Iscritto dal: Jul 2005
Città: Milano
Messaggi: 1078
[C] Puntatore alla stessa struttura

Ciao a tutti, vi espongo il mio problema: ho una matrice creata statisticamente in questo modo:

struct p {
int ID;
int riga;
int colonna;
char tipo[1];
struct p* su; /* Deve essere [Riga-1][colonna] */
struct p* giu; /* Deve essere [Riga+1][colonna] */
struct p* dx; /* Deve essere [Riga][colonna+1] */
struct p* sx; /* Deve essere [Riga][colonna-1] */

} matrice[riga][colonna];

Sostanzialmente ho bisogno di fare in modo che tramite un comando possa in qualche maniera accedere alle celle adiacenti della matrice, ad esempio se facessi:

matrice[2][2]->giu possa accedere a matrice[3][2]
matrice[2][2]->su possa accedere a matrice[1][2]
matrice[2][2]->sx possa accedere a matrice[2][1]
matrice[2][2]->dx possa accedere a matrice[2][3]

In modo tale che possa controllare il contenuto di ogni cella adiacente. Il problema è sapere se:

1) La dichiarazione struct p* su; va bene?
2) Che codice uso per muovermi? Ho sempre errori da parte del compilatore perchè sbaglio qualcosa a livello di aritmetica di puntatori nell'accesso alle varie celle.

Grazie in anticipo!
__________________
CPU: AMD Phenom II X4 965 C3 Motherboard: Asrock 980DE3/U3S3 R2.0 Ram: G-Skill F3 CL7 4GB DDR3 1333Mhz Alimentatore: Corsair VX550w Hard-Disk: Samsung SSD EVO 860 500GB - WD Caviar Black 1 TB
Negative_creep è offline   Rispondi citando il messaggio o parte di esso
Old 24-11-2010, 21:55   #2
goldorak
Senior Member
 
Iscritto dal: Apr 2003
Messaggi: 16462
Scusa ma se allochi staticamente la matrice perche' ti servono i puntatori per spostarti da un elemento all'altro ?
__________________
MICROSOFT : Violating your privacy is our priority
goldorak è offline   Rispondi citando il messaggio o parte di esso
Old 24-11-2010, 22:56   #3
tuccio`
Senior Member
 
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
come riempi quei 4 campi? (su, giu, dx, sx intendo)
tuccio` è offline   Rispondi citando il messaggio o parte di esso
Old 25-11-2010, 00:13   #4
goldorak
Senior Member
 
Iscritto dal: Apr 2003
Messaggi: 16462
Quote:
Originariamente inviato da Negative_creep Guarda i messaggi
Ciao a tutti, vi espongo il mio problema: ho una matrice creata statisticamente in questo modo:

struct p {
int ID;
int riga;
int colonna;
char tipo[1];
struct p* su; /* Deve essere [Riga-1][colonna] */
struct p* giu; /* Deve essere [Riga+1][colonna] */
struct p* dx; /* Deve essere [Riga][colonna+1] */
struct p* sx; /* Deve essere [Riga][colonna-1] */

} matrice[riga][colonna];

Sostanzialmente ho bisogno di fare in modo che tramite un comando possa in qualche maniera accedere alle celle adiacenti della matrice, ad esempio se facessi:

matrice[2][2]->giu possa accedere a matrice[3][2]
matrice[2][2]->su possa accedere a matrice[1][2]
matrice[2][2]->sx possa accedere a matrice[2][1]
matrice[2][2]->dx possa accedere a matrice[2][3]

In modo tale che possa controllare il contenuto di ogni cella adiacente. Il problema è sapere se:

1) La dichiarazione struct p* su; va bene?
2) Che codice uso per muovermi? Ho sempre errori da parte del compilatore perchè sbaglio qualcosa a livello di aritmetica di puntatori nell'accesso alle varie celle.

Grazie in anticipo!

La dichiarazione di struct p e' corretta.
Ogni nodo fa parte di una doppia lista concantenata, una nella direzione verticale (colonne), e l'altra in direzione orrizontale (righe).

Visto che hai scelto una struttura linkata, ovviamente per postarti nelle varie direzioni dovrai usare un algoritmo di visita su liste.
Se sai scorrere su una lista saprai scandire gli elementi della matrice.

Quello che invece non ha alcun senso e' l'allocazione statica.
Te lo dico perche' se allochi staticamente non servono i puntatori nei nodi.
Sono inutili, ridondanti in quanto ogni elemento in posizione x,y puo' essere
accessibile direttamente mediante matrice[x][y]. E ovviamente sono accessibili
anche i nodi adiacienti.

Infine per il modo in cui hai dichiarato la matrice scrivere

matrice[2][2]->giu
matrice[2][2]->su
matrice[2][2]->sx
matrice[2][2]->dx

e' sbagliato. Il modo corretto e'

matrice[2][2].giu (che e' di tipo struct p *)
matrice[2][2].su idem
matrice[2][2].sx idem
matrice[2][2].dx idem

Forse ho capito male, ma se quello che vuoi fare e' una matrice sparsa l'allocazione statica deve sparire.
Devi gestire la matrice come un insieme di liste doppiamente concatenate.
Una lista per ogni riga, ed una per ogni colonna.
__________________
MICROSOFT : Violating your privacy is our priority
goldorak è offline   Rispondi citando il messaggio o parte di esso
Old 25-11-2010, 10:07   #5
Negative_creep
Senior Member
 
L'Avatar di Negative_creep
 
Iscritto dal: Jul 2005
Città: Milano
Messaggi: 1078
Innanzitutto grazie per le risposte, allora vi spiego subito quello che ho bisogno di fare:

ho creato una coda che vorrei riempire di record contenenti delle coordinate che puntano direttamente alla matrice, questo mi serve poichè ho bisogno di controllare il contenuto delle celle della matrice adiacenti alla cella dove ho inserito il dato.

Es. Inserisco un dato nella posizione matrice[2][4] allora inserisco nella coda
il seguente record:

[ ITEM 1 ] [SU] [GIU] [DX] [SX]

e se è il primo elemento che inserisco, tutti quei campi dovranno puntare alle celle adiacenti mostrandomi il contenuto in un dato momento. Essento il primo elemento che inserisco mostreranno "vuota" (tenendo conto di usare un esempio in cui non metto l'elemento vicino al bordo).
Ho bisogno che mettendo Item 2 sopra Item 1 avvenga la seguente cosa:

[ ITEM 2 ] [SU] [ITEM 1] [DX] [SX]
[ ITEM 1 ] [ITEM 2] [GIU] [DX] [SX]

quindi accedendo alla coda e dovendo piazzare Item 3, lui legga che Item 1 ha a disposizione GIU DX SX mentre ITEM 2 SU DX SX per poi scegliere (in base ad un mio calcolo) la miglior posizione dove inserirlo. E' necessario per me avere il riferimento degli elementi nella matrice[][] che ho creato statisticamente. Usando le liste concatenate avrei un grosso costo per gestire tutti i controlli mentre io ho bisogno semplicemente tramite coda accedere direttamente alla struttura matrice, ho pensato quindi che se facessi in modo tale da avere, prendendo l'esempio sopra,

[ITEM 1] nella coda è tradotto come ==> matrice[4][2]

se la struct matrice potesse accedere a sè stessa allora riuscirei:

[ITEM 1].SU ==> matrice[4][2].SU ==> matrice[3][2]

Non sò se sono riuscito a spiegarmi..
__________________
CPU: AMD Phenom II X4 965 C3 Motherboard: Asrock 980DE3/U3S3 R2.0 Ram: G-Skill F3 CL7 4GB DDR3 1333Mhz Alimentatore: Corsair VX550w Hard-Disk: Samsung SSD EVO 860 500GB - WD Caviar Black 1 TB

Ultima modifica di Negative_creep : 25-11-2010 alle 10:14.
Negative_creep è offline   Rispondi citando il messaggio o parte di esso
Old 25-11-2010, 15:47   #6
Negative_creep
Senior Member
 
L'Avatar di Negative_creep
 
Iscritto dal: Jul 2005
Città: Milano
Messaggi: 1078
UP!
__________________
CPU: AMD Phenom II X4 965 C3 Motherboard: Asrock 980DE3/U3S3 R2.0 Ram: G-Skill F3 CL7 4GB DDR3 1333Mhz Alimentatore: Corsair VX550w Hard-Disk: Samsung SSD EVO 860 500GB - WD Caviar Black 1 TB
Negative_creep è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator Sony Alpha 7 V, anteprima e novità della ...
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1 realme GT 8 Pro Dream Edition: prestazioni da fl...
OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum OVHcloud Summit 2025: le novità del cloud...
Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI Care e DisplayPort 2.1a Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI C...
DJI Neo 2 in prova: il drone da 160 grammi guadagna il gimbal e molto altro DJI Neo 2 in prova: il drone da 160 grammi guada...
Il CEO di Reddit dice che r/popular 'fa ...
Spende 1.200 dollari per una RTX 5080 e ...
Datacenter AI, reti elettriche... ecco p...
Super offerta Dyson: la V8 Absolute a 29...
Continua l'odissea di Horses: il gioco i...
Vuoi rivedere una scena specifica di un ...
Windows 11, attenzione: la lista delle C...
Tutti i robot aspirapolvere rimasti ai p...
Robot da 19.000 Pa al prezzo del Black F...
Gaming ultra-fluido a 200 Hz a 80€: ques...
Prime Video sotto accusa: doppiaggi anim...
Rivoluzione Linux fra i gamer: nuovo rec...
OnePlus 15R: in attesa dell'arrivo in It...
BIOS schede madri AMD: AGESA 1.2.8.0 in ...
Questa Smart TV LG 65'' QNED 2025 è un b...
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: 11:55.


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