Jump to content



Ερωτηση προγραμματισμου !!


Makis23

Recommended Posts

Καλησπερα παιδια εχω μια ερωτηση στην 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

Το ποιά μεταβλητή θα βρίσκεται εντός του [] μπορείς να την ονομάσεις και μπάμπη, δεν έχει σημασία, δηλαδή αν i=5 και j=10 τότε board[i*j]=board[50], άρα θέση 50.

Το ερώτημα σου επειδή δεν είναι πολύ σαφές, μέσα στις [] μπορείς να έχεις ότι πράξη θές μεταξύ των μεταβλητών, με προυπόθεση το αποτέλεσμα των πράξεων να είναι <= απο το μέγεθος που έχεις ορίσει αρχικά.

Για πίνακα μονοδιάστατο μπορείς να κάνεις αυτό board[i+j] αλλά όχι αυτό board[j]

Link to comment
Share on other sites

Εκανα λαθος διατυπωση , δεν ζηταω αυτο ...

Απο τη στιγμη που το 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

Αν κατάλαβα καλά, έστω ότι το 200 είναι σε μονοδιάστατο αλλά θές πχ αν 50 τιμές να ορίζεις ένα flag, έτσι ομαδοποιώντας 50άδες(συνολικά 4 για την περίπτωση σου) είναι σαν να έχεις έναν δισδιάστατο πίνακα με κάποια flags που διακρίνουν ποιές είναι οι σειρές.

Αλλά δώσε ένα παράδειγμα καλύτερα τι θές να κάνεις, για να γίνεις πιό κατανοητος. Σου είπα ότι συναντικά δεν μπορείς να κάνεις χρήση [][] ενώ έχεις μονοδιάστατο πίνακα, εντός όμως των [] μπορείς να βάλεις όποιες μεταβλητές θέλεις αρκεί το αποτέλεσμα της πράξης τους να είναι μικρότερο του μεγέθους που έχεις ορίσει.

Link to comment
Share on other sites

Λοιπον ξεκιναω αναλυτικα !!!

Εχω εναν δοσμενο πινακα (ο οποιος περιεχει διαφορους χαρακτηρες) 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

Η ασκηση θελει απο τη θεση 1 του board να φτασεις στην θεση 200 αλλα με καποιες ιδιοτητες που αλλαζουν τη μετακινηση στο board ...

Εγω το μονο που θελω να μαθω ειναι το αν με την εισαγωγη των i και j μετατρεπω τον πινακα απο μονοδιαστατο σε δισδιαστατο ..

Link to comment
Share on other sites

νομιζω πως κακως δεν μας λες την εκφωνηση δεν βοηθας ουτε εμας αλλα ουτε τον εαυτο σου ! καλο θα ηταν να μας πεις πληρως την εκφωνηση ουτως ωστε να σου πουμε καποιο σκεπτικο που σου διαφευγει

Link to comment
Share on other sites

Μα άπαξ και έχεις μόνο ένα σετ [] τοτε είναι μονοδιάστατος, διάβασε καλύτερα την θεωρία για τους μονοδιάστατους γιατί προφανώς έχεις κάποια κενά. Τα i και j δεν δηλώνουν κατ'ανάγκη δισδιάστατο, τα ζευγάρια [][] δηλώνουν δισδιάστατο και [][][] αντίστοιχα τρισδιάστατο και πάει λέγοντας.

Το να μετακινηθείς αντί για σειριακά(με μία μεταβλητή δηλαδή) εντός του πίνακα αλλά με τυχαίο τρόπο σίγουρα θα εξαρτάτε απο περισσότερες της μία μεταβλητής, και μπορείς να τις πείς όπως θές,i-j, x-y κτλπ

Link to comment
Share on other sites

Απο τη στιγμη που δεν εχω κανει καποιο 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

Πίνακες

Δεν ξεκινάς από το 1 αλλά από το 0.Board size 200 τα στοιχεία του πίνακα είναι απο 0 μέχρι 199.Όχι από 1 μέχρι 200.


#include <stdio.h>
#define BOARD_SIZE 200
int 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

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

Η ασκηση θελει απο τη θεση 1 του board να φτασεις στην θεση 200 αλλα με καποιες ιδιοτητες που αλλαζουν τη μετακινηση στο board ...

Εγω το μονο που θελω να μαθω ειναι το αν με την εισαγωγη των i και j μετατρεπω τον πινακα απο μονοδιαστατο σε δισδιαστατο ..

Μπορείς να το κάνεις αυτό. πχ φτιάχνεις μια συνάρτηση που παίρνει τα i και j και επιστρέφει την θέση στα 200 και μία που κάνει το αντίθετο.

Το πως θα γίνει θα το βρεις εσύ αλλά είναι σχετικά απλό.

Θα το έκανα μόνο αν είχα καλό λόγο (πχ το απαιτεί η άσκηση).

Δεν ξέρω αν σε κάλυψα.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Δημιουργία...

Important Information

Ο ιστότοπος theLab.gr χρησιμοποιεί cookies για να διασφαλίσει την καλύτερη εμπειρία σας κατά την περιήγηση. Μπορείτε να προσαρμόσετε τις ρυθμίσεις των cookies σας , διαφορετικά θα υποθέσουμε ότι είστε εντάξει για να συνεχίσετε.