Title: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: AgentCain on May 15, 2008, 10:05:30 am Από το ethmmy
Ένα σύστημα συναγερμού εξυπηρετεί Ν απομακρυσμένους σταθμούς (πχ οικίες). Κάθε σταθμός διαθέτει Κi (i=1,...,Ν) αισθητήρες οι οποίοι ανιχνεύουν κάποιο συμβάν. Όταν ένας αισθητήρας ενεργοποιηθεί ο σταθμός εκπέμπει ένα σήμα η τιμή του οποίου είναι μοναδική και χαρακτηρίζει το συγκεκριμένο σταθμό και το συγκεκριμένο αισθητήρα. Να γραφεί το πρόγραμμα το οποίο διαχειρίζεται το σύστημα και στο οποίο αφού διαβαστούν ο αριθμός των σταθμών και ο αριθμός των αισθητήρων για κάθε σταθμό να ορίζεται δυναμικά ένας πίνακας δυο διαστάσεων σε κάθε γραμμή του οποίου να αντιστοιχεί ένας σταθμός και στα στοιχεία της γραμμής να αντιστοιχούν οι τιμές του σήματος που εκπέμπονται όταν ενεργοποιηθούν οι αντίστοιχοι αισθητήρες του σταθμού. Κάθε γραμμή του πίνακα να έχει ακριβώς τόσες θέσεις όσοι είναι και οι αισθητήρες που εξυπηρετεί ο αντίστοιχος σταθμός. Αφού διαβαστούν οι τιμές των στοιχείων του πίνακα να διαβάζεται ένας ακέραιος αριθμός Μ και για μια περίοδο από Μ εισερχόμενα σήματα να διαβάζεται η τιμή του εισερχόμενου σήματος και να αναζητείται στον πίνακα και να εκτυπώνεται ο σταθμός και η θέση τού αισθητήρα για τον για τον οποίο εκπέμφθηκε το σήμα. Ταυτότητα του σταθμού θεωρείται ο αριθμός της αντίστοιχης γραμμής στον πίνακα και ως ταυτότητα του αισθητήρα ο αριθμός της αντίστοιχης στήλης. Ένα σήμα αναγνωρίζεται ως αυθεντικό, όταν βρεθεί η τιμή του διαφέρει λιγότερο από έναν αριθμό e από μία από τις προκαθορισμένες τιμές του πίνακα. Αν ένα σήμα δεν αναγνωρισθεί ως αυθεντικό η τιμή του να καταχωρείται σε ένα πίνακα για τον οποίο η μνήμη να δεσμεύεται δυναμικά και η διάστασή του να αυξάνει κατά μια μονάδα κάθε φορά που πρόκειται να καταχωρηθεί σε αυτόν μια καινούργια τιμή. Αφού ολοκληρωθεί η περίοδος με τη λήψη Μ εισερχομένων σημάτων να εκτυπώνεται ο πίνακας με τις τιμές των σημάτων που δεν αναγνωρίστηκαν ως αυθεντικά Hμ/νία λήξης δηλώσεων: 21/05/2008 Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: mitsos_dlx on May 15, 2008, 17:53:09 pm Για τον πίνακα με τις λάθος καταχωρήσεις που θα αυξάνει το μέγεθος του κάθε φορά τι θα κάνουμε?
Θα δεσμεύουμε κάθε φορά καινούριο χώρο στη μνήμη για όλο τον πίνακα και θα αντιγράφουμε τα προηγούμενα στοιχεία ή υπάρχει κάτι άλλο? Αν δεσμεύσω εγώ την πρώτη φορά χώρο για έναν αριθμό και μετά πάω και δεσμεύσω ακριβώς απο δίπλα χώρο και για το δεύτερο δεν κυνδινεύω να χάσω κάτι χρήσιμο που ήταν εκεί, πχ μία άλλη μεταβλητή του προγράμματος? Επίσης, το e εμείς θα το ορίσουμε όσο θέλουμε έτσι? Αλλά μετά θα πρέπει όταν διαβάζουμε τις τιμές του 2διάστατου πίνακα να ελέγχουμε να μην είναι στο διάστημα +e ή -e από όλες τις προηγούμενες. Αλλιώς θα έχουμε πρόβλημα. Λίγο χαζό αυτό το σημείο με το e.... Κατά τα άλλα μου φαίνεται σαφής η άσκηση... Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: zeus90 on May 15, 2008, 18:02:49 pm Με realloc πρέπει να λύνεται το πρόβλημα σου.Όσο για το e και μένα με έχει μπερδέψει.Αφού δεν λέει κάτι συγκεκριμένο όμως, λογικά το εισαγει ο χρήστης.Εκτός και αν εννοεί το e=2,71...
Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Γιώργος on May 15, 2008, 18:04:58 pm Με μία πρώτη ματιά, το e θα το δηλώσεις ως σταθερά (δικής σου προτίμησης) - ή θα το εισάγει ο χρήστης.
Δεν παίζει να 'ναι το γνωστό e! :D Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Emfanever on May 15, 2008, 18:35:10 pm Δεν παίζει να 'ναι το γνωστό e! :D Ε ναι ,μάλλον ,αλλιώς δε θα έλεγε : " ... από έναν αριθμό e..." πάντως, δε παίρνω όρκο όλα να τα περιμένουμε ! Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: AgentCain on May 15, 2008, 18:38:38 pm Το e δεν είναι ο αριθμός e αλλά προφανώς το ελάχιστο όριο ε της διαφοράς (αυτό που υπάρχει στον ορισμό του ορίου)
Η άσκηση όμως είναι λογική Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: dimvam on May 15, 2008, 19:05:26 pm Να ρωτήσω κάτι.
1. Όταν ορίζουμε δισδιάστατο πίνακα με τη malloc πώς μπορούμε μετά να επεξεργαστούμε τα στοιχεία του; Αφού δεν ξέρουμε πόσες στήλες έχει κάθε γραμμή. Δηλαδή, δηλώνουμε τους αισθητήρες που έχει ο κάθε σταθμός, όμως το πόσες γραμμές έχει ο πίνακας είναι άγνωστο (δηλώνεται και αυτό). 2. Επίσης, το σήμα που χαρακτιρίζει κάθε σταθμό το επιλέγουμε εντελώς αυθαίρετα εμείς; Εγώ δήλωσα μια μεταβλητή cnt ώστε ο πρώτος αισθητήρας του πρώτου σταθμού να εκπέμπει 1, ο δεύτερος 2, ο τρίτος 3, ο πρώτος αισθητήρας του δεύτερου σταθμού 4 κ.όκ. Είναι σωστό; Thanx! Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Emfanever on May 15, 2008, 19:08:33 pm Ο πίνακας θα είναι ΝxN ,
Ν σταθμοί και για καθέναν από αυτούς Ν αισθητήρες έτσι νομίζω δλδ.... edit: ΑΚΥΡΟ , τλκ κάθε γραμμή έχει διαφορετικό μέγεθος ,έκανα ένα παράδειγμα παρακάτω ... Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Γιώργος on May 15, 2008, 19:09:58 pm Να ρωτήσω κάτι. Κανονικά όπως επεξεργάζεσαι έναν διδιάστατο πίνακα. Με την malloc καθορίζεις και τις διαστάσεις του. :)1. Όταν ορίζουμε δισδιάστατο πίνακα με τη malloc πώς μπορούμε μετά να επεξεργαστούμε τα στοιχεία του; Αφού δεν ξέρουμε πόσες στήλες έχει κάθε γραμμή. Δηλαδή, δηλώνουμε τους αισθητήρες που έχει ο κάθε σταθμός, όμως το πόσες γραμμές έχει ο πίνακας είναι άγνωστο (δηλώνεται και αυτό). Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: dimvam on May 15, 2008, 19:12:15 pm Ο πίνακας θα είναι ΝxN , Δε νομίζω! Εγώ αλλιώς καταλαβαίνω από την εκφώνηση. Λέει: "...να διαβάζονται ο αριθμός των αισθητήρων για κάθε σταθμό."Ν σταθμοί και για καθέναν από αυτούς Ν αισθητήρες Άλλωστε ζητάει να δεσμεύσουμε δυναμικά μνήμη, λογικά θα θέλει pointers σε pointers, και δύο malloc όπως είχε κάνει στο προηγούμενο μάθημα. Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Emfanever on May 15, 2008, 19:14:04 pm Ε ωραία , πάλι που είναι το πρόβλημα αφού εσύ δίνεις τον αριθμό των αισθητήρων ,πως γίνεται να μη τον ξέρεις μετά???
Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Emfanever on May 15, 2008, 19:35:36 pm Αυτό είναι ένα παράδειγμα για το πως περίπου θα γίνει ο πίνακας:
Code: #include <stdio.h> Στο κανονικό πρόγραμμα προφανώς οι τιμές δε θα δίνονται από τη rand() . Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: tomshare3 on May 16, 2008, 00:15:27 am για κάθε σταθμό να ορίζεται δυναμικά ένας πίνακας δυο διαστάσεων σε κάθε γραμμή του οποίου να αντιστοιχεί ένας σταθμός και στα στοιχεία της γραμμής να αντιστοιχούν οι τιμές του σήματος που εκπέμπονται όταν ενεργοποιηθούν οι αντίστοιχοι αισθητήρες του σταθμού.
Κάθε γραμμή του πίνακα να έχει ακριβώς τόσες θέσεις όσοι είναι και οι αισθητήρες που εξυπηρετεί ο αντίστοιχος σταθμός.(δηλαδη Ν) τελικα το μεγεθος καθε γραμμης ειναι μεταβαλλομενο ή σταθερο=Ν? Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Γιώργος on May 16, 2008, 00:33:39 am για κάθε σταθμό να ορίζεται δυναμικά ένας πίνακας δυο διαστάσεων σε κάθε γραμμή του οποίου να αντιστοιχεί ένας σταθμός και στα στοιχεία της γραμμής να αντιστοιχούν οι τιμές του σήματος που εκπέμπονται όταν ενεργοποιηθούν οι αντίστοιχοι αισθητήρες του σταθμού. Μεταβαλλόμενο. Προφανώς θα χρειαστείς κι έναν μονοδιάστατο to keep track of it.Κάθε γραμμή του πίνακα να έχει ακριβώς τόσες θέσεις όσοι είναι και οι αισθητήρες που εξυπηρετεί ο αντίστοιχος σταθμός.(δηλαδη Ν) τελικα το μεγεθος καθε γραμμης ειναι μεταβαλλομενο ή σταθερο=Ν? Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: dimvam on May 16, 2008, 01:13:04 am Αυτό είναι ένα παράδειγμα για το πως περίπου θα γίνει ο πίνακας: Code: .... Το δεύτερο for πώς το εξηγείς; Δεν πρέπει να είναι σωστό γιατι το aisth(i) είναι pointer. (όπου παρένθεση εννοώ αγκύλη) Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Emfanever on May 16, 2008, 01:38:29 am Δεν είναι pointer ,στοιχείο int είναι ,όταν το ορίζω γράφω
int i,j,n,**spiti ,*aisth; και μετά aisth=(int *)malloc(n*sizeof(int)); εξάλλου τρέξτο να δεις ότι δουλεύει Βάζω for (j=0;j<aisth(i);j++) γιατί όπως αναφέρθηκε το μέγεθος κάθε γραμμής δεν είναι κοινό, άρα πρέπει να περιέχεται σε ένα πίνακα Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Γιώργος on May 16, 2008, 02:08:30 am Για το e: είναι ένα "αποδεκτό σφάλμα". :)
Οπότε εγώ θα το δήλωνα ως σταθερά. Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Emfanever on May 16, 2008, 02:14:46 am Οι τιμές του σήματος καθώς και του e τι τάξης αριθμοί είναι;
Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Γιώργος on May 16, 2008, 02:25:52 am Δεν προσδιορίζει, οπότε ΕΣΥ διαλέγεις. :)
Στάνταρ float είναι τα σήματα μιας και τα ερεθίσματα που λαμβάνουν είναι αναλογικά. Επίσης, το e (εγώ το ονομάζω EPS συνήθως) το κρατάς στην ακρίβεια που θες εσύ (πχ 10-3 είναι μια ικανοποιητική ακρίβεια). Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Emfanever on May 16, 2008, 02:38:47 am Και κάτι ακόμα.... Αν για παραπάνω από μια τιμές η διαφορά είναι κάτω από e θα διαλέξουμε λογικά αυτή με τη μικρότερη διαφορα?
Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: tomshare3 on May 16, 2008, 03:01:16 am για κάθε σταθμό να ορίζεται δυναμικά ένας πίνακας δυο διαστάσεων σε κάθε γραμμή του οποίου να αντιστοιχεί ένας σταθμός και στα στοιχεία της γραμμής να αντιστοιχούν οι τιμές του σήματος που εκπέμπονται όταν ενεργοποιηθούν οι αντίστοιχοι αισθητήρες του σταθμού. Μεταβαλλόμενο. Προφανώς θα χρειαστείς κι έναν μονοδιάστατο to keep track of it.Κάθε γραμμή του πίνακα να έχει ακριβώς τόσες θέσεις όσοι είναι και οι αισθητήρες που εξυπηρετεί ο αντίστοιχος σταθμός.(δηλαδη Ν) τελικα το μεγεθος καθε γραμμης ειναι μεταβαλλομενο ή σταθερο=Ν? ναι αλλα τοτε ποιο το νοημα του Κάθε γραμμή του πίνακα να έχει ακριβώς τόσες θέσεις όσοι είναι και οι αισθητήρες?? πολυ μ'αρεσουν οι ασκησεις του κορτεση..! :D :D εχει πλακα να προσπαθεις να αποκρυπτογραφησεις την εκφωνηση.... :o Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Γιώργος on May 16, 2008, 03:05:02 am Μα σου 'πα!!! :D :D :D
Πόσο πιο νιανιά να στο κάνω; Να στο ζωγραφίσω; :P Αυτό θα κάνω!!!!!!! :D :D :D :D :D :D :D Πχ, αν έχεις 3 σταθμούς, ο 1ος έχει 5 αισθητήρες, ο 2ος δύο και ο 3ος 8, ο πίνακάς σου θα 'ναι έτσι: Code: OOOOO Πολύ ωραία άσκηση έχω να πω! :D :D Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Emfanever on May 16, 2008, 03:08:41 am για κάθε σταθμό να ορίζεται δυναμικά ένας πίνακας δυο διαστάσεων σε κάθε γραμμή του οποίου να αντιστοιχεί ένας σταθμός και στα στοιχεία της γραμμής να αντιστοιχούν οι τιμές του σήματος που εκπέμπονται όταν ενεργοποιηθούν οι αντίστοιχοι αισθητήρες του σταθμού. Μεταβαλλόμενο. Προφανώς θα χρειαστείς κι έναν μονοδιάστατο to keep track of it.Κάθε γραμμή του πίνακα να έχει ακριβώς τόσες θέσεις όσοι είναι και οι αισθητήρες που εξυπηρετεί ο αντίστοιχος σταθμός.(δηλαδη Ν) τελικα το μεγεθος καθε γραμμης ειναι μεταβαλλομενο ή σταθερο=Ν? ναι αλλα τοτε ποιο το νοημα του Κάθε γραμμή του πίνακα να έχει ακριβώς τόσες θέσεις όσοι είναι και οι αισθητήρες?? πολυ μ'αρεσουν οι ασκησεις του κορτεση..! :D :D εχει πλακα να προσπαθεις να αποκρυπτογραφησεις την εκφωνηση.... :o Τρέξε λίγο αυτό και θα δεις πως είναι http://www.thmmy.gr/smf/index.php?topic=24495.msg464152#msg464152 Βέβαια δε μοιάζει με τους κλασικούς πίνακες ,αλλά έτσι είναι το σωστό Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Larry_Flynt on May 16, 2008, 04:44:35 am Μπράβο παιδιά, έχετε κάνει δουλεια!!!!!
ειδικά αυτο: spiti=(int**)malloc(n*sizeof(int *)); for (i=0;i<n;i++) spiti=(int *)malloc((aisth)*sizeof(int)); είναι καταπληκτικό, δεν το χα υπόψην ίσως ο πίνακας aisth[] δε χρειάζεται αν παίρνεις input σε μεταβλητή μέσα σε αυτό το for. Θα το δώ αύριο. μπα, μετά ξεχνάς πόσα έχεις, γράψτε λάθςο Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: tomshare3 on May 16, 2008, 13:40:54 pm Πχ, αν έχεις 3 σταθμούς, ο 1ος έχει 5 αισθητήρες, ο 2ος δύο και ο 3ος 8, ο πίνακάς σου θα 'ναι έτσι: Code: OOOOO αλλο ειναι το θεμα.. το 5 ,2 ,8 στο παραδειγμα σου ειναι ο αριθμος ολων των αισθητηρων του αντιστοιχου σταθμου ή των ενεργοποιημενων αισθητηρων? η εκφωνηση λεει : Όταν ένας αισθητήρας ενεργοποιηθεί ο σταθμός εκπέμπει ένα σήμα και στα στοιχεία της γραμμής να αντιστοιχούν οι τιμές του σήματος που εκπέμπονται όταν ενεργοποιηθούν οι αντίστοιχοι αισθητήρες αυτο ομως ακυρωνεται στη συνεχεια απο το Κάθε γραμμή του πίνακα να έχει ακριβώς τόσες θέσεις όσοι είναι και οι αισθητήρες που εξυπηρετεί ο αντίστοιχος σταθμός δεν ξερω αν καταλαβαινεις τι θελω να πω... τεσπα θα το δοκιμασω οπως ειπε ο Emfanever Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Γιώργος on May 16, 2008, 15:56:42 pm Ας το το "ενεργοποιηθεί". Αυτό θα σου χρησιμεύσει στο 2ο μέρος, που παίρνεις στα σήματα εισόδου.
Στον πίνακα είναι όλοι οι αισθητήρες - αλλιώς δεν βγαίνει και το πρόγραμμα. Ο κώδικας του Emfanever είναι η καρδιά του 1ου μέρους της εργασίας! :) ;) Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: ripper_george on May 16, 2008, 16:01:47 pm Πείτε μου λίγο αν το κατέχω...
Διαβάζουμε σπίτια και αισθητήρες. Ο κάθε αισθητήρας έχει ως αναγνωριστικό έναν δικό του, μοναδικό αριθμό, δεκαδικού τύπου....???? Μου δίνει ο χρήστης Μ σήματα, και εντοπίζω σε ποιον αισθητήρα απευθύνεται το κάθε σήμα... Αν το σήμα δεν απευθύνεται σε κάποιον αισθητήρα, τότε το αποθηκεύω σε έναν πίνακα(δυναμικά)..... Είμαι σωστός ή δεν κατάλαβα καμία λεπτομέρεια??? {Θα περίμενα να έχει και κάπου επεξεργασία αρχείων......} Thx in advance for the Help.... Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Γιώργος on May 16, 2008, 16:03:39 pm Το 'χεις, το 'χεις!! :D :D :D
Εκτός από 'δω.. Ο κάθε αισθητήρας έχει ως αναγνωριστικό έναν δικό του, μοναδικό αριθμό, δεκαδικού τύπου....???? Το "αναγνωριστικό" ενός σταθμού είναι ο αριθμός της γραμμής: 0..Ν-1Το "αναγνωριστικό" ενός αισθητήρα (κάποιου σταθμού) είναι ο αριθμός της ΣΤΥΛΗΣ στην οποία είναι. :) Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: ripper_george on May 16, 2008, 16:09:58 pm Δηλαδή:
Ο πίνακας με τα αναγνωριστικά είναι τύπου int.... Αν διαβάσουμε ένα σήμα με την τιμή 11, είναι ο 1ος αισθητήρας στο 1ο σπίτι??? Γιατί να παίζει η τιμή??? Θα μπορούσε δηλαδή η τιμή να είναι 10,98 ή 11,02 ??? Πως δηλαδή μπορούν αν παίζουν οι τιμές?? Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Γιώργος on May 16, 2008, 16:12:20 pm Όχι ρε! :D
Αν διαβάσεις σήμα με τιμή 11 και το σφάλμα σου e είναι 10-1 τότε θα αναγνωριστεί στη θέση του πίνακα που έχει τιμή: (http://gentgeen.homelinux.org/cgi-bin/mimetex.cgi?|x-11|<0.1) Πόσο λιανά πια; :D :D Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: ripper_george on May 16, 2008, 16:21:07 pm Στο παράδειγμα που έδωσα όμως, |χ-11|=0 άρα θα διαβάσει το 1ο σπίτι, τον 1ο αισθητήρα...
Σωστά??? 'Ομως, ο αριθμός πχ 111 θα μπορούσε να είναι είτε: 11ο σπίτι 1ος αισθητήρας ή 1ο σπίτι 11ος αισθητήρας..... Μήπως τα σήματα πρέπει να δίνονται με άλλη μορφή??? Αλλιώς δεν βγάζει νόημα.... Θα πρέπει να βάλουμε ως αναγνωριστικό κάθε αισθητήρα δεκαδικούς: 11,1 που θα είναι 11ο σπίτι 1ος αισθ. ή 1,11 που θα είναι 1ο σπίτι 11ος αισθ. Αλλιώς ο χρήστης που δίνει τα σήματα θα πρέπει να δίνει μία τιμή <Enter> και μετά την άλλη για να δώσει ένα μονάχα σήμα..... Όμως με τέτοιο τρόπο "αναγνώρισης", που χωράει περιθώριο σφάλματος??? Κατάλαβες περίπου που έιναι το κόλλημά μου??? Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Γιώργος on May 16, 2008, 17:05:28 pm Στο παράδειγμα που έδωσα όμως, |χ-11|=0 άρα θα διαβάσει το 1ο σπίτι, τον 1ο αισθητήρα... Αν στο πρώτο σπίτι - πρώτο αισθητήρα έχεις καταχωρήσει την τιμή 11, ναι. :)Σωστά??? Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Emfanever on May 16, 2008, 17:31:41 pm Η τιμή κάθε αισθητήρα δεν πρέπει απαραίτητα να υποδηλώνει τη θέση του αισθητήρα στον πίνακα. Π.χ έχεις τον πίνακα
_________________________________________ Σταθμοί | Τιμές Αισθητήρων ------------------------------------------------------------------------ Σταθμός 1: 3 6 2 Σταθμός 2: 4 Σταθμός 3: 5 9 Σταθμός 4: 7 8 11 _________________________________________ Τώρα αν εισάγεις ως τιμή ενός εισερχόμενου σήματος το 6.1 και έστω e=0.2 το πρόγραμμα ψάχνει όλο τον πίνακα και βρίσκει ότι | 6.1 - 6 | = 0.1 < 0.2 Άρα το σήμα είναι αυθεντικό και προέρχεται από τον αισθητήρα που έχει ως χαρακτηριστικό τιμή σήματος το 6 -> Σταθμός 1 , Αισθητήρας 2 Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Γιώργος on May 16, 2008, 17:36:25 pm Βέβαια θα πρέπει δυστυχώς τους σταθμούς να τους ονομάσουμε από το 0, καθώς το id τους είναι ο αριθμός της γραμμής στην οποία βρίσκονται. :(
Εκτός αν κάνουμε τη "σύμβαση" ότι στην εκτύπωση αποτελεσμάτων η "αρίθμηση" ξεκινά από τον άσσο! Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: dimvam on May 16, 2008, 17:52:55 pm Το σήμα που εκπέμπει κάθε αισθητήρας θα το ορίσουμε αυθαίρετα εμείς απ' ότι κατάλαβα. (Μιλάω για το σήμα που εκπέμπει, όχι για την ταυτότητα του αισθητήρα).
Πρέπει, λοιπόν, να το δηλώνουμε κάθε φορά σαρώνοντας όλο τον πίνακα ή αρκεί μία μεταβλητή που αυξάνει κάθε φορά πχ κατά 1, και έτσι δίνει στον πρώτο αισθητήρα του πρώτου σταθμού τιμή εκπομπής σήματος 1, στο δεύτερο αισθητήρα 2, στον τρίτο 3, στον πρώτο αισθητήρα του δεύτερου σταθμού 4 κ.ο.κ. Ο δεύτερος τρόπος μου φαίνεται πιο πρακτικός από την άποψη ότι δεν υπάρχει περίπτωση να δοθούν ίσες τιμές σημάτων εκπομπής, ενώ στην πρώτη περίπτωση πρέπει να ελέγχουμε και τις τιμές που εισάγουμε. Καλά κατάλαβα την εργασία ή όχ; Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Emfanever on May 16, 2008, 18:42:19 pm Έτσι πρέπει να είναι ,απλά επειδή λέει στην εκφώνηση "Αφού διαβαστούν οι τιμές των στοιχείων του πίνακα ..." ίσως θέλει να τις εισάγουμε εμείς. Πάντως σίγουρα πιο πρακτικό είναι να εισάγονται αυτόματα.
Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: ripper_george on May 16, 2008, 21:48:56 pm Τελικά αν εξαιρέσουμε την εκφώνηση η οποία ήθελε αποκρυπτογράφηση,
η άσκηση δεν είχε τπτ το σπουδαίο..... ;D Πάντως πρέπει να υπάρχει κάποιο πρόβλημα με τον server γιατί μου βγάζει μύνημα: Αδυναμία σύνδεσης με τη βάση δεδομένων [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.. Επικοινωνήστε με τους διαχειριστές του συστήματος όταν πάω να δημιουργήσω ομάδα..... Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: OtiNaNAi on May 16, 2008, 21:54:57 pm Πάντως πρέπει να υπάρχει κάποιο πρόβλημα με τον server γιατί μου βγάζει μύνημα: Αδυναμία σύνδεσης με τη βάση δεδομένων [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.. Επικοινωνήστε με τους διαχειριστές του συστήματος όταν πάω να δημιουργήσω ομάδα..... Γτ ολοι τωρα προσπαθουν να φτιαξουν ομαδα κ γινεται της πουτ@ν@ς, οποτε δν μπορει να ανταποκριθει το συστημα Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: georngeo on May 17, 2008, 00:51:48 am prepei na elegxthei an ena sima einai authentiko gia na ginei h anazitisi tis timis tou ston pinaka? sxetika me to e emeis to thetoume?
Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Γιώργος on May 17, 2008, 01:03:10 am Αν το βρεις είναι αυθεντικό. :)
Ναι στο 2ο. Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: georngeo on May 17, 2008, 01:38:07 am px
for ...{ for ...{ ... <---anazitisi } } if brethike { elegxos timh-stahmoi[][]<e aythentiko } else { neopinakas[]=timh } h malakia? Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Emfanever on May 17, 2008, 01:45:55 am Δε θέλω να σε στεναχωρήσω αλλά μαλακία!
Δε θα ψάξεις να βρεις αν η τιμή υπάρχει ακριβώς ίδια στον πίνακα .Αλλιώς τι νόημα έχει να ελέγξεις αν η διαφορά θα είναι μικρότερη από e ,αφού θα είναι μηδέν! Θα ψάξεις να βρείς αν υπάρχει παραπλήσια τιμή στον πίνακα ,ώστε | εισερχόμενη - παραπλήσια(του πίνακα) |< e Aν ισχύει αυτό, τότε η εισερχόμενη είναι αυθεντική. Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: georngeo on May 17, 2008, 01:55:53 am ok pios einai telika o stathmos gia ton opoion ekpemfthike to sima? h prwth paraplisia timh pou vriskw ston pinaka?
Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Γιώργος on May 17, 2008, 02:00:14 am ok pios einai telika o stathmos gia ton opoion ekpemfthike to sima? h prwth paraplisia timh pou vriskw ston pinaka? Κατ' εμέ ναι, μιας και δεν στο προσδιορίζει. :)Δε θέλω να σε στεναχωρήσω αλλά μαλακία! Ναι, αλλά τον στεναχώρησες τελικά!! :P :PTitle: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: georngeo on May 17, 2008, 02:09:26 am ok euxaristw
Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Emfanever on May 17, 2008, 02:39:03 am Το καλύτερο που μπορείς να κάνεις είναι να βρεις για ποια τιμή του πίνακα ελαχιστοποιείται η διαφορά | εισερχόμενη τιμή - τιμή πίνακα |
Μετά ελέγχεις αν η διαφορά αυτή είναι μικρότερη από e. Αν ΝΑΙ -> εκτυπώνεις το σταθμό και τη θέση του αισθητήρα Αν ΟΧΙ -> καταχωρείς την εισερχόμενη σε ένα νέο πίνακα Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Γιώργος on May 17, 2008, 02:41:57 am Αν και η εκφώνηση δεν το ζητά αυτό - και δεν το θεωρώ απαραίτητο, εάν θεωρήσουμε ότι δουλεύουν σε συχνότητες που είναι γενικά διαφορετικές.
Αλλά όχι κι άσχημη ιδέα! ;) Βραδινές καλλιτεχνικές ανησυχίες Emfanever; :P Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Emfanever on May 17, 2008, 02:52:23 am Βραδινές καλλιτεχνικές ανησυχίες Emfanever; :P Μη σου πω ότι το είδα στο όνειρό μου χθες βράδυ! ;D ;D Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: georngeo on May 17, 2008, 03:06:35 am h ekfwnisi einai @#@!#
Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Γιώργος on May 17, 2008, 04:54:04 am h ekfwnisi einai @#@!# Κατά τη γνώμη μου πάντως η εκφώνηση είναι η πιο στρωτή που 'χει δοθεί ως τώρα (σε σχέση με τις C και D). :)Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Larry_Flynt on May 17, 2008, 05:56:16 am Η D ήταν γραμμένη σαν την Οδύσσεια.
χοχοχο in media res νομίζω - μπορεί να πετάω και κοτσάνα, μην πετάτε ντομάτες Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Άγνωστος Χ on May 17, 2008, 10:05:42 am Παιδιά θα ήθελα να ρωτήσω αν μπορέσατε να κάνετε "ομάδα"για την υποβολή της εργασίας γιατί εμένα μου λέει αδυναμία σύνδεσης με τον server.
Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: dimvam on May 17, 2008, 12:07:00 pm Παιδιά θα ήθελα να ρωτήσω αν μπορέσατε να κάνετε "ομάδα"για την υποβολή της εργασίας γιατί εμένα μου λέει αδυναμία σύνδεσης με τον server. Αυτή τη στιγμή πρέπει να έχει πρόβλημα ο σέρβερ. Προσπάθησε αργότερα.Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: dimvam on May 17, 2008, 12:38:47 pm Έχω γράψει τον παρακάτω κώδικα και έχω το εξής πρόβλημα: Δεν ξέρω μετά το μέγεθος του πίνακα που δημιούργησα!! :D :D
Δεν ξέρω αν υπάρχει η εντολή sizeof(Όνομα_Πίνακα) το δοκίμασα πάντως και αυτό και δε δουλεύει. Τον κώδικα που ανέβασε ένας συνάδελφος πριν, δεν τον πολυκαταλαβαίνω, και επίσης νομίζω (δεν είμαι σίγουρος) πως αποθηκεύει κάποια τιμή σε στοιχείο του πίνακα, ενώ εκεί εγώ θέλω να βάλω την τιμή του σήματος εκπομπής (που εδώ δημιουργούνται αυτόματα από την count). Καμιά σκέψη;; Code: Station=(int **)malloc(N*sizeof(int *) ); Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: AgentCain on May 17, 2008, 12:54:51 pm Έχω γράψει τον παρακάτω κώδικα και έχω το εξής πρόβλημα: Δεν ξέρω μετά το μέγεθος του πίνακα που δημιούργησα!! :D :D Δεν ξέρω αν υπάρχει η εντολή sizeof(Όνομα_Πίνακα) το δοκίμασα πάντως και αυτό και δε δουλεύει. Τον κώδικα που ανέβασε ένας συνάδελφος πριν, δεν τον πολυκαταλαβαίνω, και επίσης νομίζω (δεν είμαι σίγουρος) πως αποθηκεύει κάποια τιμή σε στοιχείο του πίνακα, ενώ εκεί εγώ θέλω να βάλω την τιμή του σήματος εκπομπής (που εδώ δημιουργούνται αυτόματα από την count). Καμιά σκέψη;; Μπορείς να κάνεις έναν μονοδιάστατο δυναμικό πίνακα ακεραίων όπου στην αντίστοιχη θέση με αυτή του σταθμού θα καταχωρείς το μέγεθος της κάθε γραμμής του δυσδιάστατου πίνακα. Δοκίμασα και γω με sizeof() αλλά δεν δουλεύει. Ίσως η sizeof να λειτουργεί μόνο σε στατικούς πίνακες. Με τον μονοδιάστατο το πρόβλημα λύθηκε και το πρόγραμμα τρέχει like it should. Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: dimvam on May 17, 2008, 13:29:03 pm Οκ thanks!
Και ο Emfanever το ίδιο κάνει στο προηγούμενο παράδειγμα. Τώρα έγινε κατανοητό. Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: anonymous-root on May 17, 2008, 21:22:32 pm Εκεί που λέει για Μ σήματα:
η περίοδος (τ) θα είναι για Μ σήματα δηλαδή (0<τ<Μ) ή θα είναι αυθαίρετη και σε κάθε περίοδο θα διαβάζονται Μ σήματα; Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Emfanever on May 17, 2008, 21:38:23 pm Έτσι όπως το καταλαβαίνω εγώ:
Θα ζητάει το πρόγραμμα τον αριθμό των εισερχόμενων σημάτων (Μ) και στη συνέχεια για καθένα από αυτά τα Μ σήματα θα ζητάει την τιμή . Δλδ, for (i=0;i<M;i++) printf("Dwse timh..."); κ.τ.λ Μετά από αυτό εκτυπώνεται ο πίνακας των μη αυθεντικών σημάτων και τερματίζεται το πρόγραμμα... Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: vasso on May 17, 2008, 21:42:56 pm ουφ... προγραμμάτισα και τρέχει κανονικά μέχρι το "Αν ένα σήμα δεν αναγνωριστεί.."
ο προγραμματισμός είναι ο πιο ευχάριστος τρόπος να καις εγκεφαλικά κύτταρα.. ριτσαρτζινγ... Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: vasso on May 17, 2008, 21:43:41 pm Λάζαρε,Μ είναι η περίοδος. Μην μπερδεύεσαι, το Τ εννοεί...
Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: fourier on May 18, 2008, 01:52:55 am Πολυ ευκολη αυτη η εργασια, κατι δεν παει καλα εδω........... 2 ωρες ασχοληθηκα στην ουσια και σχεδον τελειωσα, μονο το κομματι της realloc εμεινε, αλλα το αφηνω για αυριο...
Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: vasso on May 18, 2008, 02:52:21 am Πολυ ευκολη αυτη η εργασια, κατι δεν παει καλα εδω........... 2 ωρες ασχοληθηκα στην ουσια και σχεδον τελειωσα, μονο το κομματι της realloc εμεινε, αλλα το αφηνω για αυριο... +1 :) Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Γιώργος on May 18, 2008, 03:14:16 am Βασικά είχε καλή εκφώνηση. :)
Γι' αυτό κι έβγαινε πιο χαλαρά. :) Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: vasso on May 18, 2008, 03:39:41 am Βασικά δεν ήθελε ούτε μια συναρτησούλα για πλάκα. Μόνο δυναμική δέσμευση εξέταζε...
Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: oMpixlas on May 18, 2008, 11:50:04 am Loipon... Akouste ti ekana na me peite an einai swsto...
(L einai o synolikos arithmos twn sthlwn... dhladh an se mia grammh exei 5, sthn allh exei 3 kai sthn allh exei 8 o L=5+3+8) int Z=N+L; P=(float**)malloc(Z*sizeof(float)); Kai prepei na einai swsto dioti efoson ta apothikeyei sthn mnhmh san se seira ara to mono pou exeis na kaneis einai na ftiakseis enan "monodiastato" pinaka apo bytes pou exei N+L stoixeia... Ki epeishs... as mou ekshghsei kapoios to "Ένα σήμα αναγνωρίζεται ως αυθεντικό, όταν βρεθεί η τιμή του διαφέρει λιγότερο από έναν αριθμό e από μία από τις προκαθορισμένες τιμές του πίνακα." Eimai sigouros twa pia pws den kserei na ekfrazetai o anthrwpos... Nohmatika den vgazei nohma... Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: anonymous-root on May 18, 2008, 14:38:52 pm Λάζαρε,Μ είναι η περίοδος. Μην μπερδεύεσαι, το Τ εννοεί... κάπως έτσι δηλαδή; Code: for (t=0;t<m;t++) { Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Emfanever on May 18, 2008, 15:00:15 pm Loipon... Akouste ti ekana na me peite an einai swsto... (L einai o synolikos arithmos twn sthlwn... dhladh an se mia grammh exei 5, sthn allh exei 3 kai sthn allh exei 8 o L=5+3+8) int Z=N+L; P=(float**)malloc(Z*sizeof(float)); Kai prepei na einai swsto dioti efoson ta apothikeyei sthn mnhmh san se seira ara to mono pou exeis na kaneis einai na ftiakseis enan "monodiastato" pinaka apo bytes pou exei N+L stoixeia... Ki epeishs... as mou ekshghsei kapoios to "Ένα σήμα αναγνωρίζεται ως αυθεντικό, όταν βρεθεί η τιμή του διαφέρει λιγότερο από έναν αριθμό e από μία από τις προκαθορισμένες τιμές του πίνακα." Eimai sigouros twa pia pws den kserei na ekfrazetai o anthrwpos... Nohmatika den vgazei nohma... Αν L είναι ο συνολικός αριθμός στηλών όπως εξηγείς τότε ο πίνακας έχει L στοιχεία όχι N+L Για το 2ο δες εδώ (http://www.thmmy.gr/smf/index.php?topic=24495.msg464436#msg464436). κάπως έτσι δηλαδή; Code: for (t=0;t<m;t++) { ;) Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Balanar... on May 18, 2008, 15:04:16 pm Ξέρει κανείς ποιά είναι η συνάρτηση για την απόλυτη τιμή?Στην math.h βρίσκεται?
Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Emfanever on May 18, 2008, 15:08:27 pm Ναι είναι στο math.h και λέγεται abs( ) . Aν θες για float -> fabs
Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: fourier on May 18, 2008, 15:09:08 pm Ξέρει κανείς ποιά είναι η συνάρτηση για την απόλυτη τιμή?Στην math.h βρίσκεται? Για float/double ειναι η fabs(), και βρισκεται στο math.h edit: Με προλαβες :P Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: antonios on May 18, 2008, 15:44:04 pm Παιδιά, κάτι ακόμη, υπάρχει καμία συμβουλή για το πώς θα κάνουμε τον δεύτερο πίνακα με τις συχνότητες που δεν βρέθηκαν??
Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: AgentCain on May 18, 2008, 15:53:16 pm Παιδιά, κάτι ακόμη, υπάρχει καμία συμβουλή για το πώς θα κάνουμε τον δεύτερο πίνακα με τις συχνότητες που δεν βρέθηκαν?? Με malloc κάνεις έναν πίνακα μεγέθους 1Χ1 Μετά με realloc αυξάνεις το μέγεθος κατά 1 κάθε φορά που βρίσκεις ένα σήμα που δεν αναγνωρίζεται. Δεν ξέρω αν η realloc δουλεύει σε στατικούς (δλδ να κάνεις αρχικά έναν στατικό με μέγεθος 1Χ1 και μετά να αλλάξεις το μέγεθός του) διότι στις σημειώσεις αναφέρεις ότι η realloc αυξάνει το μέγεθος πίνακα που δημιουργήθηκε με realloc. Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Emfanever on May 18, 2008, 15:58:07 pm Στο e-thmmy παρόλο που έχω κάνει ομάδα, δε μπορώ να ανεβάσω την εργασία. Έχετε και εσείς το ίδιο πρόβλημα ακόμα? :-\
Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: AgentCain on May 18, 2008, 16:02:58 pm Στο e-thmmy παρόλο που έχω κάνει ομάδα, δε μπορώ να ανεβάσω την εργασία. Έχετε και εσείς το ίδιο πρόβλημα ακόμα? :-\ Δεν ξέρω αλλά το πρόβλημα πρέπει να είναι γενικότερο Πήγα να κάνω ομάδα στις πιθανότητες και δεν με άφησε. Μάλλον θα περιμένουμε μέχρι τη Δευτέρα-Τρίτη Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: vasso on May 18, 2008, 16:47:56 pm Αντί για να καλέσετε τη συνάρτηση του απόλυτου μπορείτε να χρησιμοποιήσετε μια μαγκιά που έχει η c αλλά όλοι την προσπερνάνε σαν ψιλά γράμματα. Τη λένε if-then-else και λειτουργεί έτσι:
p=(x-a>0)?(x-a):(a-x); σημαίνει: δώσε στο p την τιμη (χ-α) αν είναι θετική, αλλιώς δώσε την τιμή (a-x). Λιγότερες συναρτήσεις, πιο ελαφρύ και γρήγορο το πρόγραμμα. Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: oMpixlas on May 18, 2008, 17:43:58 pm Loipon... Akouste ti ekana na me peite an einai swsto... (L einai o synolikos arithmos twn sthlwn... dhladh an se mia grammh exei 5, sthn allh exei 3 kai sthn allh exei 8 o L=5+3+8) int Z=N+L; P=(float**)malloc(Z*sizeof(float)); Kai prepei na einai swsto dioti efoson ta apothikeyei sthn mnhmh san se seira ara to mono pou exeis na kaneis einai na ftiakseis enan "monodiastato" pinaka apo bytes pou exei N+L stoixeia... Ki epeishs... as mou ekshghsei kapoios to "Ένα σήμα αναγνωρίζεται ως αυθεντικό, όταν βρεθεί η τιμή του διαφέρει λιγότερο από έναν αριθμό e από μία από τις προκαθορισμένες τιμές του πίνακα." Eimai sigouros twa pia pws den kserei na ekfrazetai o anthrwpos... Nohmatika den vgazei nohma... Αν L είναι ο συνολικός αριθμός στηλών όπως εξηγείς τότε ο πίνακας έχει L στοιχεία όχι N+L Για το 2ο δες εδώ (http://www.thmmy.gr/smf/index.php?topic=24495.msg464436#msg464436). vazw kai to N giati tha kataxwrei kai \0... all den kserw kai pali... mallon dikio exeis... tha to dw an einai... thnx gia thn apnthsh Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Emfanever on May 18, 2008, 17:47:17 pm To \0 το βάζει στα strings. Εδώ δεν παίζει κάτι τέτοιο!
Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: antonios on May 18, 2008, 18:01:53 pm Εχω γράψει αυτό για να κάνω τον έλεγχο, που χρειάζεται στο τελευταιο κομμάτι του προγράμματος, αλλά δεν δουλεύει..... Μήπως μπορεί να βοηθήσει κανείς πιο έμπειρος??
for (i=0;i<M;i++){ printf("Dose tin endeixi tou %d simatos\n", i+1); scanf ("%f", &timi); for (j=0;j<n;j++){ for (k=0;k<stathmoi;j++){ p=timi-stathmoi[j]; if (p<0) p=stathmoi[j]-timi; if (p<timi_e) printf("H timi pou dosate antistoixei ston Stathmo %d kai ton aisthitira %d", j+1, k+1); break; } } Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: zeus90 on May 18, 2008, 18:56:44 pm Στο e-thmmy παρόλο που έχω κάνει ομάδα, δε μπορώ να ανεβάσω την εργασία. Έχετε και εσείς το ίδιο πρόβλημα ακόμα? :-\ Δεν ξέρω αλλά το πρόβλημα πρέπει να είναι γενικότερο Πήγα να κάνω ομάδα στις πιθανότητες και δεν με άφησε. Μάλλον θα περιμένουμε μέχρι τη Δευτέρα-Τρίτη Το πρόβλημα πρέπει να έχει λυθεί. Τουλάχιστον εγώ πριν από λίγο κατάφερα να κάνω ομάδα στις Πιθανότητες..... :P Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: tomshare3 on May 18, 2008, 19:35:59 pm Εχω γράψει αυτό για να κάνω τον έλεγχο, που χρειάζεται στο τελευταιο κομμάτι του προγράμματος, αλλά δεν δουλεύει..... Μήπως μπορεί να βοηθήσει κανείς πιο έμπειρος?? for (i=0;i<M;i++){ printf("Dose tin endeixi tou %d simatos\n", i+1); scanf ("%f", &timi); for (j=0;j<n;j++){ for (k=0;k<stathmoi;j++){ p=timi-stathmoi[j]; if (p<0) p=stathmoi[j]-timi; if (p<timi_e) printf("H timi pou dosate antistoixei ston Stathmo %d kai ton aisthitira %d", j+1, k+1); break; } } εχεισ μπερδεψει τις μεταβλητες στα for... το i το χρησημοποιεις για τις επαναληψεις του Μ.... ο πινακας μετα θελει δεικτες j,k.. Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: anonymous-root on May 18, 2008, 23:12:11 pm Αυτό είναι ένα παράδειγμα για το πως περίπου θα γίνει ο πίνακας: Code: #include <stdio.h> Στο κανονικό πρόγραμμα προφανώς οι τιμές δε θα δίνονται από τη rand() . μήπως πρέπει να είναι float **stathmoi; int *aisth; Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Emfanever on May 18, 2008, 23:26:43 pm Μάλλον ,ανάλογα με το τι θέλει ο καθένας.
Στο πρόγραμμα μου float το έκανα , απλά αυτό ήταν ένα πρόχειρο παράδειγμα και το έβαλα int. Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: anonymous-root on May 18, 2008, 23:28:52 pm Μάλλον ,ανάλογα με το τι θέλει ο καθένας. Στο πρόγραμμα μου float το έκανα , απλά αυτό ήταν ένα πρόχειρο παράδειγμα και το έβαλα int. και οι aisth int ; γιατί όταν τα βάζω και τα 2 φλοατ μου μετραει μόνο για τον 1ο αισθητήρα κάθε σπιτιού :D Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Emfanever on May 18, 2008, 23:39:20 pm O aisth int αφού αποθηκεύει τον αριθμό των στοιχείων κάθε γραμμής.
Code: #include <stdio.h> Δε δουλεύει αυτό??Έκανα μερικές προσθήκες Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: eddie on May 18, 2008, 23:59:57 pm Να ρωτήσω κι εγώ κάτι??
Στο παρακάτω μου βγάζει ο compiler "syntax error", αλλά δεν μπορώ να βρω τι φταίει.... Ο b είναι ο πίνακας με τις συχνότητες που δεν αντιστοιχούν πουθενά και ο p αυτός με τις αρχικές συχνότητες... Code: if((b[i]=(float *)realloc(float **p,1*sizeof(float )))==NULL) Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Emfanever on May 19, 2008, 00:20:15 am Αφού μια φορά έχεις float * και μετά float ** κ επίσης βάλε exit(1)
Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: ripper_george on May 19, 2008, 02:24:22 am 3 questions
1) Όταν κάνουμε δέσμευση για 2χ2 πίνακα, όταν θα κάνουμε free... Έστω έχουμε ορίσει **Α. Κάνουμε for (i....) { free(A) } και μετά Free(A) Η μπορούμε να πούμε κατευθείαν να πούμε Free(A) ????? 2) Επίσης, για το μέγεθος κάθε γραμμής του πίνακα, δεν θα ήταν πιο αποδοτικό να καλούσαμε την _msize () ????? Αλλιώς θα χρειαστούμε να κάνουμε δέσμευση ενός ακόμη πίνακα για το μέγεθος κάθε γραμμής (αισθητήρες κάθε σταθμού).... 3) Τέλος, αν η realloc αποτύχει, για να κάνω Free πρέπει να έχω αποθηκεύσει τον πίνακα πριν κάνω realloc και να να κάνω αυτόν realloc η μπορώ κατευθείαν να κάνω free την realloc???? Δλδ: F=malloc(k*sizeof()); F=realloc(F,n*sizeof()); if (F==NULL) { free(F); } ..... Είναι σωστό??? Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Emfanever on May 19, 2008, 03:12:07 am 1)Freeing up the allocated memory
We should not forget to free the memory which we have allocated dynamically, starting from the lowest level. i.e, in the reverse order of allocations. If we free up the higher level pointers first the lower level pointers would be lost and we would not be able to free up the memory allocated to those pointers. This would lead to memory leaks. Given below is how we should free up the memory. Code: //freeing up memory allocated to second level pointers 2) H _msize μπορεί να κάνει δουλειά ,αλλά δεν υπάρχει σε όλους τους compilers 3) To έψαξα αρκετά και βρήκα τα εξής: If realloc cannot find enough space at all, it returns a null pointer, and leaves the previous region allocated. [footnote] Therefore, you usually don't want to immediately assign the new pointer to the old variable. Instead, use a temporary pointer: Code: #include <stdio.h> if (pointer==NULL){ printf("no memory"); exit(1); } To πρόγραμμα τερματίζεται και επιστρέφουμε στο λειτ. σύστημα ,άρα απελευθερώνεται αυτόματα η μνήμη.Άρα η χρήση ενδιάμεσου pointer όπως λέει παραπάνω είναι περιττή. Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: tomshare3 on May 19, 2008, 12:14:53 pm http://alexander.ee.auth.gr:8083/eTHMMY/archive%5C102%5CdownloadFile%5C3137%5CAskiseis-08%20kai%2009-05-08.zip
στο ετημμυ εχει αναλυτικο παραδειγμα για δυναμικη δεσμευση 1διαστατου κ 2διαστατου πινακα και για την χρηση της free! Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: solli144 on May 19, 2008, 14:33:04 pm παιδια πρέπει οπωσδήποτε στη malloc να γίνεται typecasting? Δηλαδή : p=(* int)malloc(N);
Νομίζω ο Κορτέσης είχε πει ότι γίνεται αυτόματα αν η p έχει δηλωθεί : int *p δηλαδή ότι ο τυπος void γίνεται αυτόματα int σε τέτοια εντολή εκχώρισης. διορθώστε με αν κανω λάθος Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: vasso on May 19, 2008, 14:44:27 pm παιδια πρέπει οπωσδήποτε στη malloc να γίνεται typecasting? Δηλαδή : p=(* int)malloc(N); Νομίζω ο Κορτέσης είχε πει ότι γίνεται αυτόματα αν η p έχει δηλωθεί : int *p δηλαδή ότι ο τυπος void γίνεται αυτόματα int σε τέτοια εντολή εκχώρισης. διορθώστε με αν κανω λάθος γενικά ναι, πρέπει. Ο κομπάιλερ πετάει σφάλμα, απ' όσο ξέρω... Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: vasso on May 19, 2008, 14:51:24 pm θυμίστε μου λίγο... ανέφερε πουθενά τι τύπου θα είναι τα εισερχόμενα σήματα; δηλαδή αν τα έβαλα ιντ, πειράζει;
Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: vasso on May 19, 2008, 14:52:16 pm μπάι δε γουέι, το κομμάτι με την ριαλλοκ είναι ακριβώς 3 σειρούλες κώδικα μέσα σε ένα ιφ...
Αν σας πήρε πάνω από 10 μέσατζ μι.. :) Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Emfanever on May 19, 2008, 14:54:48 pm θυμίστε μου λίγο... ανέφερε πουθενά τι τύπου θα είναι τα εισερχόμενα σήματα; δηλαδή αν τα έβαλα ιντ, πειράζει; Δε νομίζω να πειράζει απλά αν έχεις int τα εισερχόμενα να είναι int και τα στοιχεία του πίνακαTitle: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: vasso on May 19, 2008, 14:59:48 pm Βασικά έβαλα τα σήματα των συναγερμών να είναι int και τα εισερχόμενα float, μια και οι πρώτες τιμές είναι μανίσιες ενώ οι άλλες μπορεί να έχουν μέσα θόρυβο. Άλλωστε, μόνο με int τιμές δεν έχει νόημα το e. (Βασικά βαριέμαι να αλλάξω όλες τις τιμές... )
Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: fourier on May 19, 2008, 19:26:57 pm Καποιο καλο παιδι που ξερει απο realloc μπορει να εντοπισει τι λαθος υπαρχει στο πιο κατω κομματι του κωδικα και την 5η φορα που εκτελειται η realloc μου πεταει σφαλμα?
Code: printf("Den anagnwristhke to shma\n\n"); Η q ειναι μετρητης λανθασμενων σηματων, με αρχικη τιμη μηδεν. Στο πρωτο λαθος (aka μη αναγνωρισιμο) σημα πληρουται η συνθηκη του if οποτε δημιουργειται με τη malloc δυναμικος πινακας μηκους 1, και στο μοναδικο κελι του, το 0-ικο, καταχωρειται το σημα, ενω ο μετρητης γινεται q=1. Στο δευτερο λαθος σημα, η συνθηκη δεν πληρουται αρα περναμε στο else, οπου η realloc μεγαλωνει τον πινακα κατα 1, δινει στο καινουργιο κελι την τιμη του σηματος, μετα μεγαλωνουμε το μετρητη κατα ενα και φευγουμε... Μετα απο 5 λανθασμενα σηματα μου πεταει σφαλμα......... Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: fourier on May 19, 2008, 19:50:45 pm Βασικα καλυτερα να ανεβασω ολοκληρο τον κωδικα μου:
Code: #include <stdio.h> Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Emfanever on May 19, 2008, 19:53:27 pm Έβαλα έλεγχο για NULL και φταίει αυτό. Δηλαδή δεν υπάρχει άλλος χώρος μάλλον και επιστρέφει τιμή NULL
Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: fourier on May 19, 2008, 19:54:14 pm Έβαλα έλεγχο για NULL και φταίει αυτό. Δηλαδή δεν υπάρχει άλλος χώρος μάλλον και επιστρέφει τιμή NULL :o :o :o :o :o :o :o :o :o :o :o :o :o :o Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Emfanever on May 19, 2008, 20:01:44 pm Αλλά μπορεί από λάθος να επιστρέφει NULL. Γιατί όταν έτρεχα το πρόγραμμά σου μου έβγαζε σφάλμα λόγω NULL μετά από λίγο ,το δικό μου όμως όχι. Θα το κοιτάξω καλύτερα.
Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Emfanever on May 19, 2008, 20:15:00 pm Αυτό είναι:
else { WRONG = realloc(WRONG,(q+1)*sizeof(float)); WRONG[q] = input; q++; } Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: fourier on May 19, 2008, 20:20:02 pm Κατι τετοια κωλολαθη θα μας φανε στο τελος... 1000 thanx :)
Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Larry_Flynt on May 19, 2008, 21:22:45 pm Στο τέλος πρέπει να κάνουμε free?
Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Emfanever on May 19, 2008, 21:27:09 pm Στα πλαίσια του μαθήματος δεν είναι απαραίτητο και μάλλον δεν έχει πρακτική σημασία ,αλλά εγώ το βάζω μήπως το θέλει
Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: vasso on May 20, 2008, 06:56:52 am Γιατί χρειάζεται το WRONG = realloc(WRONG,(q+1)*sizeof(float)); ???
Μήπως θα μπορούσε να γίνει απλά WRONG =(float *) realloc(WRONG,(q+1)); και βασικά γιατί δεν αυξάνεις το q πριν τη ριαλοκ έτσι ώστε να μη βάλεις την πράξη στην παρένθεση, παρά μόνο το q... δεν διάβασα όλο το πρόγραμμά σου, σόρι είναι ώρα δύσκολη... Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Άγνωστος Χ on May 20, 2008, 08:21:21 am Παιδιά σχετικά με τον αριθμό e, εννοεί ότι θα ορίσουμε εμείς ένα αριθμό έτσι ώστε ένα σήμα που θα έχει τιμή ας πούμε 5 και ανιχνευτεί ως τιμή του το 5,3 λόγω θορύβου να αναγνωρίζεται ότι προήλθε από το 5;
Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: furygl on May 20, 2008, 11:57:14 am http://www.thmmy.gr/smf/index.php?topic=24495.msg464152#msg464152
den katalabeno kati :-[ otan dilonis to n san arithmo spition kai meta to xrisimopieis gia tous aisthitires me to i=0;i<n;i++ den ine lathos efoson dinis oti osa ine ta spitia ine kai oi aisthitires??? :-\ episis dinontas se kathe stixio tou pinaka monadiki timi linete to problima me to e( sima m - monadiki timi<e) ala meta pos briskis auti i monadiki timi se pia stili kai grami aniki??? :-\ Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: johnnysp on May 20, 2008, 11:58:17 am Παιδιά σχετικά με τον αριθμό e, εννοεί ότι θα ορίσουμε εμείς ένα αριθμό έτσι ώστε ένα σήμα που θα έχει τιμή ας πούμε 5 και ανιχνευτεί ως τιμή του το 5,3 λόγω θορύβου να αναγνωρίζεται ότι προήλθε από το 5; Κάτι τέτοιο είναι...απλά η απόκλιση πρέπει να είναι λίγο πιο μικρή.Απ ότι νομίζω e=0.001Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: lefos on May 20, 2008, 12:54:26 pm Καλημέρα! Το πρόγραμμα μου τρέχει κανονικά μέχρι μιας τιμής αισθητηρίων και μιας τιμής εισερχόμενων σημάτων. Για περισσότερες μου βγάζει σφάλμα κατά την εκτέλεση (αφού εισάγω τα δεδομένα). Παίζει να είναι κάποιο πρόβλημα με τη μνήμη( να μην υπάρχει αρκετή ) ή είναι πρόβλημα κώδικα; Δεν μπορώ βέβαια να καταλάβω γιατί να φταίει ο κώδικας αφού σε μικρές τιμές λειτουργεί κανονικά..
Ευχαριστώ Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Larry_Flynt on May 20, 2008, 13:03:39 pm Γιατί χρειάζεται το WRONG = realloc(WRONG,(q+1)*sizeof(float)); ??? Μήπως θα μπορούσε να γίνει απλά WRONG =(float *) realloc(WRONG,(q+1)); και βασικά γιατί δεν αυξάνεις το q πριν τη ριαλοκ έτσι ώστε να μη βάλεις την πράξη στην παρένθεση, παρά μόνο το q... δεν διάβασα όλο το πρόγραμμά σου, σόρι είναι ώρα δύσκολη... Εμένα μου κολλούσε το πρόγραμμα όταν δεν έβαζα sizeof(float) μέσα. Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: furygl on May 20, 2008, 13:26:17 pm for (i=0;i<n;i++)
spiti=(int *)malloc((aisth)*sizeof(int)); auto pos litourgi???? Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: vasso on May 20, 2008, 15:27:44 pm τώρα γιατί μ το κάνατε αυτό και ξενέρωσα; :P μια χαρά δούλευε το πρόγραμμα με το τεστάκι με τα 2 σπίτια και τους 5 αισθητήρες..
ΑΑΑΑΑΑντε τώρα να βρεις τι σκατά φταίει... Αλήθεια, όταν περνάμε τις τιμές για τα σήματα που ενεργοποιούν τους αισθητήρες έβαλε κανένας έλεγχο αν το σήμα αυτό έχει ξαναπεραστεί για να τυπώσει σφάλμα; ή θεωρείται ότι ο χρήστης δεν είναι βλάκας (μέγα λάθος στον προγραμματισμό) και ξέρει; Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Larry_Flynt on May 20, 2008, 15:44:18 pm Εγώ στις παλιές έβαζα, αλλά δε βρίσκω το λόγο - είναι εντελώς ρουτίνα, και από τις λύσεις που δίνει ο καθηγητής...
Εγώ ακολουθώ το format του :D Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: dimvam on May 20, 2008, 17:32:31 pm Πέρα από τα free που βάζουμε και ελευθερώνουμε τους πίνακες, τα Όνομα=NULL χρειάζονται; Μπορεί να εξηγήσει κάποιος σύντομα τι σημαίνει;
Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Γιώργος on May 20, 2008, 18:12:18 pm Πέρα από τα free που βάζουμε και ελευθερώνουμε τους πίνακες, τα Όνομα=NULL χρειάζονται; Μπορεί να εξηγήσει κάποιος σύντομα τι σημαίνει; Όταν κάνεις FREE, τότε η θέση μνήμης επιστρέφεται στο λειτουργικό σύστημα. Όμως ο δείκτης σου εξακολουθεί να δείχνει σ' εκείνη τη θέση μνήμης, στην οποία όμως... δεν έχεις πρόσβαση!! Δηλαδή τον αφήνεις "ξεκρέμαστο" (το αποκαλούμε "dangling pointer").Αν δοκιμάσεις να τον προσπελάσεις, θα δείχνει σε μία θέση μνήμης στην οποία δεν έχεις πρόσβαση, ή μπορεί μάλιστα να την έχει δώσει το λειτουργικό σύστημα και σε άλλον χρήστη!! Οπότε γίνεται λίγο ψιλομπάχαλο η κατάσταση. Γι' αυτό το λόγο, "γειώνεις" το δείκτη σου στο NULL για να 'χεις το κεφάλι σου ήσυχο. :) Περάστε απ' το ταμείο φεύγοντας! :P Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: dimvam on May 20, 2008, 18:26:31 pm Πέρα από τα free που βάζουμε και ελευθερώνουμε τους πίνακες, τα Όνομα=NULL χρειάζονται; Μπορεί να εξηγήσει κάποιος σύντομα τι σημαίνει; Όταν κάνεις FREE, τότε η θέση μνήμης επιστρέφεται στο λειτουργικό σύστημα. Όμως ο δείκτης σου εξακολουθεί να δείχνει σ' εκείνη τη θέση μνήμης, στην οποία όμως... δεν έχεις πρόσβαση!! Δηλαδή τον αφήνεις "ξεκρέμαστο" (το αποκαλούμε "dangling pointer").Αν δοκιμάσεις να τον προσπελάσεις, θα δείχνει σε μία θέση μνήμης στην οποία δεν έχεις πρόσβαση, ή μπορεί μάλιστα να την έχει δώσει το λειτουργικό σύστημα και σε άλλον χρήστη!! Οπότε γίνεται λίγο ψιλομπάχαλο η κατάσταση. Γι' αυτό το λόγο, "γειώνεις" το δείκτη σου στο NULL για να 'χεις το κεφάλι σου ήσυχο. :) Περάστε απ' το ταμείο φεύγοντας! :P Ok! Thanx! Και μία άλλη ερώτηση σχετική, στον δισδιάστατο πίνακα **Station πρέπει να βάλουμε Code: Station=NULL; Γιατί λίγο που gogglisa έχει τόσα πολλά για τη NULL που χάθηκα. Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Γιώργος on May 20, 2008, 18:29:11 pm Νομίζω χωρίς να παίρνω κι όρκο, ένα:
Code: free(station); Αρκεί. Πολύ σπάνια χρησιμοποιώ free, οπότε δεν στο λέω και 100% στα σίγουρα. :) Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: vasso on May 20, 2008, 19:21:52 pm Ναι, και βασικά για τον Κορτέση αυτό είναι μια ανούσια λεπτομέρεια που δεν έβαλε καν στις σημειώσεις του, οπότε ειδικά για τις εργασίες του είναι περιττό :)
Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Emfanever on May 20, 2008, 20:29:28 pm Νομίζω χωρίς να παίρνω κι όρκο, ένα: Code: free(station); Αρκεί. Πολύ σπάνια χρησιμοποιώ free, οπότε δεν στο λέω και 100% στα σίγουρα. :) 'Όχι δεν αρκεί. Το έψαξα στο google και η απάντηση έχει δοθεί ήδη σε προηγούμενη σελίδα. http://www.thmmy.gr/smf/index.php?topic=24495.msg465423#msg465423 Επίσης υπάρχει σε ένα από τα παραδείγματα στο ethmmy Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Γιώργος on May 20, 2008, 20:30:56 pm Indeed, οι "στύλες" έτσι δεν απελευθερώνονται όπως είπα. Thanks! :)
Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Papatanasis on May 20, 2008, 20:34:15 pm Η fabs δεχεται ως ορισματα τις δυο τιμες των οποιων ψαχνουμαι την απολυτη διαφορα(fabs(a,x)) ή
μεσα στην παρενθεση γραφουμε την αφαιρεση(fabs(x-a))??? Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Γιώργος on May 20, 2008, 20:35:18 pm Code: fabs(a-b) Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Emfanever on May 20, 2008, 20:36:34 pm for (i=0;i<n;i++) Κάθε γραμμή αντιστοιχεί σε ένα σπίτι και ο αριθμός στοιχείων κάθε γραμμής είναι ο αριθμός αισθητήρων του αντίστοιχου σπιτιού.spiti=(int *)malloc((aisth(i))*sizeof(int)); auto pos litourgi???? Ο πίνακας aisth(i) περιέχει τον αριθμό στοιχείων(αισθητήρων) κάθε γραμμής. Έτσι δεσμεύεις ακριβώς τόσο χώρο όσος είναι ο αριθμός αισθητήρων Για τη γραμμή μηδεν aisth[0] στοιχεία Για τη γραμμή ένα aisth[1] στοιχεία κ.ο.κ. Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: daydreamer on May 21, 2008, 05:17:30 am Όταν δημιουργούμε τον πίνακα όπου καταχωρούμε τις τιμές που δε βρέθηκαν να ταιριάζουν με κάνενα αισθητήρα, δεν είναι τελείως περιττός ο έλεγχος:
WRONG=(float *)malloc(sizeof(float)); if (WRONG==NULL) { printf("den yparxei mnimi"); return(0); } εφόσον ΑΡΧΙΚΑ πρόκειται για πίνακα με ένα στοιχείο; ;) Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: zeus90 on May 21, 2008, 14:04:43 pm Πρακτικά 99.99999% δεν χειάζεται.Θεωρητικά όμως είναι χρήσιμος αυτός ο έλεγχος...
Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Anyparktos on May 21, 2008, 15:35:22 pm Αφού διαβαστούν οι τιμές των στοιχείων του πίνακα να διαβάζεται ένας ακέραιος αριθμός Μ και για μια περίοδο από Μ εισερχόμενα σήματα να διαβάζεται η τιμή του εισερχόμενου σήματος και να αναζητείται στον πίνακα και να εκτυπώνεται ο σταθμός και η θέση τού αισθητήρα για τον για τον οποίο εκπέμφθηκε το σήμα. Τώρα τι λέει εδώ ο Κορτεσης ξέρει κανείς να μου πει?Δεν καταλαβαίνω όσο και αν προσπαθώ... Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: fourier on May 21, 2008, 15:58:32 pm Αφού διαβαστούν οι τιμές των στοιχείων του πίνακα να διαβάζεται ένας ακέραιος αριθμός Μ και για μια περίοδο από Μ εισερχόμενα σήματα να διαβάζεται η τιμή του εισερχόμενου σήματος και να αναζητείται στον πίνακα και να εκτυπώνεται ο σταθμός και η θέση τού αισθητήρα για τον για τον οποίο εκπέμφθηκε το σήμα. Τώρα τι λέει εδώ ο Κορτεσης ξέρει κανείς να μου πει?Δεν καταλαβαίνω όσο και αν προσπαθώ... Θα ζητησεις εναν αριθμο Μ, ο οποιος θα ειναι ο αριθμος των εισερχομενων σηματων σου. Μετα, θα ζητησεις στη σειρα Μ εισερχομενα σηματα, για τα οποια το προγραμμα θα ψαχνει αν εντοπιζονται, μεσα στα ορια ενος σφαλματος e, στον πινακα των σηματων που εχεις καταχωρησει για καθε αισθητηρα. Εαν εντοπιστει, θα σου επιστρεφει την ταυτοτητα, δηλαδη τον αριθμο του σταθμου και του αισθητηρα. Διαφορετικα, θα μπαινει σε εναν νεο πινακα, τον οποιο θα σου εκτυπωσει στο τελος. Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Anyparktos on May 21, 2008, 17:32:56 pm Thanx man...Δεν μου λες τη συχνότητα των αισθητήρων όπως την έκανε ο Emfanever την κάνατε και οι υπόλοιποι με rand(random numbers etc...)?
Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: fourier on May 21, 2008, 17:34:06 pm Thanx man...Δεν μου λες τη συχνότητα των αισθητήρων όπως την έκανε ο Emfanever την κάνατε και οι υπόλοιποι με rand(random numbers etc...)? Οχι, τις ζηταω απο το πληκτρολογιο, καθεμια ξεχωριστα. Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: anonymous-root on May 21, 2008, 17:34:44 pm Thanx man...Δεν μου λες τη συχνότητα των αισθητήρων όπως την έκανε ο Emfanever την κάνατε και οι υπόλοιποι με rand(random numbers etc...)? Οχι, τις ζηταω απο το πληκτρολογιο, καθεμια ξεχωριστα. ++ Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Anyparktos on May 21, 2008, 17:36:38 pm Aghhh...Καλή ιδέα θα ταν όμως...Και νομίζω ότι δεν το διευκρινίζει ο Κορτ.
Τεσπα thanx again και στους δύο. Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: fourier on May 21, 2008, 17:40:50 pm Aghhh...Καλή ιδέα θα ταν όμως...Και νομίζω ότι δεν το διευκρινίζει ο Κορτ. Τεσπα thanx again και στους δύο. Εχμ: ......Κάθε γραμμή του πίνακα να έχει ακριβώς τόσες θέσεις όσοι είναι και οι αισθητήρες που εξυπηρετεί ο αντίστοιχος σταθμός. Αφού διαβαστούν οι τιμές των στοιχείων του πίνακα να διαβάζεται ένας ακέραιος αριθμός Μ και για μια περίοδο από..... ;) Παραθετω τη δικια μου εργασια οπως την ανεβασα χθες: Code: #include <stdio.h> Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Anyparktos on May 21, 2008, 18:03:28 pm Fourrier,you're a life saver...
Ευχαριστώ πάρα πολύ αδερφε... Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Emfanever on May 21, 2008, 18:13:08 pm Thanx man...Δεν μου λες τη συχνότητα των αισθητήρων όπως την έκανε ο Emfanever την κάνατε και οι υπόλοιποι με rand(random numbers etc...)? Αυτό είναι ένα παράδειγμα για το πως περίπου θα γίνει ο πίνακας: Code: #include <stdio.h> Στο κανονικό πρόγραμμα προφανώς οι τιμές δε θα δίνονται από τη rand() . Στο παράδειγμα μόνο έβαλα rand() επειδή βαριόμουν να το τελειώσω.Εξάλλου κάπου ποστάρω μια άλλη έκδοση όπου τις τιμές τις εισάγει ο χρήστης... http://www.thmmy.gr/smf/index.php?topic=24495.msg465350#msg465350 8) Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Anyparktos on May 21, 2008, 19:29:12 pm Sorry...Anyway,δεν είχα χρόνο να δω όλο το thread...
Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: solli144 on May 21, 2008, 20:47:27 pm μου βγάζει error το λειτουργικό στο εκτελέσιμο στο εξής σημείο:
if((la8os=(float *)malloc(sizeof(float))))==NULL){ printf("Den yparxei dia8esimh mnimi\n"); exit(1); } τι μπορει να φταίει? Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Larry_Flynt on May 21, 2008, 20:50:26 pm Σα να κλείνεις πολλές παρενθέσεις.
Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: solli144 on May 21, 2008, 20:59:47 pm τις παρανθέσεις τις έχω ελένξει
επίσης μόλις ανοίγω το exe η cpu πάει στο 100% Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Emfanever on May 21, 2008, 21:10:42 pm Σα να κλείνεις πολλές παρενθέσεις. Και μένα έτσι μου φαίνεται μήπως είναι έτσι? if((la8os=(float *)malloc(sizeof(float)))==NULL) { printf("Den yparxei dia8esimh mnimi\n"); exit(1); } Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Anyparktos on May 21, 2008, 21:16:36 pm Παιδιά ανέβασα κατα λάθος την εργασία όχι στην τελική μορφή της..Μετά διέγραψα τη δήλωση!Ξέρετε τι παίζει?Τώρα που έφτιαξα κι άλλη δήλωση στα στοιχεία της ομάδας δεν δείχνει αρχείο...
Αν δεν έχει πει τπτ ο Κορτέσης για τετοιες περιπτώσεις ας μου πει κάποιος το mail του είναι μεγάλη ανάγκη... Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: zeus90 on May 21, 2008, 21:22:37 pm stk@gen.auth.gr
Φοβάμαι πως θα σου ακυρώσει αυτήν την εργασία εφόσον ανέβασες 2 διαφορετικά αρχεία. Εκτός αν τον πείσεις ότι η πρώτη στάλθηκε κατά λάθος... Λίγο χλωμό πάντως....... :-\ Good luck!! :D Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Anyparktos on May 21, 2008, 21:27:16 pm Μα δεν ανέβασα ακόμα 2ο αρχείο!!!!Και διέγραψα τη δήλωση ομάδας με αποτέλεσμα τώρα που ξανακανα δηλωση να μου βγαζει οτι δεν εχω ανεβασει αλλο αρχειο...Του στειλα κ mail !(το βρηκα στο ετημμυ thanx anyway)
Παίζει να μου δώσει απάντηση ή οχι? Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: solli144 on May 21, 2008, 21:30:02 pm τελικά τα προβλήματα που είχα πρίν λύθηκαν απλά κάνοντας compile με τον Dev :P
μηπως ξέρει κανένας πως συντάσεται εκείνη η εντολή system(pause); ή κάπως έτσι για να μην κλείνει το παράθυρο της γραμμής των εντολών με το τέλος του προγράμματος?? ή τέλως πάντων κάποιν άλλον τρόπο για να μην γίνεται αυτο.... Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Emfanever on May 21, 2008, 21:35:01 pm stk@gen.auth.gr Φοβάμαι πως θα σου ακυρώσει αυτήν την εργασία εφόσον ανέβασες 2 διαφορετικά αρχεία. Εκτός αν τον πείσεις ότι η πρώτη στάλθηκε κατά λάθος... Λίγο χλωμό πάντως....... :-\ Good luck!! :D Τι το αγχώνεις το παιδί!? Κ εγώ το ίδιο έκανα και δεν υπάρχει πρόβλημα. Όταν διαγράφεις τη δήλωση διαγράφεται και το αρχείο. Η δήλωση εξακολουθεί να έχει τον ίδιο αριθμό αλλά στα ανεβασμένα αρχεία είναι κενό. Επίσης ,μπορείς να μη διαγράψεις τη δήλωση και να το ξαναανεβάσεις με το ίδιο όνομα (προφανώς) οπότε το καινούργιο θα αντικαταστήσει το παλιό αρχείο! Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Emfanever on May 21, 2008, 21:36:22 pm τελικά τα προβλήματα που είχα πρίν λύθηκαν απλά κάνοντας compile με τον Dev :P μηπως ξέρει κανένας πως συντάσεται εκείνη η εντολή system(pause); ή κάπως έτσι για να μην κλείνει το παράθυρο της γραμμής των εντολών με το τέλος του προγράμματος?? ή τέλως πάντων κάποιν άλλον τρόπο για να μην γίνεται αυτο.... Έτσι όπως γράφεις συντάσσεται και πρέπει να κάνεις include το stdlib.h edit : θέλει και "" Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Anyparktos on May 21, 2008, 21:37:40 pm stk@gen.auth.gr Φοβάμαι πως θα σου ακυρώσει αυτήν την εργασία εφόσον ανέβασες 2 διαφορετικά αρχεία. Εκτός αν τον πείσεις ότι η πρώτη στάλθηκε κατά λάθος... Λίγο χλωμό πάντως....... :-\ Good luck!! :D Τι το αγχώνεις το παιδί!? Κ εγώ το ίδιο έκανα και δεν υπάρχει πρόβλημα. Όταν διαγράφεις τη δήλωση διαγράφεται και το αρχείο. Η δήλωση εξακολουθεί να έχει τον ίδιο αριθμό αλλά στα ανεβασμένα αρχεία είναι κενό. Επίσης ,μπορείς να μη διαγράψεις τη δήλωση και να το ξαναανεβάσεις με το ίδιο όνομα (προφανώς) οπότε το καινούργιο θα αντικαταστήσει το παλιό αρχείο! Μέχρι να το περάσω το μάθημα μου φαίνεται θα σου στήσω άγαλμα Emfanever...Σ'ευχαριστώ αδερφέ,είχα φάει τη φρίκη της ζωής μου. :o Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: vasso on May 21, 2008, 21:43:07 pm system("pause");
:) Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: solli144 on May 21, 2008, 22:35:52 pm Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: zeus90 on May 22, 2008, 13:56:49 pm stk@gen.auth.gr Φοβάμαι πως θα σου ακυρώσει αυτήν την εργασία εφόσον ανέβασες 2 διαφορετικά αρχεία. Εκτός αν τον πείσεις ότι η πρώτη στάλθηκε κατά λάθος... Λίγο χλωμό πάντως....... :-\ Good luck!! :D Τι το αγχώνεις το παιδί!? Κ εγώ το ίδιο έκανα και δεν υπάρχει πρόβλημα. Όταν διαγράφεις τη δήλωση διαγράφεται και το αρχείο. Η δήλωση εξακολουθεί να έχει τον ίδιο αριθμό αλλά στα ανεβασμένα αρχεία είναι κενό. Επίσης ,μπορείς να μη διαγράψεις τη δήλωση και να το ξαναανεβάσεις με το ίδιο όνομα (προφανώς) οπότε το καινούργιο θα αντικαταστήσει το παλιό αρχείο! Μέχρι να το περάσω το μάθημα μου φαίνεται θα σου στήσω άγαλμα Emfanever...Σ'ευχαριστώ αδερφέ,είχα φάει τη φρίκη της ζωής μου. :o Σόρρυ αν σε άγχωσα αλλά έτσι όπως τα γράφει στο e-THMMY νόμιζα ότι ήταν πιο αυστηροί με το συγκεκριμένο θέμα... :-[ To άγαλμα (μην σου πω μνημείο) όλοι μαζί θα το χτίσουμε στον Emfanever!!!! :D Title: Re: [Δομημένος Πρ.] Εργασία Ε 2008 Post by: Anyparktos on May 25, 2008, 14:31:27 pm Mη μασάς δε με άγχωσες περισσότερο απ'όσο ήδη είχα αγχωθεί...Κι εγώ τα περίμενα πιο αυστηρά τα πράματα!
|