Δημοσιεύτηκε: 03 Ιούλ 2012, 01:45
από Qdata
spyroskaftanis έγραψε:Σε ευχαριστώ πολύ !!!
Μπορεί να τα βάλω και αυτά σε ένα δεύτερο μέρος!
Μήπως ξέρεις και πως φτιάχνουμε δισδιάστατους πίνακες?


Κανονικά δεν γίνετε να δημιουργήσεις δισδιάστατους πίνακες σε bash αλλά μπορείς να δημιουργήσεις έναν πίνακα στον οποίο θα προσθέτεις στοιχεία με ένα συγκεκριμένο αλγόριθμο για να κατατάσσονται με τέτοιο τρόπο, στον πίνακα, ώστε να μπορείς στη συνέχεια να τα πάρεις με κάποιον άλλο αλγόριθμο στον οποίο θα ορίζεις την "γραμμή" και την "στήλη".

Εγώ θα σου πρότεινα να μην κάνεις χρήση του δισδιάστατου πίνακα σε bash και να καταφεύγεις σε κάτι άλλο. Δεν νομίζω να είναι κάτι βολικό αλλά να θέλεις οπωσδήποτε να δημιουργήσεις έναν "τεχνητό" δισδιάστατο πίνακα τότε πες για να σου γράψω τον αλγόριθμο (τον οποίο δεν θυμάμαι ακριβώς αυτή την στιγμή αλλά αν κάτσω να παιδευτώ στο bash θα το βρω).

Edit:

Μόλις ανακάλυψα πως γίνετε και έτσι:
Κώδικας: Επιλογή όλων
$ #Δημιουργία του πίνακα που θα χρησιμοποιηθεί:
$ declare -a array
$ #Δημιουργία της συνάρτησης για προσθήκη στον πίνακα:
$ add() { i="$1";j="$2";value="$3";array[$((i*10+j))]="$value"; }
$ #Προσθήκες σε διάφορες θέσεις:
$ add 0 0 "this_is_0_0"
$ add 0 1 "this_is_0_1"
$ add 4 6 "this_is_4_6"
$ add 8 8 "this_is_8_8"
$ #Δημιουργία συνάρτησης για προβολή κάποιας θέσης του πίνακα:
$ get() { i="$1";j="$2"; echo "${array[$((i*10+j))]}"; }
$ #Προβολή κάποιων θέσεων του πίνακα:
$ get 0 0
this_is_0_0
$ get 0 1
this_is_0_1
$ get 0 2

$ get 4 6
this_is_4_6
$ get 8 8
this_is_8_8
$


Απλώς χρησιμοποίησε τις συναρτήσεις add και get έτσι όπως είναι αλλάζοντας το 10 που βλέπεις. Το 10 σημαίνει πως ο πίνακας θα είναι 10x10.