Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Non sai programmare? Ecco cosa si può fare con un LLM e una GeForce RTX 5070 Ti
Non sai programmare? Ecco cosa si può fare con un LLM e una GeForce RTX 5070 Ti
Con un semplice dialogo in linguaggio naturale e la potenza di una scheda video di fascia alta è possibile costruire software funzionante da zero, senza scrivere una riga di codice e senza inviare un solo byte dei propri dati a server esterni
Recensione Samsung Galaxy Z Fold8 Ultra: il pieghevole più famoso diventa quasi perfetto
Recensione Samsung Galaxy Z Fold8 Ultra: il pieghevole più famoso diventa quasi perfetto
Samsung rinnova la serie pieghevole di punta con Galaxy Z Fold8 Ultra: pannello interno da 8 pollici quasi senza piega, cerniera Flex Titanium, Snapdragon 8 Elite Gen 5 for Galaxy e batteria finalmente da 5.000 mAh. Prezzo italiano da 2.299 a 2.899 euro. Tra colorimetro, benchmark reali e giorni di uso quotidiano, ecco dove questo pieghevole convince e dove il nome Ultra fatica ancora a trovare piena giustificazione
Insta360 X6: Dolby Vision, 8K e montaggio "Zero Editing"
Insta360 X6: Dolby Vision, 8K e montaggio "Zero Editing"
La nuova Insta360 X6 introduce sensori Sony da 1/1.1" e un SoC Triple AI a 4nm. Analizziamo le riprese 8K, il primo Dolby Vision nativo a 10-bit nel settore sferico e l'innovativo flusso di lavoro diretto sulla futura versione 22 di DaVinci Resolve.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 09-05-2005, 19:13   #1
Mezzetti0903
Senior Member
 
Iscritto dal: Nov 2000
Messaggi: 279
[C]Array Multidimensionale

dunque...nessun problema nel dichiararli!
int a[1][1];
Il vero problema sono le funzioni che devono accettare come parametro un array multidimensione a prescindere dalla dimensione

come le dicchiaro??

int funz(int **a)

oppure

int funz(int *a[])

Giusto?? e' lecito??

...il problema è chiamare la funzione..che cosa gli devo passare senza far scattare il warning del compilatore??
e come recupero poi i valori all'interno della funzione??


avevo pensato che dato che anche nella dichiarazione s[][] si assume s come puntatore bastasse usare (per richiamare i valori)

int r = a[i][j]...invece non funziona
e neppure

int r = (*(*(a+i)+j));


mi date una mano??
__________________
In un arco di tempo abbastanza lungo l'indice di sopravvivenza di ognuno scende a zero
Mezzetti0903 è offline   Rispondi citando il messaggio o parte di esso
Old 09-05-2005, 23:37   #2
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Strano dovrebbe funzionare denza problemi...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 10-05-2005, 08:45   #3
-Yara-
Senior Member
 
L'Avatar di -Yara-
 
Iscritto dal: Nov 2003
Città: Pordenone - Tarvisio
Messaggi: 2451
Quando passi un array bidimensionale devi passare anche la seconda dimensione

Codice:
int Funz(int array_bid[][DIM2])
{}
__________________
Me? The Chosen One? They chose me, and i didn't even graduate from fuckin' high school
Wind FTTE Vula 100/20 - Stats
Retelit / Valcanale 20Mbit/2Mbit // Wind 100/20+Wind4G con EdgerouterX
-Yara- è offline   Rispondi citando il messaggio o parte di esso
Old 10-05-2005, 09:05   #4
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16215
Quote:
Originariamente inviato da Mezzetti0903
Il vero problema sono le funzioni che devono accettare come parametro un array multidimensione a prescindere dalla dimensione
Infatti, per quanto ne so, non è possibile.
Nel senso che non è possibile definire una funzione, che abbia tra i suoi parametri un array di dimensione arbitraria: questo semplicemente perché tipo, array di tipo, array di array di tipo, e così via, sono tutti tipi a due a due diversi.
Forse si potrebbe fare usando una lista variabile di argomenti, ma ho parecchi dubbi in proposito...
Quote:
int funz(int **a)

oppure

int funz(int *a[])
Mi sembra di ricordare che queste due dichiarazioni sono diverse: purtroppo non ricordo in che modo.
Ti redirigo sulle FAQ per il linguaggio C a cura di Steve Summitt, che sono un punto di riferimento.
Quote:
avevo pensato che dato che anche nella dichiarazione s[][] si assume s come puntatore bastasse usare (per richiamare i valori)

int r = a[i][j]...invece non funziona
e neppure

int r = (*(*(a+i)+j));
Questo mi lascia abbastanza perplesso... forse è meglio che posti tutta la porzione di codice che dà problemi...
__________________
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 10-05-2005, 14:17   #5
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Non avevo visto che il vettore bidimensionale era allocato staticamente... Avevo presupposto il vettore bidimensionale allocato dinamicamente...in tal caso sia

int f1(int **t)
{
return t[1][1];
}

che

int f2(int *t[])
{
return t[1][1];
}

vanno bene...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 10-05-2005, 18:25   #6
Mezzetti0903
Senior Member
 
Iscritto dal: Nov 2000
Messaggi: 279
!

Grazie..però ve la siete cercata e ora vi sommergo di codice
Codice:
int f1(int **t) 
{ 
return t[1][1]; 
} 

    

int main(int argc, char *argv[])
{
  int a[3][3];
  a[1][1]=5;
  
  f1(a);
  system("PAUSE");	
  return 0;
}
Al compilatore non piace tanto il passaggio di "quel tipo di puntatore" alla f1..e mi lancia un Warning.
A runtime crasha tutto.

Codice:
int f1(int **t) 
{ 
return t[0][0];
} 

    

int main(int argc, char *argv[])
{
  int a[1][1];
  int **t;
  
  t=a;
  
  a[0][0]=5;
  
  
  f1(t);
  system("PAUSE");	
  return 0;
}
vabè..era un modo per aggirare il problema..normale non funzioni

poi non lo so.. potrei provare a puntare al primo elemento..mmmmm...
un aiutino??


ah..a tutto ciò si aggiunge questa nota nelle FAQ che mi avete consigliato:
Quote:
If a function is already declared as accepting a pointer to a pointer, it is probably meaningless to pass a two-dimensional array directly to it.
peccato non spieghi come dare significato...
__________________
In un arco di tempo abbastanza lungo l'indice di sopravvivenza di ognuno scende a zero

Ultima modifica di Mezzetti0903 : 10-05-2005 alle 18:31.
Mezzetti0903 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Non sai programmare? Ecco cosa si può fare con un LLM e una GeForce RTX 5070 Ti Non sai programmare? Ecco cosa si può far...
Recensione Samsung Galaxy Z Fold8 Ultra: il pieghevole più famoso diventa quasi perfetto Recensione Samsung Galaxy Z Fold8 Ultra: il pieg...
Insta360 X6: Dolby Vision, 8K e montaggio "Zero Editing" Insta360 X6: Dolby Vision, 8K e montaggio "...
Due settimane con Dacia Spring 2026: novità, consumi, autonomia reale e test bagagli Due settimane con Dacia Spring 2026: novit&agrav...
AORUS GeForce RTX 5080 INFINITY WOOD 16G: una scheda video diversa dalle altre AORUS GeForce RTX 5080 INFINITY WOOD 16G: una sc...
Polaroid lancia una nuova serie di fotoc...
Starship: prosegue il recupero di Ship 4...
OpenAI lancia ChatGPT Teens: sotto i 18 ...
Leapmotor sbarca in Argentina: la sfida ...
Operazione Blue Skies: così Googl...
Dietro la piattaforma che rivende DeepSe...
Kentucky, la scuola fa strappare 17 pagi...
Questa è la regina in Cina, e sta...
Samsung è sempre più leader del mercato ...
Snapdragon X2 Elite Extreme domina i ben...
Phantom Blade Zero: nuovi dettagli su st...
Honor testa batterie fino a 12.000 mAh p...
Spotify introduce Playlist Notes: ora ut...
Apple prepara gli AirPods con fotocamera...
Pokémon Center vittima di un attacco hac...
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: 03:55.


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