lektikos Δημοσ. 6 Δεκεμβρίου 2013 Δημοσ. 6 Δεκεμβρίου 2013 Καλησπέρα, μήπως μπορεί κάποιος να με βοηθήσει στο εξής? Έχω δηλώσει σε μια δομή ενα πίνακα int. O πίνακας αυτός(table.code), περιέχει ακέραιους κωδικούς. Θέλω να φτιάξω μια συνάρτηση(change_data()), μεσω της οποίας να μπορώ να αλλάξω τα στοιχεία του παραπάνω πίνακα. Για παράδειγμα, αν έχω δώσει προηγουμένως τους κωδικούς: 101, 233, 540, μέσω της συνάρτησης, να με ρωτα ποιο στοιχείο(κωδικό) του πίνακα θέλεις να αλλάξεις, οπότε να δίνω το καινούργιο και να μου εμφανίζει την αλλαγή.
migf1 Δημοσ. 6 Δεκεμβρίου 2013 Δημοσ. 6 Δεκεμβρίου 2013 Καλημέρα, Έχεις ορίσει σε μια δομή έναν πίνακα int (δες παρακάτω το υστερόγραφο) ή έχεις ορίσει έναν πίνακα από δομές; Από το ποστ σου καταλαβαίνω πως μάλλον έχεις κάνει το 2ο, δηλαδή... #define MAX_ELEMS 100 ... typedef struct Domh { int code; /* τα υπόλοιπα πεδία της δομής */ } Domh; ... int main( void ) { Domh table[ MAX_ELEMS ]; // πίνακας από δομές // αρχικοποίησε εδώ τον πίνακά σου με default τιμές στα πεδία του κάθε στοιχείου του for (int i=0; i < MAX_ELEMS; i++) { table[i].code = /* βάλε εδώ την default τιμή του πεδίου .code */; /* βάλε εδώ default τιμές και στα υπόλοιπα πεδία της δομής table[i] */ } ... return 0; } Αν είναι έτσι, τότε η συνάρτηση που ρωτάς θα πηγαίνει κάπως έτσι... void change_data( Domh tab[] ) { int i = 0; // το στοιχείο του πίνακα που θέλεις να αλλάξεις int code = 0; // η νέα τιμή που θέλεις να δώσεις στο tab[i].code /* διάβασε εδώ από το χρήστη τιμές για τα i και code */ /* και κάνε τες validate πριν τις χρησιμοποιήσεις */ tab[i].code = code; } ΥΓ. Αν είχες ορίσει σε μια δομή έναν πίνακα από int, που γράφεις στο ποστ σου, τότε θα ήταν κάπως έτσι... #define MAX_ELEMS 100 ... typedef struct Domh { int table[MAX_ELEMS]; /* τα υπόλοιπα πεδία της δομής */ } Domh; ... int main( void ) { Domh domh; // η domh είναι μια μεταβλητή τύπου Domh /* αρχικοποίηση των πεδίων της δομής με default τιμές */ for (int i=0; i < MAX_ELEMS; i++) { domh.table[i] = /* default τιμή για το κάθε στοιχείο του πίνακα */; } /* βάζουμε εδώ default τιμές και στα υπόλοιπα πεδία της δομής */ ... return 0; } Σε αυτήν την περίπτωση δεν υπάρχει κάποιο πεδίο code.
lektikos Δημοσ. 6 Δεκεμβρίου 2013 Μέλος Δημοσ. 6 Δεκεμβρίου 2013 Η δήλωση έχει ως εξής: //ορισμος δομης struct mtch{ int code; double a1,a2,a3; double pont; }; //δηλωση πινακα struct mtch *table;
migf1 Δημοσ. 6 Δεκεμβρίου 2013 Δημοσ. 6 Δεκεμβρίου 2013 Οπότε είναι το 1ο που σου έγραψα, με μόνη διαφορά πως ο table ορίζεται ως δυναμικός πίνακας (αντί για στατικό που τον όρισα εγώ στο παράδειγμά μου).
lektikos Δημοσ. 6 Δεκεμβρίου 2013 Μέλος Δημοσ. 6 Δεκεμβρίου 2013 Οπότε είναι το 1ο που σου έγραψα, με μόνη διαφορά πως ο table ορίζεται ως δυναμικός πίνακας (αντί για στατικό που τον όρισα εγώ στο παράδειγμά μου). Ακριβώς.
migf1 Δημοσ. 6 Δεκεμβρίου 2013 Δημοσ. 6 Δεκεμβρίου 2013 Ε, αυτό δεν αλλάζει κάτι στον κώδικα της συνάρτησης που ρώτησες.
lektikos Δημοσ. 6 Δεκεμβρίου 2013 Μέλος Δημοσ. 6 Δεκεμβρίου 2013 void change_data( Domh tab[] ) { int i = 0; // το στοιχείο του πίνακα που θέλεις να αλλάξεις int code = 0; // η νέα τιμή που θέλεις να δώσεις στο tab[i].code /* διάβασε εδώ από το χρήστη τιμές για τα i και code */ /* και κάνε τες validate πριν τις χρησιμοποιήσεις */ tab[i].code = code; } Πως θα γίνει ο έλεγχος του στοιχείου που θέλω να αντικαταστήσω, με το ήδη υπάρχον?
lektikos Δημοσ. 8 Δεκεμβρίου 2013 Μέλος Δημοσ. 8 Δεκεμβρίου 2013 Τιποτα, όλα ΟΚ. Το δοκιμασα και είναι μια χαρά. Ευχαριστώ.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα