Makis23 Δημοσιεύτηκε Δεκέμβριος 4, 2012 #1 Κοινοποίηση Δημοσιεύτηκε Δεκέμβριος 4, 2012 Καλησπερα παιδια εχω μια ερωτηση στην C.Εχω εναν πινακα 200 θεσεων o οποιος ειναι ηδη ορισμενος με χαρακτηρες και αλλα ...define BOARD 200θελω να ρωτησω απο τη στιγμη που εχω κανει αυτο το define οριζω μονοδιαστατο πινακα και οχι δισδιαστατο που οριζεται με board[j] ...Mπορω στον αρχικο πινακα με board 200 να χρησιμοποιησω ως διευκολυνση τα i και j ??Δηλαδη να μετατρεψω το n σε i και j για να εχω περισσοτερη ευκολια στις διαφορες θεσεις και πραξεις του πινακα ??Η εισαγωγη των i και j ως βοηθητικων μεταβλητων για να αποφυγω τους αριθμους για μετακινησεις θεσεων κτλ ...τον καθιστα δισδιαστατο ?? Εφοσον δεν εχω κανει εισαγωγη board[j] δεν μπορει να θεωρηθει δισδιαστατος ετσι δεν ειναι ??? Link to comment Share on other sites More sharing options...
ganastasiou Δεκέμβριος 4, 2012 #2 Κοινοποίηση Δεκέμβριος 4, 2012 Το ποιά μεταβλητή θα βρίσκεται εντός του [] μπορείς να την ονομάσεις και μπάμπη, δεν έχει σημασία, δηλαδή αν i=5 και j=10 τότε board[i*j]=board[50], άρα θέση 50.Το ερώτημα σου επειδή δεν είναι πολύ σαφές, μέσα στις [] μπορείς να έχεις ότι πράξη θές μεταξύ των μεταβλητών, με προυπόθεση το αποτέλεσμα των πράξεων να είναι <= απο το μέγεθος που έχεις ορίσει αρχικά.Για πίνακα μονοδιάστατο μπορείς να κάνεις αυτό board[i+j] αλλά όχι αυτό board[j] Link to comment Share on other sites More sharing options...
Makis23 Δεκέμβριος 4, 2012 Author #3 Κοινοποίηση Δεκέμβριος 4, 2012 Εκανα λαθος διατυπωση , δεν ζηταω αυτο ... Απο τη στιγμη που το Board size εχει οριστει 200 με αυτον τον τροπο#define BOARD_SIZE 200τον καθιστα μονοδιαστατο !!τωρα αφου στον μονοδιαστατο πινακα χρησιμοποιω π,χ το n για οποινδηποτε αριθμο ...μπορω να κανα ενα convert το n σε i Και j για να διευκολυνθω πιο πολυ με τον κωδικα χρησιμοποιωντα γραμμες και στηλες και οχι αριθμους ..Η χρησιμοποιηση λοιπον σε μονοδιαστατο πινακα των i και j τον καθιστα δισδιαστατο ??? Τα i και j χρησιμοποιουνται καθαρα για διευκολυνση...Επειδη απαγορευεται να εισαγω βοηθητικο πινακα σε αυτον τον μονοδιαστατο , δεν εχω εισαγει καποι board[j] οποτε παραμενει ακομη μονοδιαστατος!! Δεν ξερω αμα εγινα σαφης ...:whistling:whistling Link to comment Share on other sites More sharing options...
ganastasiou Δεκέμβριος 4, 2012 #4 Κοινοποίηση Δεκέμβριος 4, 2012 Αν κατάλαβα καλά, έστω ότι το 200 είναι σε μονοδιάστατο αλλά θές πχ αν 50 τιμές να ορίζεις ένα flag, έτσι ομαδοποιώντας 50άδες(συνολικά 4 για την περίπτωση σου) είναι σαν να έχεις έναν δισδιάστατο πίνακα με κάποια flags που διακρίνουν ποιές είναι οι σειρές.Αλλά δώσε ένα παράδειγμα καλύτερα τι θές να κάνεις, για να γίνεις πιό κατανοητος. Σου είπα ότι συναντικά δεν μπορείς να κάνεις χρήση [][] ενώ έχεις μονοδιάστατο πίνακα, εντός όμως των [] μπορείς να βάλεις όποιες μεταβλητές θέλεις αρκεί το αποτέλεσμα της πράξης τους να είναι μικρότερο του μεγέθους που έχεις ορίσει. Link to comment Share on other sites More sharing options...
theoamd Δεκέμβριος 4, 2012 #5 Κοινοποίηση Δεκέμβριος 4, 2012 Πες μας πως ακριβώς θέλεις να την χρησιμοποιήσεις, γιατί έτσι δεν είναι και πολύ κατατοπιστική η ερώτηση. Link to comment Share on other sites More sharing options...
Makis23 Δεκέμβριος 4, 2012 Author #6 Κοινοποίηση Δεκέμβριος 4, 2012 Λοιπον ξεκιναω αναλυτικα !!! Εχω εναν δοσμενο πινακα (ο οποιος περιεχει διαφορους χαρακτηρες) board ως εξης#define BOARD_SIZE 200Αυστηρα πρεπει ο πινακας να ειναι μονοδιαστατος δηλαδη να μην εισαγω βοηθητικους πινακες...Ξερουμε οτι για να ορισουμε εναν δισδιαστατο πινακα χρειαζεται να ορισω board[j]Εγω δουλευοντας στον μονοδιαστατο πινακα πανω εχω κανει τις εξης μετατροπες για καθαρα λογους διευκολυνσης για την επιλυση της ασκησης . Επειση το n(οποιοσδηποτε αριθμος πινακα) δεν με βοηθουσε στα προβληματα που παρουσιαζονται ΜΕΤΕΤΡΕΨΑ με το n σε i Και j για να με βοηθησει στις ιδιοτητες της ασκησης .Αλλα η ασκηση τονιζει αυστηρα μη χρηση βοηθητικων πινακων και αυστηρα να ειναι μονοδιαστατος !!!Εγω με την μετατροπη του n σε i και j μπορει να θεωρηθει μετατροπη απο μονοδιαστατο σε δισδιαστατο ή απλα μια πατεντα ??Δεν εχω δηλωσει πουθενα board[j] το οποιο ειναι απαραιτητη προυποθεση για εισαγωγη δισδιαστατου πινακα αρα δεν εχω εισαγει καποιον βοηθητικο πινακα ..απλα μια μετατροπη του n σε i και j τα οποια δεν σχετιζονται με τον δισδιαστο πινακα ..Δεν ξερω και παλι αν με καταλαβατε ... Link to comment Share on other sites More sharing options...
painkiller44 Δεκέμβριος 4, 2012 #7 Κοινοποίηση Δεκέμβριος 4, 2012 δεν νομιζω οτι κατι τετοιο ειναι εφικτο .μπορεις να πεις την εκφωνηση της εργασιας Link to comment Share on other sites More sharing options...
theoamd Δεκέμβριος 4, 2012 #8 Κοινοποίηση Δεκέμβριος 4, 2012 Δεν μας λες όμωςΤΙ ΖΗΤΑΕΙ Η ΑΣΚΗΣΗ Link to comment Share on other sites More sharing options...
Makis23 Δεκέμβριος 4, 2012 Author #9 Κοινοποίηση Δεκέμβριος 4, 2012 Η ασκηση θελει απο τη θεση 1 του board να φτασεις στην θεση 200 αλλα με καποιες ιδιοτητες που αλλαζουν τη μετακινηση στο board ...Εγω το μονο που θελω να μαθω ειναι το αν με την εισαγωγη των i και j μετατρεπω τον πινακα απο μονοδιαστατο σε δισδιαστατο .. Link to comment Share on other sites More sharing options...
painkiller44 Δεκέμβριος 4, 2012 #10 Κοινοποίηση Δεκέμβριος 4, 2012 νομιζω πως κακως δεν μας λες την εκφωνηση δεν βοηθας ουτε εμας αλλα ουτε τον εαυτο σου ! καλο θα ηταν να μας πεις πληρως την εκφωνηση ουτως ωστε να σου πουμε καποιο σκεπτικο που σου διαφευγει Link to comment Share on other sites More sharing options...
ganastasiou Δεκέμβριος 4, 2012 #11 Κοινοποίηση Δεκέμβριος 4, 2012 Μα άπαξ και έχεις μόνο ένα σετ [] τοτε είναι μονοδιάστατος, διάβασε καλύτερα την θεωρία για τους μονοδιάστατους γιατί προφανώς έχεις κάποια κενά. Τα i και j δεν δηλώνουν κατ'ανάγκη δισδιάστατο, τα ζευγάρια [][] δηλώνουν δισδιάστατο και [][][] αντίστοιχα τρισδιάστατο και πάει λέγοντας.Το να μετακινηθείς αντί για σειριακά(με μία μεταβλητή δηλαδή) εντός του πίνακα αλλά με τυχαίο τρόπο σίγουρα θα εξαρτάτε απο περισσότερες της μία μεταβλητής, και μπορείς να τις πείς όπως θές,i-j, x-y κτλπ Link to comment Share on other sites More sharing options...
Makis23 Δεκέμβριος 4, 2012 Author #12 Κοινοποίηση Δεκέμβριος 4, 2012 Απο τη στιγμη που δεν εχω κανει καποιο define board[j] αλλα το μοναδικο define του πινακα ειναι το define BOARD_SIZE 200 μιλαμε για μονοδιαστατο πινακα απο n=1 εως n=200 π.χ θελω το προγραμμα στην τελευταια γραμμη να τερματιζει ακριβως στο 200 και αν υπερβαινει το 200 να γυρναει καποιες τιμες πισω , η κινηση γινεται με 1 + rand ()% 6 .αρα θελω να δωσω εντολη να πηγαινει πισω ... αυτο με το n δεν εβγαινει σωστα ενω οτανδηλωσα for i==18 ..... βγηκε μια χαρα ...Aπλα η εισαγωγη σε αυτον τον μονοδιαστατο πινακα των i ως γραμμες και τον j ως στηλες γινεται με το n !!! n_to_I , n_to_J , IJ_to_n αυτα με define ....Ουσιαστικα δεν κανω εισαγωγη καποιου δισδιαστατου πινακα .... κανω λαθος ?? δυστυχως δεν εχω την εκφωνηση να την ανεβασω Link to comment Share on other sites More sharing options...
painkiller44 Δεκέμβριος 4, 2012 #13 Κοινοποίηση Δεκέμβριος 4, 2012 νομιζω πως πρεπει να διαβασεις την εκφωνηση γιατι η κατι δεν καταλαβαινεις εσυ καλα η κατι δεν μας εξηγεις καλα .οπως ειπε ο ganastasiou σχετικα με τους πινακες Link to comment Share on other sites More sharing options...
nucleus Δεκέμβριος 4, 2012 #14 Κοινοποίηση Δεκέμβριος 4, 2012 ΠίνακεςΔεν ξεκινάς από το 1 αλλά από το 0.Board size 200 τα στοιχεία του πίνακα είναι απο 0 μέχρι 199.Όχι από 1 μέχρι 200.#include <stdio.h>#define BOARD_SIZE 200int main(void){ int monodiastatos[BOARD_SIZE]; printf("Anadromh me i=0\n"); for(int i = 0 ; i < BOARD_SIZE;i++) printf("Stoixeio toy pinaka sthn thesh %d:%s\n",i,monodiastatos[i]); return 0;}Το παραπάνω for κάνει αναδρομή σε όλα τα στοιχεία του μονοδιάστατου πίνακα.i το index των θέσεων.monodiastatos το στοιχείο του πίνακα σε μια συγκεκριμένη θέση που δείχνει ο i.Με το i και μόνο με αυτό μπορείς να πας σε οποιοδήποτε θέση του πίνακα. Δεν υπάρχει λόγος να χρησιμοποιήσεις 2 μεταβλητές σε μονοδιάστατο πίνακα που έχει πάντα μια γραμμή και μόνο στήλες παραπάνω από 1 Link to comment Share on other sites More sharing options...
Makis23 Δεκέμβριος 4, 2012 Author #15 Κοινοποίηση Δεκέμβριος 4, 2012 Eννουσα το board της ασκησης το οποιο ειναι απο 1 - 200 , αυτο που καταλαβαινει η c ειναι 0 -199 αυτο ειναι αλλο πραμα...Με loops βγαινει τεραστιος ο κωδικας και δεν εχει νοημα να επαναλαμβανω τοσες φορες το ιδιο πραμα ....Κανω αυτο το Πραμα¨Αντι καθε φορα που ηθελα να κουνισω το πιονι αλλαζω το nμεταφραζω το n σε i και jαλλαζω οτι θελω και μετα ξανακανω τα i και j σε nδηλαδη παλι με n δουλευω αλλα σε συγκεκριμενα σημεια της ασκησης χρειαζομουν τα i και j ...Tα i και τα j δεν εχουν καμια σχεση με τον πινακα , εχουν να κανουν με το πως ερμηνευω εγω τον πινακα .... Link to comment Share on other sites More sharing options...
nucleus Δεκέμβριος 4, 2012 #16 Κοινοποίηση Δεκέμβριος 4, 2012 Όταν το τελειώσεις με τα i και j πόσταρε μια τον κώδικα ακούγεται ενδιαφέρον Link to comment Share on other sites More sharing options...
oxide Δεκέμβριος 4, 2012 #17 Κοινοποίηση Δεκέμβριος 4, 2012 Η ασκηση θελει απο τη θεση 1 του board να φτασεις στην θεση 200 αλλα με καποιες ιδιοτητες που αλλαζουν τη μετακινηση στο board ...Εγω το μονο που θελω να μαθω ειναι το αν με την εισαγωγη των i και j μετατρεπω τον πινακα απο μονοδιαστατο σε δισδιαστατο ..Μπορείς να το κάνεις αυτό. πχ φτιάχνεις μια συνάρτηση που παίρνει τα i και j και επιστρέφει την θέση στα 200 και μία που κάνει το αντίθετο.Το πως θα γίνει θα το βρεις εσύ αλλά είναι σχετικά απλό.Θα το έκανα μόνο αν είχα καλό λόγο (πχ το απαιτεί η άσκηση).Δεν ξέρω αν σε κάλυψα. Link to comment Share on other sites More sharing options...
Makis23 Δεκέμβριος 4, 2012 Author #18 Κοινοποίηση Δεκέμβριος 4, 2012 Την εχω κανει την ασκηση λειτουργει !! δεν ξερω αμα εχω το δικαιωμα να την κανω ετσι οπως την κανω !!! Link to comment Share on other sites More sharing options...
nucleus Δεκέμβριος 4, 2012 #19 Κοινοποίηση Δεκέμβριος 4, 2012 Αν κάτι δουλεύει (και βγάζει λογικά αποτελέσματα) δεν το πειράζεις. Βασικός νόμος του προγραμματισμού . Link to comment Share on other sites More sharing options...
Inglor Δεκέμβριος 5, 2012 #20 Κοινοποίηση Δεκέμβριος 5, 2012 Κάνε ένα ποστ την εκφώνηση βρε αδερφέ! Άμα έχεις κάνει την άσκηση, πώς έχεις την εκφώνηση?:tw: Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.