|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Oct 2007
Città: Magenta
Messaggi: 18
|
C-Cosa sono gli array multidimensionali???
Ciao a tutti!!!
Qulacuno mi può spiegare cosa sono gli array multidimensionali in C??? Dato che io non è che di programmazione sono proprio un esperto potreste fare una spiegazione abbastanza di base??? ![]() Grazie moltissimo. Ciao. P.S:di base, però solo per gli array multidimensionali, gli array so cosa sono. |
![]() |
![]() |
![]() |
#2 |
Messaggi: n/a
|
Non conosco C comunque un array multidimensionale in qualsiasi linguaggio di programmazione è semplicemente un array che al proprio interno contiene valori che possono a loro volta essere degli array.
Una sorta di array annidati. es: PHP Codice PHP:
|
![]() |
![]() |
#3 | |||
Junior Member
Iscritto dal: Oct 2007
Città: Magenta
Messaggi: 18
|
Ti ringrazio per la risposta.
Però nella guida di HTML.it che 'sto seguendo per imparare il C cera questa spiegazione e in più delle altre affermazioni che non sono sicuro di aver compreso: Quote:
Il link della pagina è questo. Grazie, ciao. |
|||
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Sai già che un array è una lista di componenti. Un array di 10 interi è un elenco di 10 celle ognuna delle quali può contenere un numero intero. Ogni cella salvo la prima ha una cella precedente, ogni cella salvo l'ultima ha una cella successiva eccetera eccetera.
Un array multidimensionale è: prima di tutto un array quindi è un elenco, una lista di celle che possono contenere dei valori. Da qui non si scappa. Ogni cella di un array multidimensionale è a sua volta un array, cioè un elenco di celle. Questi secondi array hanno tutti quanti la stessa dimensione. Questa seconda dimensione, questa seconda quantità di componenti che puoi immagazzinare in questi array, è ciò che rende multi-dimensionale l'array. C'è una prima dimensione, il numero di celle dell'array, è c'è una seconda dimensione, il numero di celle di ogni array contenuto nelle celle del primo. Così come accade per il primo array, anche i secondi array possono a loro volta contenere altri array. In questo caso le dimensioni saranno tre. La quantità di celle del primo array, la quantità di celle di ognuno degli array contenuti nelle celle del primo, la quantità di celle di ognuno degli array contenuti nelle celle dei secondi array, contenuti nelle celle del primo. Si parla di array multidimensionale quando per ogni livello la dimensione degli array è identica e immutabile. Se la dimensione degli array appartenenti ad uno stesso livello può variare allora siamo di fronte ad un array di array. In C è possibile avere entrambi. La notazione: int[5][4] indica un array multidimensionale (in questo caso a 2 dimensioni): abbiamo un primo array di 5 componenti (prima dimensione) dove ognuno dei componenti è un array che può contenere 4 numeri interi (seconda dimensione). Lo stesso vale nel caso: int[5][10][20] Qui abbiamo un array di 5 componenti (prima dimensione) ciascuno dei quali è un array di 10 componenti (seconda dimensione) ciascuno dei quali è un array che può contenere 20 numeri interi (terza dimensione).
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#5 |
Junior Member
Iscritto dal: Oct 2007
Città: Magenta
Messaggi: 18
|
Una spiegazione più dettagliata non poteva esserci.
Grazie mille. By. |
![]() |
![]() |
![]() |
#6 | |
Bannato
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2682
|
Quote:
Nel tuo caso hai m righe ed n colonne quindi hai una tabella di 12 righe e 10 colonne come puoi vedere dalla dichiarazione delle variabili. Si presuppone che tu usi una matrice per metterci qualcosa dentro (dati). Esattamente come faresti con una tapella in HTML o di EXCEL ogni elemento della tabella conterrà qualcosa, nel tuo caso conterrà VALORI INTERI, te lo dice la dichiarazione della matrice stessa tramite questa dichiarazione int matrix[n][m]; che sostanzialmente la puoi leggere come: "Crea un array bidimensionale (matrice) chiamato matrix di n righe ed m colonne che contiene valori interi (per l'int iniziale che come per le variabili ti stabilisce il TIPO DI DATO che quella struttura dovrà contenere...è una cosa molto importante sapere con che dati stai operando...questa matrice potrà contenere solo valori numerici interi). Poi si presuppone che tale tabella venga popolata in qualche modo con dei valori (li puoi mettere a mano con una dichiarazione stile array, puoi farli mettere ad un programma in maniera random, etcetc) ma adesso non ti frega cosa ci sia dentro. Nel programma vengono dichiarate anche due variabili intere i, j che vengono usate come indici per scorrere le righe e le colonne della tua tabella matrix. Essa viene "esplorata" tramite le seguenti linee di codice: Codice:
for (i=0; i<m; i++) { for (j=0; j<n; j++) { printf("%d", matrix[i][j]); } printf("n"); } è molto semplice, devi scorrere riga per riga tutte le 12 colonne, per cui usi 2 cicli annidati: Il ciclo più interno scorre le n righe, quello più esterno scorre le m colonne. Che succede? sostanzialmente questo Inizzi con l'esecuzione del ciclo più esterno: stai posizionato sulla colonna 0, parte il secondo ciclo che come prima cosa stampa a video il valore contenuto nella prima riga prima colonna ovvero il valore contenuto in matrix[0][0] tramite questa operazione: printf("%d", matrix[i][j]); che dice di stampare il valore decimale contenuto nella matrice matrix nella posizione identificata dall'indice di riga i e dall'indicedi colonna j. Poi il ciclo annidato più interno rinizia e l'indice j viene incrementato di 1 quindi stampa il valore intero contenuto in matrix[0][1], quindi rinizia e stampa matrix[0][2] Questo ciclo interno si fermerà quando l'indice j sarà uguale ad n (detto in maniera rozza ma efficace quando le righe della prima colonna sono state tutte lette), allora rinizierà il ciclo esterno con i incrementato di 1 (quindi i=1) e riprenderà il ciclo interno come prima ma questa volta stampando tutte le righe della seconda colonna e così via finchè non ha stampato tutta la matrice a video. In pratica questo programma scrive prima tutti i valori della prima colonna, poi della seconda colonna, poi della terza e così via fino alla fine della matrice. Spero di non aver detto cazzate ma è aprecchio che non tocco C cmq dovrebbe esse giusto ![]() |
|
![]() |
![]() |
![]() |
#7 |
Junior Member
Iscritto dal: Oct 2007
Città: Magenta
Messaggi: 18
|
Ringrazio anche te.
C'è da dire che sarebbe molto più semplice l'HTML per creare le tabelle!!! ![]() Ti ringrazio ancora. Ciao. |
![]() |
![]() |
![]() |
#8 | |
Bannato
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2682
|
Quote:
Pensa che il C è già un linguaggio ad un livello piuttosto alto (oddio non altissimo...hai i puntatori, cazzi e mazzi e puoi operare direttamente sulla macchina però almeno hai modo di far vedere al linguaggio una array multidimensionale come una tabella). In realtà quellla tua matrice la macchina non la vede assolutamente come ua tabella...la rappresenta come un unico array monodimensionale e se devi lavorare in assembler sono cazzi tuoi tener conto di quanto è lunga ogni singola porzione dell'array dhe definisce per esempio una riga =) hehehe c'è di peggio ![]() |
|
![]() |
![]() |
![]() |
#9 |
Junior Member
Iscritto dal: Oct 2007
Città: Magenta
Messaggi: 18
|
E pensare che avevo scelto il C per iniziare dato che si diceva che era il linguaggio di programmazione più facile!!!
Beh, ci credo anchio che in assembler sarà un casino (praticamente l'assembler è come il linguaggio macchina)!!! Volevo farti una domanda forse un po' OT:secondo te qual è il linguaggio di programmazione più facile??? Grazie, ciao. |
![]() |
![]() |
![]() |
#10 | |
Bannato
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2682
|
Quote:
Diciamo che col C a meno che non sei un mostro non ci fai nulla...quindi se te lo impari lo impari a puro scopo didattico perchè lo si usa in ambienti molto specifici e tosti. Se vuoi imparare un linguaggio che cmq nel bene o nel male ci fai subito qualcosina di potenzialmente utile imparati php. Ma se lo stai studiando solo a scopo didattico per farti unac erta cultura di programmazione C va benissimo (non sperare di farci nulla per ora), poi passa ad altro |
|
![]() |
![]() |
![]() |
#11 |
Junior Member
Iscritto dal: Oct 2007
Città: Magenta
Messaggi: 18
|
Aspetta.
Io il php lo conosco (non alla perfezzione ma il grosso lo so). Però con il php puoi realizzarti sì anche software oltre a pagine web ma sei obbligato a utilizzare un browser per visualizzarli. Per questo ho abbandonato i Web-Devolpment e sono passato a linguaggi di programmazione "seri". Io non voglio fare certamente qualcosa con il C. Una volta imparato il C voglio passare al C++ e infine al Java. Secondo HTML.it il Java è il più dificoltoso tra i tre ma anche il migliore. Ti ringrazio per il consiglio. By. P.S:i puntatori non so ancora cosa siano. |
![]() |
![]() |
![]() |
#12 | |
Bannato
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2682
|
Quote:
JAva lo stò studiando ora all'uni...più difficoltoso? mmm allora se entri nell'ottica della programmazione ad oggetti certe cose che con il C sono delle pesantate diventano delle minchiate, per altre cose è un bordello. Soo due tipi di difficoltà diverse...il C è pesante perchè essendo molto a basso livello se ti devi scrivere una lista o un albero ti IMPICHI perchè ogni struttura deve puntare alla struttura dopo, per scorrere liste e alberi ti scervelli con puntatori e non ti funziona mai nulla prima di ore ed ore di smanettamenti...con Java tutto ciò è molto più automatico e tranquillo per esempio |
|
![]() |
![]() |
![]() |
#13 |
Junior Member
Iscritto dal: Oct 2007
Città: Magenta
Messaggi: 18
|
Scusa, ma io sono ancora al inizio della programmazione.
Non so nè che cosa intendi per liste e alberi nè cosa intendi per puntatori. Comunque ti ringrazio per i suggerimenti che mi stai dando. Ciao. |
![]() |
![]() |
![]() |
#14 |
Bannato
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2682
|
che manuale usi? quando arriverai a quegli argomenti capirai che intendo heheeh ;-)
|
![]() |
![]() |
![]() |
#16 |
Senior Member
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13826
|
"Array Multi-dimensionale" , che parola
![]() Come disse il mio caro vecchio prof di informatica 1 all'epoca "è un nome un po' da guerra tecnologica ...." ![]() ![]() ![]() Ciao
__________________
GPU Compiler Engineer |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 03:41.