Title: [Δομ. Προγρ.] Εργασία Η Post by: ggpyr on June 09, 2009, 09:15:55 am Εργασία H
Για να διαχειριστεί το σύστημα πελατών της μια εταιρία κινητής τηλεφωνίας διατηρεί ένα αρχείο των πελατών στο οποίο είναι καταχωρημένα ο αριθμός τηλεφώνου του πελάτη, το ονοματεπώνυμο του, η διεύθυνση του, ο αριθμός των μονάδων χρέωσης που πραγματοποίησε και η τιμή της μονάδος σύμφωνα με το συμβόλαιο που υπέγραψε ο πελάτης. Όταν ένας πελάτης πραγματοποιεί μια κλήση διαβάζεται ο αριθμός τηλεφώνου του και οι μονάδες χρέωσης που πραγματοποίησε προστίθενται στην αντίστοιχη εγγραφή του αρχείου. Στο τέλος κάθε μήνα εκδίδονται οι λογαριασμοί των πελατών και μηδενίζονται στο αρχείο οι μονάδες που πραγματοποίησαν. Να γραφεί το πρόγραμμα στο οποίο ορίζεται η δομή client στην οποία καταχωρούνται τα στοιχεία του πελάτη. Το πρόγραμμα να χρησιμοποιεί δομές τύποι client και να διαχειρίζεται το σύστημα πελατών της εταιρίας διαθέτοντας τρεις διαφορετικές λειτουργίες οι οποίες να υλοποιούνται με τρεις ξεχωριστές συναρτήσεις. Η πρώτη συνάρτηση με το όνομα clients_man να παρέχει τη δυνατότητα καταχώρησης νέων πελατών στο αρχείο. Η δεύτερη συνάρτηση με το όνομα charge να διαθέτει μια ατέρμονα ανακύκλωση σε κάθε επανάληψη της οποίας να διαβάζεται ο αριθμός τηλεφώνου ενός πελάτη που πραγματοποιεί μια κλήση και οι αντίστοιχες μονάδες και να ενημερώνεται αντίστοιχα το αρχείο των πελατών. Η έξοδος από την ανακύκλωση να γίνεται αν ως αριθμός τηλεφώνου διαβαστεί το 0. Η τρίτη συνάρτηση με το όνομα bill να εκδίδει τους λογαριασμούς των πελατών μηδενίζοντας ταυτόχρονα τις μηνιαίες χρεώσεις τους. Η συνάρτηση main του προγράμματος να δίνει τη δυνατότητα επιλογής και εκτέλεσης της εργασίας που επιθυμεί ο χρήστης κάθε φορά. Βοηθητικές παρατηρήσεις Η πρώτη συνάρτηση clients_man δεν κάνει καμία άλλη διαδικασία εκτός της καταχώρησης ενός νέου πελάτη. Το αρχείο των πελατών να συνδέεται με ένα δυαδικό κανάλι. Σε μερικούς μεταγλωττιστές η εναλλαγή μιας εντολής καταχώρησης με μία εντολή ανάγνωσης και αντίστροφα από ένα αρχείο απαιτεί μια εκ νέου τοποθέτηση του δείκτη θέσης στο αρχείο καλώντας μια αντίστοιχη συνάρτηση (fseek, rewind κλπ) ακόμη και όταν ο δείκτης αυτός βρίσκεται στη σωστή θέση. Η τελευταία εργασία :'( Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: Emfanever on June 09, 2009, 11:00:31 am φέτος προλάβατε αρκετές εργασίες!
Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: Merlin on June 09, 2009, 11:08:28 am Εγώ νόμιζα θα ξεπεράσει το ρεκόρ των 10 εργασιών στη C++ :(
Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: Merlin on June 09, 2009, 11:11:35 am Χαχα και απ΄οτι βλέπω αυτή έχει απ όλα:δομές,αρχεία και συναρτήσεις,και γω που νόμιζα ότι θα διαβάσω πεδίο αυτή τη βδομάδα :P
Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: El Niño on June 09, 2009, 12:03:46 pm νταξει...ΘΑ ΤΟΝ ΣΚΟΤΩΣΩ....τίποτα άλλο!
Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: ΡΕΣΑΛΤΟ on June 09, 2009, 12:57:39 pm μπορεις απλα να μην την κανεις αντι να γκρινιαζεις.
εαν φοβασαι οτι θα σε βαλει να δωσεις με βαση το 6 γραψτου 5 μπουρδες σε ενα κωδικα που δεν τρεχει και ανεβασε το. στην εξεταση θα σου πει "φιλε το χεις λαθος-διαβασε καλυτερα" απλα.... Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: diutinus on June 09, 2009, 16:51:44 pm Έτσι κι αλλιώς δικαιούμαστε να μην κάνουμε μία εργασία χωρίς "ποινή" :)
Πάντως μπελάς-μπελάς οι εργασίες, αλλά πάλι καλά που αναγκαζόμαστε να διαβάσουμε λίγο έτσι, γιατί αλλιώς, με τον απίστευτο χρόνο μισής μέρας που έχουμε μες στην εξεταστική για δομημένο... καληνύχτα σας.... :D Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: ggpyr on June 09, 2009, 17:03:42 pm - Όταν γράφουμε string σε αρχείο (ή και γενικότερα για τα strings) πώς κάνουμε να δέχεται το κενό σαν χαρακτήρα??
-Γιατί η fwrite σε εμένα δεν δέχεται double,long (μπορεί και άλα,.. αυτά δοκίμασα) αλλά μόνο int,char?? :???: :???: Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: Emfanever on June 09, 2009, 17:14:45 pm - Όταν γράφουμε string σε αρχείο (ή και γενικότερα για τα strings) πώς κάνουμε να δέχεται το κενό σαν χαρακτήρα?? -Γιατί η fwrite σε εμένα δεν δέχεται double,long (μπορεί και άλα,.. αυτά δοκίμασα) αλλά μόνο int,char?? :???: :???: για string δοκίμασε fputs και fgets Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: gate4 on June 09, 2009, 18:10:08 pm νταξει...ΘΑ ΤΟΝ ΣΚΟΤΩΣΩ....τίποτα άλλο! +1 καλυτερα 12μηνη θητεια στον εβρο και σκοπια με τον ελ νινο παρα αλλη εργασια Ckata ^banghead^ ^banghead^ ^banghead^ ^banghead^ Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: patoho on June 09, 2009, 19:19:10 pm νταξει...ΘΑ ΤΟΝ ΣΚΟΤΩΣΩ....τίποτα άλλο! +1 καλυτερα 12μηνη θητεια στον εβρο και σκοπια με τον ελ νινο παρα αλλη εργασια Ckata ^banghead^ ^banghead^ ^banghead^ ^banghead^ καλα εχω πεθανει... χαλαρωσε ρε μαγκια μ.. τι σ κανε?? ;D ;D ;D ;D ;D ;D ;D ;D Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: Αιμιλία η φτερωτή χελώνα on June 09, 2009, 19:27:47 pm γιατί αλλιώς, με τον απίστευτο χρόνο μισής μέρας που έχουμε μες στην εξεταστική για δομημένο... καληνύχτα σας.... :D και εγω για μιση μερα το ειχα περασει αλλα μεσολαβει σαββατοκυριακο που δε φαινεται στο προγραμμα :)Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: patoho on June 09, 2009, 19:29:45 pm γιατί αλλιώς, με τον απίστευτο χρόνο μισής μέρας που έχουμε μες στην εξεταστική για δομημένο... καληνύχτα σας.... :D και εγω για μιση μερα το ειχα περασει αλλα μεσολαβει σαββατοκυριακο που δε φαινεται στο προγραμμα :)κοιτα καλυτερα το προγραμμα... εχει δικιο ο diuntinus... Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: Αιμιλία η φτερωτή χελώνα on June 09, 2009, 19:32:57 pm φτου λαθος :-[
μπερδευτηκα, με τα κυκλωματα το ειχα παθει αυτο, εκει μεσολαβει σ/κ ;D Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: nasia!! on June 09, 2009, 19:45:49 pm Γουειιιιιι,δεν την παλευουμεεεεε! 8)Σήμερα ήταν το τελευταίο μάθημα το Δον Κορλεόνε παρεπιπτόντως!
Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: El Niño on June 09, 2009, 23:43:52 pm μπορεις απλα να μην την κανεις αντι να γκρινιαζεις. αυτο κανω συνεχεια!!!χαχαχα!εαν φοβασαι οτι θα σε βαλει να δωσεις με βαση το 6 γραψτου 5 μπουρδες σε ενα κωδικα που δεν τρεχει και ανεβασε το. στην εξεταση θα σου πει "φιλε το χεις λαθος-διαβασε καλυτερα" απλα.... Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: timon on June 10, 2009, 12:26:15 pm Η διευθυνση (π.χ. Τσιμισκη 4) που εχει και αριθμο και χαρακτηρα ειναι τυπου char ή void? Ή κατι αλλο??
Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: Wanderer on June 10, 2009, 12:59:17 pm Είναι τύπου string.
String addres; ... address="Tsimiski 4"; Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: timon on June 10, 2009, 13:06:48 pm Thanx! Και στο ονοματεπωνυμο το κενο που θελω να αφησω αναμεσα στο ονομα και το επιθετο θα το κανω και αυτο σε string ή γινεται με char? To string θελει καποιο αρχειο για να αναγνωριστει π.χ. stdio.h κτλ?
Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: ggpyr on June 10, 2009, 13:18:16 pm Γίνεται κάτι τέτοιο??
fseek(arxeio,-30,SEEK_CUR); ή fseek(arxeio,-sizeof(int),SEEK_CUR); (εννοω να βαλω αρνητική τιμή για να με πάει πίσω) Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: Wanderer on June 10, 2009, 14:36:18 pm Thanx! Και στο ονοματεπωνυμο το κενο που θελω να αφησω αναμεσα στο ονομα και το επιθετο θα το κανω και αυτο σε string ή γινεται με char? To string θελει καποιο αρχειο για να αναγνωριστει π.χ. stdio.h κτλ? Φίλε συγγνώμη... μπερδεύθηκα, String τύπος μόνο στην C++ επιτρέπεται.. :(Μπορείς όμως, αν θες να ελέγχεις το μήκος του ονόματος/διεύθυνσης κ.λ.π. να κάνεις πίνακες τύπου char και να αποθηκεύεις εκεί τα ονόματα. Δες αυτόν τον κώδικα μήπως σου φανεί χρήσιμος: '\b' είναι το πλήκτρο backspace και '\r' το πλήκτρο ENTER. Ελπίζω μην έχω κάνει κάποιο λάθος (μπορείς να βάλεις και κενό χαρακτήρα ;) ) edit: κατα λάθος το έβαλα μέσα σε QUOTES αντί σε CODE και δεν φαινόταν σωστά ο πίνακας.. Code: #include <stdio.h> Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: Emfanever on June 10, 2009, 18:31:37 pm Γίνεται κάτι τέτοιο?? fseek(arxeio,-30,SEEK_CUR); ή fseek(arxeio,-sizeof(int),SEEK_CUR); (εννοω να βαλω αρνητική τιμή για να με πάει πίσω) γινεται! αλλιώς τι νόημα θα είχε το SEEK_END ? :P Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: Emfanever on June 10, 2009, 18:48:59 pm Thanx! Και στο ονοματεπωνυμο το κενο που θελω να αφησω αναμεσα στο ονομα και το επιθετο θα το κανω και αυτο σε string ή γινεται με char? To string θελει καποιο αρχειο για να αναγνωριστει π.χ. stdio.h κτλ? μπορείς να χρησιμοποιήσεις τη συνάρτηση gets() και κάνει όλη τη δουλειά για εκτύπωση κάνεις το κλασικό %s με printf ή χρησιμοποιείς τη συνάρτηση puts() Code: #include <stdio.h> Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: mostel on June 11, 2009, 03:23:39 am Thanx! Και στο ονοματεπωνυμο το κενο που θελω να αφησω αναμεσα στο ονομα και το επιθετο θα το κανω και αυτο σε string ή γινεται με char? To string θελει καποιο αρχειο για να αναγνωριστει π.χ. stdio.h κτλ? μπορείς να χρησιμοποιήσεις τη συνάρτηση gets() και κάνει όλη τη δουλειά Καλύτερα fgets. "gets is considered a dangerous function" από το man page της gets (dev) - Στέλιος Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: Emfanever on June 11, 2009, 03:25:10 am Thanx! Και στο ονοματεπωνυμο το κενο που θελω να αφησω αναμεσα στο ονομα και το επιθετο θα το κανω και αυτο σε string ή γινεται με char? To string θελει καποιο αρχειο για να αναγνωριστει π.χ. stdio.h κτλ? μπορείς να χρησιμοποιήσεις τη συνάρτηση gets() και κάνει όλη τη δουλειά Καλύτερα fgets. "gets is considered a dangerous function" από το man page της gets (dev) - Στέλιος η fgets είναι για αρχεία, δε βολεύει πάντα Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: mostel on June 11, 2009, 03:36:30 am η fgets είναι για αρχεία, δε βολεύει πάντα Όπως... ; Γενικώς η fgets προστατεύει από memory overflow και είναι καλύτερη από την gets() για σοβαρά πράγματα. Επίσης, αν fgets πάει αναγκαστικά με fputs , αλλιώς έχεις διπλάσιο χαρακτήρα νέας γραμμής στην έξοδο. Στην τελική, κάθεσαι και γράφεις μόνος σου την puts πχ: #include<stdio.h> void put_sa(char *string) { while( *string ) putchar(*string++); putchar('\n'); } Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: Emfanever on June 11, 2009, 03:47:54 am χμμ,πράγματι, δε χρησιμοποιείται μόνο για αρχεία.
εντάξει..σιγά το overflow τώρα.. βάλε size >100 και είσαι ΟΚ , ποιος θα εισάγει τέτοιο string εκτός αν φοβάσαι κάτι τέτοιο... This is a _dangerous_ function, as it has no way of checking the amount of space available in BUF. One of the attacks used by the Inter- net Worm of 1988 used this to overrun a buffer allocated on the stack of the finger daemon and overwrite the return address, causing the dae- mon to execute code downloaded into it over the connection. :P Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: mostel on June 11, 2009, 03:54:35 am χμμ,πράγματι, δε χρησιμοποιείται μόνο για αρχεία. εντάξει..σιγά το overflow τώρα.. βάλε size >100 και είσαι ΟΚ , ποιος θα εισάγει τέτοιο string εκτός αν φοβάσαι κάτι τέτοιο... This is a _dangerous_ function, as it has no way of checking the amount of space available in BUF. One of the attacks used by the Inter- net Worm of 1988 used this to overrun a buffer allocated on the stack of the finger daemon and overwrite the return address, causing the dae- mon to execute code downloaded into it over the connection. :P Όχι οκ. Απλώς ο gcc σπάει αρχίδια ( :D ) , γιατί κάθε φορά που χρησιμοποιείς την gets() σου πετάει warning message για dangerous function... - Στέλιος Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: Wanderer on June 11, 2009, 16:10:59 pm Μια απλούστευση του κώδικα που πόσταρα παραπάνω (και πρόβλεψη να εισάγεται ο χαρακτήρας '\0' στο τέλος του ονόματος, ώστε να μή χρειάζεται να κρατάμε με μεταβλητή το μέγεθος της λέξης)
Code: #include <stdio.h> Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: mostel on June 11, 2009, 17:02:19 pm Μια απλούστευση του κώδικα που πόσταρα παραπάνω (και πρόβλεψη να εισάγεται ο χαρακτήρας '\0' στο τέλος του ονόματος, ώστε να μή χρειάζεται να κρατάμε με μεταβλητή το μέγεθος της λέξης) Code: #include <stdio.h> Σόρυ, αλλά τι ακριβώς κάνει αυτός όλος ο κώδικας ; Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: Wanderer on June 11, 2009, 19:51:53 pm Σε αυτήν την εργασία δεν ξέρω αν χρησιμεύει, αλλά τον είχα ποστάρει με αφορμή μια ερώτηση του Hurin για τα αλφαριθμητικά δεδομένα. Απαγορεύει στον χρήστη να περάσει σε ένα πίνακα τύπου char π.χ.ένα όνομα μεγαλύτερο από τον επιθυμητό αριθμό χαρακτήρων.
Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: mostel on June 11, 2009, 21:21:46 pm Σε αυτήν την εργασία δεν ξέρω αν χρησιμεύει, αλλά τον είχα ποστάρει με αφορμή μια ερώτηση του Hurin για τα αλφαριθμητικά δεδομένα. Απαγορεύει στον χρήστη να περάσει σε ένα πίνακα τύπου char π.χ.ένα όνομα μεγαλύτερο από τον επιθυμητό αριθμό χαρακτήρων. Αφού δηλώνεις το μέγεθος του πίνακα char, πώς θα περάσει μεγαλύτερο αριθμό επιθυμητών χαρακτήρων ; - Στέλιος Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: Emfanever on June 11, 2009, 21:34:35 pm Σε αυτήν την εργασία δεν ξέρω αν χρησιμεύει, αλλά τον είχα ποστάρει με αφορμή μια ερώτηση του Hurin για τα αλφαριθμητικά δεδομένα. Απαγορεύει στον χρήστη να περάσει σε ένα πίνακα τύπου char π.χ.ένα όνομα μεγαλύτερο από τον επιθυμητό αριθμό χαρακτήρων. Αφού δηλώνεις το μέγεθος του πίνακα char, πώς θα περάσει μεγαλύτερο αριθμό επιθυμητών χαρακτήρων ; - Στέλιος καλά εσύ δε μου έλεγες για το overflow της gets ? :P αυτό συμβαίνει γιατί μπορεί να εισάγεται μεγαλύτερος αριθμός χαρακτήρων απότι είναι το size του πίνακα Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: mostel on June 11, 2009, 21:44:45 pm καλά εσύ δε μου έλεγες για το overflow της gets ? :P αυτό συμβαίνει γιατί μπορεί να εισάγεται μεγαλύτερος αριθμός χαρακτήρων απότι είναι το size του πίνακα Eh, με την προυπόθεση ότι χρησιμοποιείς τη σωστή συνάρτηση, δεν το ξεπερνά :) Νομίζω όμως κάτι τέτοιο, δουλεύει καλύτερα και δε μπλέκει και τόσο ο κώδικας: void resize(char *string, int size) { if( strlen(string) > size) *(string+size) = '\0'; } - Στέλιος Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: Emfanever on June 11, 2009, 21:52:25 pm ναι αυτό χρησιμεύει στην περίπτωση που θέλεις να κόψεις τους "overflowed" χαρακτήρες , στην εκτύπωση πχ ή στο γράψιμο σε αρχείο.
Όμως το overflow θα έχει ήδη γίνει, οπότε δεν το αποτρέπει, το διορθώνει κάπως (αν δε σου έχει πετάξει error το πρόγραμμα) Η fgets πράγματι είναι καλή λύση Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: mostel on June 11, 2009, 21:56:15 pm Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: Merlin on June 11, 2009, 23:26:47 pm Παιδιά ,έχει λογική μια τέτοια εντολή?:
Code: if(scanf("%d",&c.tel)); Αυτό που θέλω να κάνω είναι να καταχωρεί αυτό που διαβάζει μόνο αν είναι διάφορο του μηδενός. Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: Γιώργος on June 11, 2009, 23:28:20 pm Παιδιά ,έχει λογική μια τέτοια εντολή?: Code: if(scanf("%d",&c.tel)); Αυτό που θέλω να κάνω είναι να καταχωρεί αυτό που διαβάζει μόνο αν είναι διάφορο του μηδενός. Όχι, γιατί η scanf αν δεν απατώμαι επιστρέφει το πόσα ορίσματα διάβασε. Δηλαδή πάντα θα περνάει η if αν διαβάζεις μία μεταβλητή. Σπάσε το σε δύο εντολές. :) Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: nasia!! on June 11, 2009, 23:33:53 pm Μια απορία(δεν ξέρω άν είναι σχετική με την εργασία αυτή,αλλά είπα να την ποστάρω εδώ),δεν έχω ασχοληθεί με το θέμα,αλλά πώς μπορώ να εκτυπώσω τα στοιχεία ενός δυαδικού αρχείου?(Απορία που μου δημιουργήθηκε από το τελευταίο εργαστήριο και μετά :D)Μπορεί να είναι χαζό αυτό που ρωτάω,αλλά ήθελα να μάθω! ;)
Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: Merlin on June 11, 2009, 23:41:37 pm Σε αυτή την άσκηση έχουμε 3 συναρτήσεις που διαχειρίζονται μια δομή και αν κατάλαβα καλά εμείς θέλουμε να γράψουμε αυτή τη δομή σε ένα αρχείο.Ο δείκτης αρχείου επομένως πρέπει να είναι global για να τον βλέπουν όλες οι συναρτήσεις?
Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: Emfanever on June 12, 2009, 00:20:16 am γτ δε περνάς τον δείκτη σαν όρισμα ?
Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: mostel on June 12, 2009, 00:21:28 am Σε αυτή την άσκηση έχουμε 3 συναρτήσεις που διαχειρίζονται μια δομή και αν κατάλαβα καλά εμείς θέλουμε να γράψουμε αυτή τη δομή σε ένα αρχείο.Ο δείκτης αρχείου επομένως πρέπει να είναι global για να τον βλέπουν όλες οι συναρτήσεις? Όχι απαραίτητα. Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: mostel on June 12, 2009, 00:22:22 am Μια απορία(δεν ξέρω άν είναι σχετική με την εργασία αυτή,αλλά είπα να την ποστάρω εδώ),δεν έχω ασχοληθεί με το θέμα,αλλά πώς μπορώ να εκτυπώσω τα στοιχεία ενός δυαδικού αρχείου?(Απορία που μου δημιουργήθηκε από το τελευταίο εργαστήριο και μετά :D)Μπορεί να είναι χαζό αυτό που ρωτάω,αλλά ήθελα να μάθω! ;) man fprintf Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: Emfanever on June 12, 2009, 00:24:22 am Μια απορία(δεν ξέρω άν είναι σχετική με την εργασία αυτή,αλλά είπα να την ποστάρω εδώ),δεν έχω ασχοληθεί με το θέμα,αλλά πώς μπορώ να εκτυπώσω τα στοιχεία ενός δυαδικού αρχείου?(Απορία που μου δημιουργήθηκε από το τελευταίο εργαστήριο και μετά :D)Μπορεί να είναι χαζό αυτό που ρωτάω,αλλά ήθελα να μάθω! ;) εννοείς να διαβάσεις από αρχείο και να τα τυπώσεις στην οθόνη? ή να γράψεις στο αρχείο? Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: nasia!! on June 12, 2009, 00:27:20 am Μια απορία(δεν ξέρω άν είναι σχετική με την εργασία αυτή,αλλά είπα να την ποστάρω εδώ),δεν έχω ασχοληθεί με το θέμα,αλλά πώς μπορώ να εκτυπώσω τα στοιχεία ενός δυαδικού αρχείου?(Απορία που μου δημιουργήθηκε από το τελευταίο εργαστήριο και μετά :D)Μπορεί να είναι χαζό αυτό που ρωτάω,αλλά ήθελα να μάθω! ;) εννοείς να διαβάσεις από αρχείο και να τα τυπώσεις στην οθόνη? ή να γράψεις στο αρχείο? Εννοω να διαβάζω κάποια στοιχεία από το αρχείο και μετά να τα εκτυπώνει και μετα συνειδητοποίησα fprintf :o ^redface^ Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: Emfanever on June 12, 2009, 00:33:24 am Μια απορία(δεν ξέρω άν είναι σχετική με την εργασία αυτή,αλλά είπα να την ποστάρω εδώ),δεν έχω ασχοληθεί με το θέμα,αλλά πώς μπορώ να εκτυπώσω τα στοιχεία ενός δυαδικού αρχείου?(Απορία που μου δημιουργήθηκε από το τελευταίο εργαστήριο και μετά :D)Μπορεί να είναι χαζό αυτό που ρωτάω,αλλά ήθελα να μάθω! ;) εννοείς να διαβάσεις από αρχείο και να τα τυπώσεις στην οθόνη? ή να γράψεις στο αρχείο? Εννοω να διαβάζω κάποια στοιχεία από το αρχείο και μετά να τα εκτυπώνει και μετα συνειδητοποίησα fprintf :o ^redface^ το fprintf δεν είναι για να διαβάζει από το αρχείο, ειναι για να γράφει.Αν θες να διαβάσεις χρησιμοποιείς fscanf Αυτά πάνε κατά ζεύγη όμως, δλδ αν γράψεις με fwrite θα διαβάσεις με fread, αν γράψεις με fprintf , θα διαβάσεις με fscanf. Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: nasia!! on June 12, 2009, 00:34:50 am Tέσπα,δεν ζητούσα ακριβώς αυτό,αλλά μου απάντησες σε αυτά που πες! ;) Ευχαριστώ!
Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: antonios on June 12, 2009, 17:43:46 pm Να σας ρωτήσω κάτι ρε παιδιά, γιατί δεν βγάζω άκρη.....
Είναι λάθος να κάνουμε το πελατολόγιο έναν pointer πίνακα και συνεχώς να προσθέτουμε εγγραφές??? Πώς μπορούμε να διαχειριζόμαστε το αρχείο για συγκεκριμένες εγγραφές??? Δηλαδή πώς γίνεται η αναζήτηση μέσα σε αυτό??? Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: il capitano on June 13, 2009, 12:41:59 pm Να ρωτήσω κι εγώ κάτι
Όταν τρέχουμε την charge αλλάζει μια μεταβλητή της δομής, η μεταβλητή της χρεώσης... Στην συνέχεια αυτή την μεταβλητή δεν πρέπει να την περάσουμε στο δυαδικό αρχείο πάνω στην προηγούμενη τιμή της χρέωσης??? Πως γίνεται αυτό??? Δηλαδή πως γράφουμε πάνω σε ένα σημείο του αρχείου που είδη περιέχει στοιχεία??? Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: Emfanever on June 13, 2009, 13:02:08 pm αυτό που λες δε γνωρίζω αν γίνεται.
πέρνα ξανά όλα τα στοιχεία από την αρχή... αλλά πρόσεχε μη βάλεις κανένα "a" (append) αντί για "w" ,γιατί τα παλιά θα μένουν Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: il capitano on June 13, 2009, 13:03:51 pm Ευχαριστώ
Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: Mr K on June 14, 2009, 14:32:46 pm Antonie, einai lathos na kaneis pinaka......
den prepei na tous kratas stin mnimi giati oi pelates mporei na einai ekatontades kai xiliades, den einai dinaton na kratithoun giauto xrisimopoiise to kanali, to mono pou se endiaferei se auto einai i thesi tou kersora.. p.x stin clients_man oi palaioteroi pelates einai idi kataxorimenoi, ara an thes na peraseis neo pelati pas ton kersora me mia fseek sto telos kai katagrafeis ta nea stoixeia... elpizw na katalaves giati genika exw ena provlima na eksigo pragmata ;D Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: sarovios on June 14, 2009, 15:11:38 pm Η συναρτηση clients_man λεει οτι παρεχει τη δυνατοτητα καταχωρησης νεων πελατων.Δυλαδη θα εχει σαν ορισμα την δομη και θα περναμε ολα τα στοιχεια για εναν πελατη?Ακομα και τις μοναδες που μιλησε ετσι?
Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: ggpyr on June 14, 2009, 15:15:10 pm Ακομα και τις μοναδες που μιλησε ετσι? "Η δεύτερη συνάρτηση με το όνομα charge να διαθέτει μια ατέρμονα ανακύκλωση σε κάθε επανάληψη της οποίας να διαβάζεται ο αριθμός τηλεφώνου ενός πελάτη που πραγματοποιεί μια κλήση και οι αντίστοιχες μονάδες και να ενημερώνεται αντίστοιχα το αρχείο των πελατών. Η έξοδος από την ανακύκλωση να γίνεται αν ως αριθμός τηλεφώνου διαβαστεί το 0." Αυτό το κάνει η charge (όπως λέει και το όνομά της!)...Όταν καταχωρείτε ένας πελάτης δεν έχει μιλήσει ακόμα και έχει 0 μονάδες... Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: sarovios on June 14, 2009, 15:37:15 pm Οταν καλειται η clients_man αποθηκευονται τα στοιχεια του νεου πελατη στη δομη μετα την εγραφη στο αρχειο πρεπει να την κανει μεσα στην συναρτηση?
τον pointer σε μεταβλητη τυπου file θα τον δηλωσω σε καθε συναρτηση? Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: Merlin on June 14, 2009, 16:00:07 pm Μπορείς να τον περνάς σαν όρισμα
Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: sarovios on June 14, 2009, 16:14:09 pm ετσι για παραδειγμα?
clients_man(FILE *passengers , struct client .....) Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: Merlin on June 14, 2009, 16:16:42 pm Ναι,καλό φαίνεται
Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: Captain Mixos on June 14, 2009, 18:44:18 pm να ρωτησω....για την καταχωρηση του τηλεφωνου να χρησιμοποιήσω πινακα 10 στοιχειων?
μπορω να χρησιμοποιήσω string γι αυτη τη δουλεια? Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: antonios on June 14, 2009, 18:58:23 pm Antonie, einai lathos na kaneis pinaka...... den prepei na tous kratas stin mnimi giati oi pelates mporei na einai ekatontades kai xiliades, den einai dinaton na kratithoun giauto xrisimopoiise to kanali, to mono pou se endiaferei se auto einai i thesi tou kersora.. p.x stin clients_man oi palaioteroi pelates einai idi kataxorimenoi, ara an thes na peraseis neo pelati pas ton kersora me mia fseek sto telos kai katagrafeis ta nea stoixeia... elpizw na katalaves giati genika exw ena provlima na eksigo pragmata ;D Σε ευχαριστώ πολύ, μου έλυσες όλα μου τα προβλήματα....Τώρα νομίζω κατάλαβα τι πρέπει να κάνω!! Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: Merlin on June 14, 2009, 19:13:07 pm να ρωτησω....για την καταχωρηση του τηλεφωνου να χρησιμοποιήσω πινακα 10 στοιχειων? και με πίνακα τύπου int 10 στοιχείων γίνεται,δεν φαντάζομαι να παίζει τρομερή διαφοράμπορω να χρησιμοποιήσω string γι αυτη τη δουλεια? Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: Merlin on June 14, 2009, 19:16:17 pm Απλά θα σπαταλήσεις έτσι διπλάσιο χώρο στη μνήμη(με τον πίνακα τύπου int) :P
Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: Captain Mixos on June 14, 2009, 19:35:05 pm ενα string μπορει να περιεχει αριθμους???????????
Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: sarovios on June 14, 2009, 19:37:53 pm λογικα ναι.Και οι αριθμοι χαρακτηρες ειναι
Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: LegalizeMe on June 15, 2009, 12:12:59 pm :(
Παιδιά, έχω φάει ένα χαζό κόλλημα με την λογική των δομών που ακόμα με ξενίζει σαν ιδέα.. Όσον αφορά τα στοιχεία του κάθε πελάτη, αφού ορίσω στην αρχή την δομή client, για καταχώρηση θα δουλεύω με κάτι του στυλ pelaths1.number, pelaths1.adress, pelaths1.credit..κτλ κτλ και μετα για τον επόμενο pelaths2.number..κτλ κτλ, pelaths3.number..κτλ κτλ ?? το πρόβλημα έτσι είναι, όταν τρέχω την clients_man για καταχώρηση νέου, τι θα γίνεται, πως θα ονομάζεται το νέο δεδομένο τύπου client? Πολύ φοβάμαι οτι εχω ξεκινήσει από λάθος βάση, οπότε κάθε βοήθεια ευπρόσδεκτη.. Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: sarovios on June 15, 2009, 12:31:03 pm Βασικα εγω εχω κολλησει στο τι θα κανει η main.Θα δινει τη δυνατοτητα επιλογης και εκτελεσης της εργασιας που επιθυμει ο χρηστης καθε φορα.Δηλαδη τι?
Επισης των αριθμο των πελατων θα πρεπει να τον διαβασει καπου το προγραμμα? Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: il capitano on June 15, 2009, 12:34:52 pm Βασικα εγω εχω κολλησει στο τι θα κανει η main.Θα δινει τη δυνατοτητα επιλογης και εκτελεσης της εργασιας που επιθυμει ο χρηστης καθε φορα.Δηλαδη τι? Επισης των αριθμο των πελατων θα πρεπει να τον διαβασει καπου το προγραμμα? Η main απλά θα σου βγάγει μια επιλογή για ποιά από τις 3 λειτουργείες θες να κάνεις και στην συνέχεια θα καλεί την αντίστοιχη συνάρτηση. Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: LegalizeMe on June 15, 2009, 12:39:25 pm Προσωπικά εγώ έβαλα ορισμένες καταχωρήσεις εξ' αρχής, και καλά οι παλιοί πελάτες, και μετά σκάει το μήνυμα επιλογής της εργασίας που θες να κάνεις,..
αμα θές να προσθέσεις πελάτη, θα προστίθεται μια δομή στο τέλος του αρχείου. το θέμα είναι, πως θα ονομάζεται η εκάστοτε δομή που τυχόν θέλουμε να προσθέσουμε? Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: sarovios on June 15, 2009, 12:42:45 pm Ειναι λαθος να δηλωσουμε πινακα δομης? πχ. struct clients **all_clients
Και μετα με realloc να αυξανουμε το μεγεθος του αν προσθετεται και αλλος πελατης? Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: LegalizeMe on June 15, 2009, 12:51:18 pm ωχωχ, παιζει αυτό δλδ? δυναμική δέσμευση?
Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: sarovios on June 15, 2009, 13:05:39 pm Δεν μπορω να σκεφτω κατι αλλο.Θα το ξεκινησω ετσι και βλεπουμε...
Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: il capitano on June 15, 2009, 13:31:17 pm Βασικα έχω σκευτεί να μην καταχωρείς μια ολόκληρη δομή στο αρχείο γιατί είναι αρκετά δύσκολο...
Εγώ έχω γράψει την δομή με έναν μόνο πελάτη... Έστι κάθε φορά που καλείται η clients_man περνάω όλα τα στοιχεία του πελάτη στην δομή και στην συνέχεια την δομή στο αρχείο... Μετά όταν ξανακαλείται η clients_man τότε σβήνω τα στοιχεία της προηγούμενης δομής και τα αντικαθηστώ με αυτά της επόμενης. Έτσι χρειάζομαι μια δομή της μορφής struct client pelaths; και όχι πίνακα και δυναμική καταχώρηση μνήμης. Βέβαια αυτό θεωριτηκά γιατί ακόμα δεν κατάφερα να βρώ πως να γράψω την fread για την δομή και εδώ ζητώ την βοήθειά σας... Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: sarovios on June 15, 2009, 13:42:47 pm Η fwrite ειναι πχ.
fwrite(pelaths , sizeof(struct client),size_t nobj, FILE* stream) Αντιστοιχα θα ειναι και η fread. Εσυ περνας τα στοιχεια στο πελατης μετα στο αρχειο και μετα περνας απο πανω παλι στο πελατης τα στοιχεια του 2ου πελατη? Πως το κανεισ αυτο? Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: il capitano on June 15, 2009, 13:47:59 pm Όταν τρέχω την clients_man στην αρχή διαβάζω τα στοιχεία του κάθε πελάτης και τα αποθηκεύω στην δωμή.
Στην συνέχεια ανοίγω το δυαδικό αρχείο και πάω στο τέλος του (με την fseek) και εκεί καταχωρώ την κάθε δομή. Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: sarovios on June 15, 2009, 13:50:13 pm Γιατι πας στο τελος του αρχειου?
Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: Andre on June 15, 2009, 15:31:02 pm Γιατι πας στο τελος του αρχειου? Υποθέτω για να μη γράψει πάνω σε στοιχεία προηγούμενου πελάτη.Επίσης, δήλωση δομής: Code: struct client καταχώρηση τιμών: Code: pelatis.phone_num=2310222555; // ISO C++ forbids assignment of arrays Πώς είναι το σωστό?? Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: Tsagk on June 15, 2009, 16:12:52 pm Ερωτηση. στην δευτερη συναρτηση (charge) πως θα προσπελασουμε τα αρχεια για να βρουμε τον αριθμο του τηλεφωνου και να του χρεωσουμε τις αντιστοιχες μοναδες? αν μπορει καποιος να βοηθησει plz
Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: mostel on June 15, 2009, 16:45:29 pm Ερωτηση. στην δευτερη συναρτηση (charge) πως θα προσπελασουμε τα αρχεια για να βρουμε τον αριθμο του τηλεφωνου και να του χρεωσουμε τις αντιστοιχες μοναδες? αν μπορει καποιος να βοηθησει plz Με strcmp() , μιας και δε γίνεται αλλιώς να συγκρίνεις strings - Στέλιος Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: i_am_batman on June 15, 2009, 21:33:49 pm Ερωτηση. στην δευτερη συναρτηση (charge) πως θα προσπελασουμε τα αρχεια για να βρουμε τον αριθμο του τηλεφωνου και να του χρεωσουμε τις αντιστοιχες μοναδες? αν μπορει καποιος να βοηθησει plz Με strcmp() , μιας και δε γίνεται αλλιώς να συγκρίνεις strings - Στέλιος Με την strcmp() συγκρίνεις strings, αλλά στην προκειμένη περίπτωση πως ακριβώς χειρίζεσαι τα δεδομένα που έχει το αρχείο σου;Θέλω να πώ, πώς προσδιορίζεις τον αύξοντα αριθμό του πελάτη; Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: Αιμιλία η φτερωτή χελώνα on June 15, 2009, 22:07:21 pm Για τη συναρτηση charges :
Πως γνωριζοντας τον αριθμο τηλεφωνου του χρηστη, θα ψαξω μεσα στο αρχειο για να βρω τις μοναδες του και να περασω τη νεα τιμη; :( Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: Captain Mixos on June 16, 2009, 00:52:45 am για να παω στο τελος του αρχειου με την fseek γραφω.... fseek(τον δεικτη μου, κατι, SEEK_END);
αυτο το κατι τι θα ειναι?????? οεο???? 8) Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: Emfanever on June 16, 2009, 01:52:40 am για να παω στο τελος του αρχειου με την fseek γραφω.... fseek(τον δεικτη μου, κατι, SEEK_END); αυτο το κατι τι θα ειναι?????? οεο???? 8) 0 8) Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: Captain Mixos on June 16, 2009, 01:59:03 am για να παω στο τελος του αρχειου με την fseek γραφω.... fseek(τον δεικτη μου, κατι, SEEK_END); αυτο το κατι τι θα ειναι?????? οεο???? 8) 0 8) Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: Captain Mixos on June 16, 2009, 02:03:56 am και κατι ακομα :D για να γραψω σε ενα δυαδικο αρχειο πανω σε κατι που ηδη υπαρχει, οταν ανοιγω το αρχειο χρησιμοποιω "wb" ή "ab" ???????????
Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: Emfanever on June 16, 2009, 02:04:24 am "ab"
Title: Re: [Δομ. Προγρ.] Εργασία Η Post by: Captain Mixos on June 16, 2009, 02:05:45 am "ab" και πάλι σ'ευχαριστω.......... ^notworthy^ |