THMMY.gr

Μαθήματα Βασικού Κύκλου => Δομημένος Προγραμματισμός => Topic started by: Emfanever on May 08, 2008, 01:50:09 am



Title: [Δομημένος Προγ.] Εργασία D 2008
Post by: Emfanever on May 08, 2008, 01:50:09 am
Εργασία D 2008

Ένα τηλεφωνικό κέντρο εξυπηρετεί Ν συνδρομητές (µάξιμουµ 100), οι αριθμοί κλήσης των οποίων είναι καταχωρημένοι σε ένα πίνακα σε αύξουσα σειρά. Σε κάθε συνδρομητή αντιστοιχεί μια θύρα εξόδου ενώ το κέντρο διαθέτει Μ (µάξιμουµ 30) θύρες για εισερχόμενες κλήσεις.
Όταν υπάρχει μια εισερχομένη κλήση ελέγχεται αν υπάρχει διαθέσιμη θύρα εισόδου και αν όχι η κλήση απορρίπτεται. Σε διαφορετική περίπτωση αναζητείται ο καλούμενος αριθμός στον πίνακα των συνδρομητών και αν ο αριθμός δεν υπάρχει ή είναι απασχολημένος η κλήση απορρίπτεται, διαφορετικά η θέση του καλούμενου αριθμού στον πίνακα συνδρομητών καταχωρείται ως τιμή στην πρώτη διαθέσιμη θύρα εισόδου και ο συνδρομητής τίθεται σε κατάσταση απασχολημένος. Όταν τελειώσει η συνδιάλεξη εκκαθαρίζεται το περιεχόμενο της αντίστοιχης θύρας εισόδου και ο συνδρομητής μπαίνει σε κατάσταση διαθέσιμος.
Η αναζήτηση του αριθμού του συνδρομητή γίνεται με τον αλγόριθμο της δυαδικής ανίχνευσης. Συμφωνά με αυτόν ελέγχεται αν ο ζητούμενος αριθμός ευρίσκεται μεταξύ του πρώτου και του τελευταίου αριθμού του ταξινομημένου πίνακα αν όχι ο ζητούμενος αριθμός δεν υπάρχει στον πίνακα, αν ναι επιλέγεται ο αριθμός που βρίσκεται στο μέσον του πίνακα.  Αν αυτός δεν είναι ο ζητούμενος το πρόβλημα ταυτίζεται με το αρχικό αν ο αλγόριθμός εφαρμοστεί στα δύο τμήματα που χωρίστηκε ο αρχικός πίνακας.
Να γραφεί πρόγραμμα που διαχειρίζεται το τηλεφωνικό κέντρο. Σε αυτό να ορισθεί η συνάρτηση find η οποία υλοποιεί, μέσα από μια recursion διαδικασία, τον αλγόριθμο δυαδικής ανίχνευσης για την αναζήτηση του καλούμενου αριθμού και να επιστρέφει τη θέση του στον πίνακα των συνδρομητών. Αν ο αριθμός δεν υπάρχει να επιστρέφει το -1.
Η συνάρτηση main του προγράμματος να ορίζει τον πίνακα των συνδρομητών και να εισάγει σε αυτόν κατά αύξουσα σειρά τους αντιστοίχους αριθμούς κλήσης. Στη συνέχεια να ορίζει μια ατέρμονα ανακύκλωση σε κάθε επανάληψη της οποίας να ελέγχεται αρχικά αν έχει τερματιστεί κάποια συνδιάλεξη και αν ναι να ξεκαθαρίζεται η αντίστοιχη θύρα και να μπαίνει σε κατάσταση διαθέσιμος ο αντίστοιχος συνδρομητής. Κατόπιν να ελέγχεται αν υπάρχει εισερχόμενη κλήση και αν ναι, αν υπάρχει διαθέσιμη θύρα εισόδου, να διαβάζεται ο καλούμενος αριθμός, να καλείται η συνάρτηση find για να βρεθεί ο αριθμός στον πίνακα των συνδρομητών και αν ο αριθμός υπάρχει και δεν είναι απασχολημένος να καταχωρείται η θέση του αριθμού στην πρώτη διαθέσιμη θύρα εισόδου και ο συνδρομητής να μπαίνει σε κατάσταση απασχολημένος διαφορετικά η κλήση να απορρίπτεται.

Παρατηρήσεις
Οι θύρες εισόδου και εξόδου υλοποιούνται ως πίνακες ακεραίων αριθμών.
Μια θύρα εισόδου θεωρείται διαθέσιμη όταν έχει την τιμή -1
Ένας συνδρομητής θεωρείται διαθέσιμος όταν η αντίστοιχη θύρα εξόδου έχει τιμή 0 και απασχολημένος όταν η τιμή της θύρας είναι 1.
Μία σύνδεση θεωρείται ότι έχει επιτευχθεί όταν ο η θέση του συνδρομητή καταχωρηθεί ως τιμή σε μια διαθέσιμη θύρα εισόδου και η αντίστοιχη θύρα εξόδου πάρει τιμή 1.
Ο έλεγχος για ύπαρξη διαθέσιμης θύρας εισόδου και ο έλεγχος για την ύπαρξη εισερχόμενης κλήσης γίνετε με τη μορφή ερώτησης στην οποία ο χρήστης απαντά θετικά ή αρνητικά από το πληκτρολόγιο.
Σε κάθε επανάληψη της ανακύκλωσης μια μόνο θύρα εισόδου να μπορεί να απελευθερωθεί και μία μόνο αίτηση για σύνδεση να μπορεί να εξυπηρετηθεί


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Papatanasis on May 08, 2008, 01:57:06 am
Καλα ποτε προλαβε κιολας??????????????? :P :P :P :P :P


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: ripper_george on May 08, 2008, 23:11:14 pm
Help!!
Αν κάποιος έχει κάποια ιδέα για την εργασία, please assist!

Αυτός που καλεί συνδέεται με τον αριθμό που θέλει όταν αυτός (ο αριθμός) δεν είναι απασχολημένος και υπάρχει....

Όμως, αφού συνδεθεί και μετά, πως υποτίθεται ότι πρέπει να καταλάβουμε ότι η κλήση έχει τελειώσει????
Θα ρωτάμε κάθε φορά αν η συνομιλία με κάποιον αριθμό έχει τελειώσει???(Χαζό μου φαίνεται...)

Το interface πάνω κάτω τι βήματα να έχει???

1)Ρωτάμε αν υπάρχει εισερχόμενη κλήση...
2)Αν υπάρχει ψάχνουμε να βρούμε τον αριθμό.
3)Ι)Αν δεν τον βρούμε ή είναι απασχολημένος την απορρίπτουμε.
  ΙΙ)Αλλιώς τον συνδέουμε, και εκχωρούμε σε πίνακα με incoming calls, τον pointer του εκάστοτε χρήστη...

Μετά????????? :-\

Ουσιαστικά, για ποιον γράφεται το πρόγραμμα??? Ο χρήστης θα είναι αυτός που θα παίζει το ρόλο και αυτού που καλεί, και αυτού που τερματίζει τις κλήσεις???

Any help is deeply appreciated!


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Komimis on May 08, 2008, 23:31:14 pm
Εγώ θα είμαι περιεκτικός..

ΚΑΛΑ ΜΑΣ ΔΟΥΛΕΥΕΙ??


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: jeen on May 09, 2008, 00:26:32 am
Όμως, αφού συνδεθεί και μετά, πως υποτίθεται ότι πρέπει να καταλάβουμε ότι η κλήση έχει τελειώσει????
Θα ρωτάμε κάθε φορά αν η συνομιλία με κάποιον αριθμό έχει τελειώσει???(Χαζό μου φαίνεται...)


Όσο χαζό και να σου φαίνεται κάπως έτσι πιστεύω πως είναι...Εμείς, δηλαδή οι συνδρομητές πρέπει να αποφασίσουμε πότε θα τελειώσει μία κλήση...

Το interface πάνω κάτω τι βήματα να έχει???

1)Ρωτάμε αν υπάρχει εισερχόμενη κλήση...
2)Αν υπάρχει ψάχνουμε να βρούμε τον αριθμό.
3)Ι)Αν δεν τον βρούμε ή είναι απασχολημένος την απορρίπτουμε.
  ΙΙ)Αλλιώς τον συνδέουμε, και εκχωρούμε σε πίνακα με incoming calls, τον pointer του εκάστοτε χρήστη...

Μετά?????????


Μετά πάλι απ'την αρχή...Θα ξαναρωτηθείς αν θέλεις να τερματίσεις μία κλήση, αν θέλεις να κάνεις μία καινούρια κτλ...Άλλωστε το αναφέρει η άσκηση...Η main να ορίζει μια ατέρμονα ανακύκλωση όπου σε κάθε επανάληψη της μια μόνο θύρα εισόδου να μπορεί να απελευθερωθεί, δηλαδή να τελείωσει μία κλήση, και μία μόνο αίτηση για σύνδεση να μπορεί να εξυπηρετηθεί...

Κάπως έτσι το σκέφτομαι...


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Γιώργος on May 09, 2008, 00:28:25 am
Κι έλεγα ότι τα 'χα δει όλα, αλλά υπάρχουν ακόμα πιο καμένα!  :D :D




Λοιπόν, το πρόγραμμα όπως φαίνεται γράφεται για τον... τηλεφωνητή, δηλαδή για το σύστημα που διαχειρίζεται τις κλήσεις. Για το πώς "απελευθερώνεται" μία γραμμή: απ' ό,τι φαίνεται, σε κάθε επανάληψη (loop) θα ρωτάει το σύστημα τον τηλεφωνητή να εισάγει το id της κλήσης που τερματίζεται, ΕΑΝ υπάρχει, και μάλλον αυτό θα γίνεται πριν τον ρωτήσει ΕΑΝ υπάρχει εισερχόμενη κλήση κι αν ναι, ποια.


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: ripper_george on May 09, 2008, 02:19:44 am
Και τώρα κάτι πιο ρητορικό....
Τι ακριβώς προσπαθεί να εξετάσει αυτή η άσκηση???? :P
Αν μπορούμε να δημιουργήσουμε το λογισμικό για κανένα τηλεφωνικό κέντρο του 1900???
Γιατί άμα να ρωτάς αν τελείωσε ο ομιλητής την κλήση του και αν υπάρχει καινούργια κλήση...... Ζήτω!!!!
Νομίζω ότι περισσότερα στοιχεία εξέτασε η C εργασία (Dynamic Memory Allocation etc) παρά η D, ενώ για την C
δεν είχαμε καν ακόμα ακούσει για Dynamic Memory Allocation....
Κάνω λάθος μήπως???? :P


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: mademlis on May 09, 2008, 08:59:06 am
Την παγίδα που λέγεται recursion την μυρίστηκε κανείς;
Διότι, το binary search πρέπει να γίνει αναδρομίκα.....



Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Γιώργος on May 09, 2008, 13:27:44 pm
Την παγίδα που λέγεται recursion την μυρίστηκε κανείς;
Διότι, το binary search πρέπει να γίνει αναδρομίκα.....


Όχι αναγκαστικά. 8)
Google it και θα δεις. ;)

Για όσους το έχουν, υπάρχει στο τετράδιο μαθητή της ΑΕΠΠ Γ' Λυκείου (όσοι το 'χετε κρατήσει δηλαδή).



edit: Σοζ, λέει ότι όντως πρέπει να γίνει αναδρομικά (που είναι λιγότερο αποδοτικό, έλεος). Αρκεί να σκεφτεί κανείς την "φιλοσοφία" της δυαδικής αναζήτησης. :)




edit2: Επίσης δεν διευκρινίζει εάν θα πρέπει να τίθεται σε κατάσταση απασχολημένος και ο χρήστης που καλεί και αν ναι, πώς θα ξέρουμε ποιος είναι αυτός ο χρήστης. ;)


Κι η απορία της ημέρας: γιατί οι εκφωνήσεις να είναι gtp, οέο;


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Komimis on May 09, 2008, 22:35:01 pm
νομίζω ότι ο χρήστης που καλεί είναι άσχετος δεν έχει να κανει με τους συνδρομητές

α και τα νουμερα των συνδρομητών ποιά θα είναι!! και πώς τα βάζουμε!!

στήν πρώτη εκτέλεση της επανάληψης όλες οι θύρες εισόδου και οι συνδρομητές θα είναι διαθέσιμοι??



Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Γιώργος on May 09, 2008, 22:39:36 pm
α και τα νουμερα των συνδρομητών ποιά θα είναι!! και πώς τα βάζουμε!!

στήν πρώτη εκτέλεση της επανάληψης όλες οι θύρες εισόδου και οι συνδρομητές θα είναι διαθέσιμοι??


Προφανώς 0..Ν-1 και "ναι" στο 2ο (I guess), έτσι όπως το 'δα. :)


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Komimis on May 09, 2008, 23:24:02 pm
Τι εννοεί όμως όταν γράφει "Η συνάρτηση main του προγράμματος να ορίζει τον πίνακα των συνδρομητών και να εισάγει σε αυτόν κατά αύξουσα σειρά τους αντιστοίχους αριθμούς κλήσης. " ??


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Γιώργος on May 09, 2008, 23:50:57 pm
Τι εννοεί όμως όταν γράφει "Η συνάρτηση main του προγράμματος να ορίζει τον πίνακα των συνδρομητών και να εισάγει σε αυτόν κατά αύξουσα σειρά τους αντιστοίχους αριθμούς κλήσης. " ??
Δηλαδή να έχει πχ:


2104444444
2310111111
2310222222
2310333333

κοκ, δηλαδή να είναι σε αύξουσα σειρά ο πίνακας. :)
Εφόσον η εκφώνηση δεν διευκρινίζει κάτι άλλο, υποθέτω πως θα πάρεις δεδομένο το ότι ο πίνακας θα είναι εξ' αρχής ταξινομημένος κατά αύξουσα σειρά.


Tip: αρχίστε γενικά από τη συνάρτηση find, γιατί είναι ανεξάρτητη απ' το πρόγραμμα και θα "φύγει" κι ένα κομμάτι του προγράμματος. :)


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Komimis on May 09, 2008, 23:58:36 pm
Η find είναι μόνο η αναζήτηση του αριθμού στη λίστα έτσι?

πώς χρησιμοποιώ η κάνω print την έξοδο (returned value) της find?? δλδ ή το -1 ή την διεύθυνση του συνδρομητή??


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Γιώργος on May 10, 2008, 00:01:46 am
Η find είναι μόνο η αναζήτηση του αριθμού στη λίστα έτσι?

πώς χρησιμοποιώ η κάνω print την έξοδο (returned value) της find?? δλδ ή το -1 ή την διεύθυνση του συνδρομητή??
find = recursive binary search (google it) :)
Αυτό λέει κι η εκφώνηση προφανώς.


Το πού το χρησιμοποιείς... στο λέει η εκφώνηση, στις εισερχόμενες κλήσεις.


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Komimis on May 10, 2008, 00:05:47 am
Η find είναι μόνο η αναζήτηση του αριθμού στη λίστα έτσι?

πώς χρησιμοποιώ η κάνω print την έξοδο (returned value) της find?? δλδ ή το -1 ή την διεύθυνση του συνδρομητή??
find = recursive binary search (google it) :)
Αυτό λέει κι η εκφώνηση προφανώς.


Το πού το χρησιμοποιείς... στο λέει η εκφώνηση, στις εισερχόμενες κλήσεις.

καλά ναι find=copy paste :P

εννοώ πως χρησιμοποιώ την τιμή που δίνει η συνάρτηση!! όταν πάει στο return απλά διακόπτεται η διαδικασία
και μετά αν στην main ζητήσω την τιμή της μεταβλητής που τυπώνει η find μου εμφανίζει 0!


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: anonymous-root on May 10, 2008, 00:19:30 am
Κι η απορία της ημέρας: γιατί οι εκφωνήσεις να είναι gtp, οέο;

κλασσικές εκφωνήσεις κορτέση.


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: λήθη on May 10, 2008, 13:34:42 pm
Ζαλιστηκα ^seestars^


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Papatanasis on May 10, 2008, 13:36:58 pm
Αντε alejandro πιασε δουλεια! ;D ;D ;D



Πλακα κανω!


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: ripper_george on May 10, 2008, 15:03:36 pm
Ποιός αλγόριθμος είναι πιο αποδοτικός?
Αυτός που μάθαμε στο λύκειο για τη δυαδική ή με divide and rule???

BinarySearch(A[0..N-1], value, low, high) {
       if (high < low)
           return -1 // not found
       mid = (low + high) / 2
       if (A[mid] > value)
           return BinarySearch(A, value, low, mid-1)
       else if (A[mid] < value)
           return BinarySearch(A, value, mid+1, high)
       else
           return mid // found
   }

(found on wiki):-)


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Γιώργος on May 10, 2008, 15:10:26 pm
Αν μπορείς να κάνεις κάτι επαναληπτικά και όχι αναδρομικά, σαφώς και το επαναληπτικό είναι (συνήθως) πιο αποδοτικό. Βλέπε Fibonacci επαναληπτικά και αναδρομικά.




However... the project says recursive.  ;)


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: AgentCain on May 10, 2008, 15:31:34 pm
Βασικά θυμάμαι από το προηγούμενο εξάμηνο ότι η πολληπλοκότητα της απλής σάρωσης του πίνακα για να βρεθεί ο αριθμός είναι μεγαλύτερη από αυτή της διαίρει και βασίλευε.
Αυτό δεν καθιστά τον recursive κώδικα πιο "καλό"?  :???:


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Γιώργος on May 10, 2008, 15:36:18 pm
Binary search: O(logn)
Serial search: O(n)

Και είναι αδύνατον (νομίζω έχει αποδειχθεί) να πάει κάτω από O(logn) η αναζήτηση σε πίνακα. Άρα δεν υπάρχει καλύτερος αλγόριθμος από την δυαδική αναζήτηση επαναληπτικά (χωρίς να ξέρω η αναδρομική πώς πάει, αλλά στάνταρ όχι καλύτερα).


Αλλά, η εκφώνηση ζητά αναδρομική, οπότε δεν ξέρω γιατί κολλάτε σ' αυτά. :)


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Komimis on May 10, 2008, 15:39:40 pm
Εμένα θα μου πει κανένας πως θα χρησιμοποιήσω την τιμή που επιστρέφει η find?? :D εννοώ με ποια εντολή


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Γιώργος on May 10, 2008, 15:43:59 pm
Εμένα θα μου πει κανένας πως θα χρησιμοποιήσω την τιμή που επιστρέφει η find?? :D εννοώ με ποια εντολή
Προφανώς σαν index θα το χρησιμοποιήσεις!  :D


Δηλαδή όταν υπάρχει εισερχόμενη να ελέχεις αν εκείνος ο χρήστης (id==η τιμή που επιστρέφει η find) είναι μη-απασχολημένος.


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Komimis on May 10, 2008, 16:56:39 pm
πώς αναφέρομαι στη τιμή που επιστρέφει η find???  ^eatpaper^


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Γιώργος on May 10, 2008, 16:59:34 pm
Ε, την αποθηκεύεις σε μια μεταβλητή βρε συ. Όπως χρησιμοποιούμε το:
Code:
foo = cos(1);

Θα κάνεις κάτι παρόμοιο με την  find. :)


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: fourier on May 10, 2008, 18:59:39 pm
Ερωτηση #1 (απο τις εκατονταδες που θα βγουν στην πορεια):

Ο πινακας χρηστων θα ειναι στατικος ή δυναμικος?
Να τον κανουμε δυναμικο με malloc κλπ, ή οπως στη δευτερη εργασια να τον κανουμε στατικο με 100 στηλες, και απλα να "αχρηστεψουμε" οσες θεσεις ειναι μετα την n-οστη?

(Αχρηστεψουμε = βαλουμε την καταλληλη ακραια τιμη ωστε να μην χρησιμοποιειται ποτε πρακτικα)

Στην περιπτωση που τον κανουμε δυναμικο, πώς χειριζομαστε τη malloc για πινακες 2 διαστασεων?
Εν προκειμενω θελουμε εναν πινακα με n στηλες και 2 γραμμες (η πρωτη για τον αριθμο κλησης και η δευτερη για την κατασταση του χρηστη)


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Γιώργος on May 10, 2008, 19:09:31 pm
Πώς χειριζομαστε τη malloc για πινακες 2 διαστασεων?
Code:
int **A;
A = (int **) malloc(M*sizeof(int *));
for(i=0;i<M;i++)
  A[i] = (int *) malloc(N*sizeof(int));


Δεσμεύει έναν πίνακα ακεραίων MxN. :)


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: fourier on May 10, 2008, 19:45:50 pm

code

Δεσμεύει έναν πίνακα ακεραίων MxN. :)

Ευχαριστω!!!!!!  :)


Ερωτηση #2 (αυτη τη φορα για το ιδιο το προγραμμα και οχι για την C):

Quote
Ο έλεγχος για ύπαρξη διαθέσιμης θύρας εισόδου και ο έλεγχος για την ύπαρξη εισερχόμενης κλήσης γίνετε με τη μορφή ερώτησης στην οποία ο χρήστης απαντά θετικά ή αρνητικά από το πληκτρολόγιο.

Δηλαδη σε καθε επαναληψη της διαδικασιας, θα μας ζηταει να πληκτρολογησουμε εμεις με ΝΑΙ ή ΟΧΙ εαν υπαρχει διαθεσιμη θυρα εισοδου, και θα μπορουμε να βαλουμε ΟΧΙ, και να απορριψουμε μια κληση, ακομα και αν υπαρχει διαθεσιμη θυρα?
Λιγο κουλο δεν ειναι αυτο?
Και προφανως, με αυτη τη λογικη, εαν εμεις βαλουμε ΝΑΙ αλλα κατα τον ελεγχο δεν βρεθει, θα επιστρεψει μηνυμα λαθους και θα απορριφθει η κληση?


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Γιώργος on May 10, 2008, 19:48:37 pm
Η εκφώνηση (όσο κατάλαβα) λέει:
  • Έχει τερματιστεί κάποια κλήση; Αν ναι, ποιας θύρας;
  • Υπάρχει εισερχόμενη κλήση;
  • Αν ναι, ποιο νούμερο;
  • Υπάρχει το νούμερο;
  • Είναι διαθέσιμος ο συνδρομητής;
  • Αν ναι, σύνδεσέ τους


Αυτάααααα!  :)


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: fourier on May 10, 2008, 20:02:18 pm
Η εκφώνηση (όσο κατάλαβα) λέει:
  • Έχει τερματιστεί κάποια κλήση; Αν ναι, ποιας θύρας;
  • Υπάρχει εισερχόμενη κλήση;
  • Αν ναι, ποιο νούμερο;
  • Υπάρχει το νούμερο;
  • Είναι διαθέσιμος ο συνδρομητής;
  • Αν ναι, σύνδεσέ τους

Αυτάααααα!  :)

Ή εσυ κατι δεν καταλαβες καλα ή εγω :)

quoting με τροποποιηση:

Εργασία D 2008
...
Όταν υπάρχει μια εισερχομένη κλήση ελέγχεται

α) αν υπάρχει διαθέσιμη θύρα εισόδου και αν όχι η κλήση απορρίπτεται.

β) αναζητείται ο καλούμενος αριθμός στον πίνακα των συνδρομητών και αν ο αριθμός δεν υπάρχει ή είναι απασχολημένος η κλήση απορρίπτεται,

γ) διαφορετικά η θέση του καλούμενου αριθμού στον πίνακα συνδρομητών καταχωρείται ως τιμή στην πρώτη διαθέσιμη θύρα εισόδου και ο συνδρομητής τίθεται σε κατάσταση απασχολημένος.

(...)

Η συνάρτηση main του προγράμματος (...) να ορίζει μια ατέρμονα ανακύκλωση σε κάθε επανάληψη της οποίας να ελέγχεται

1) αν έχει τερματιστεί κάποια συνδιάλεξη και αν ναι να ξεκαθαρίζεται η αντίστοιχη θύρα και να μπαίνει σε κατάσταση διαθέσιμος ο αντίστοιχος συνδρομητής.

2) Κατόπιν να ελέγχεται αν υπάρχει εισερχόμενη κλήση και αν ναι,

3) (Κατοπιν να ελεγχεται...) αν υπάρχει διαθέσιμη θύρα εισόδου,

4) να διαβάζεται ο καλούμενος αριθμός,

5) να καλείται η συνάρτηση find για να βρεθεί ο αριθμός στον πίνακα των συνδρομητών και αν ο αριθμός υπάρχει και δεν είναι απασχολημένος να καταχωρείται η θέση του αριθμού στην πρώτη διαθέσιμη θύρα εισόδου και ο συνδρομητής να μπαίνει σε κατάσταση απασχολημένος διαφορετικά η κλήση να απορρίπτεται.

Παρατηρήσεις
(...)
Ο έλεγχος για ύπαρξη διαθέσιμης θύρας εισόδου και ο έλεγχος για την ύπαρξη εισερχόμενης κλήσης γίνετε με τη μορφή ερώτησης στην οποία ο χρήστης απαντά θετικά ή αρνητικά από το πληκτρολόγιο.

Δεν ειναι λιγο κουλο αυτο? Γιατι να μη γινεται απο το ιδιο το προγραμμα ο ελεγχος για διαθεσιμη θυρα εισοδου και να μας δινεται η δυνατοτητα να γραψουμε λανθασμενη απαντηση?


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Γιώργος on May 10, 2008, 20:04:00 pm
Μα ποιος είπε ότι ο έλεγχος διαθέσιμης θύρας, όταν υπάρχει εισερχόμενη κλήση, θα γίνεται "με το χέρι"; Linary search. :)


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: fourier on May 10, 2008, 20:05:45 pm
Μα ποιος είπε ότι ο έλεγχος διαθέσιμης θύρας, όταν υπάρχει εισερχόμενη κλήση, θα γίνεται "με το χέρι"; Linary search. :)

Ο... Κορτεσης, στην εκφωνηση ;D Δες τα κοκκινισμενα στο quote μου


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Γιώργος on May 10, 2008, 20:09:56 pm
"Να ελέγχεται" λέει.  :)


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: fourier on May 10, 2008, 20:11:27 pm
Παρατηρήσεις
(...)
Ο έλεγχος για ύπαρξη διαθέσιμης θύρας εισόδου και ο έλεγχος για την ύπαρξη εισερχόμενης κλήσης γίνετε με τη μορφή ερώτησης στην οποία ο χρήστης απαντά θετικά ή αρνητικά από το πληκτρολόγιο.

:)


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Γιώργος on May 10, 2008, 20:24:47 pm
Τι τρελός ο άνθρωπος.  :D :D :D :D



Ε οκ, αφού αυτό σου λέει, αυτό θα κάνεις.


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Papatanasis on May 10, 2008, 21:09:02 pm
Υπαρχει καποια συναρτηση για ταξινομηση πινακα?


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Γιώργος on May 10, 2008, 21:50:52 pm
Φυσικά!!! :)


Νομίζω είναι η qsort στην stdlib. :)


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Papatanasis on May 10, 2008, 21:58:17 pm
Φυσικά!!! :)


Νομίζω είναι η qsort στην stdlib. :)
Μηπως ξερουμε και τη συνταξη της?


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Γιώργος on May 10, 2008, 22:14:25 pm
http://en.wikipedia.org/wiki/Qsort_(C_Standard_Library)


Google a bit.  :)


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: AgentCain on May 10, 2008, 23:54:03 pm
Η εκφώνηση (όσο κατάλαβα) λέει:
  • Έχει τερματιστεί κάποια κλήση; Αν ναι, ποιας θύρας;
  • Υπάρχει εισερχόμενη κλήση;
  • Αν ναι, ποιο νούμερο;
  • Υπάρχει το νούμερο;
  • Είναι διαθέσιμος ο συνδρομητής;
  • Αν ναι, σύνδεσέ τους


Αυτάααααα!  :)
Συμφωνώ, μόλις τελείωσα το πρόγραμμα και μου φαίνεται απόλυτα λογικό έτσι.  :)

Ο πίνακας υποτίθεται ότι δίνεται ταξινομημένος έτσι? γιατί στο τέλος αφήνει κάτι άλλο να εννοηθεί :???:


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Γιώργος on May 10, 2008, 23:57:32 pm
Ο πίνακας υποτίθεται ότι δίνεται ταξινομημένος έτσι?
I guess so. Εν ανάγκη τράβα του μια qsort να 'ρθει στα ίσα του. ;)


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: AgentCain on May 11, 2008, 00:01:25 am
Δεν ειναι λιγο κουλο αυτο? Γιατι να μη γινεται απο το ιδιο το προγραμμα ο ελεγχος για διαθεσιμη θυρα εισοδου και να μας δινεται η δυνατοτητα να γραψουμε λανθασμενη απαντηση?

Δεν είναι κουλό. Πες ότι το πρόγραμμα αυτό συννενοείται με ένα άλλο πρόγραμμα που του λέει ποιες είναι οι εισερχόμενες κλήσεις και ποιοι τελείωσαν την συνομιλία τους. Αρχικά ρωτάς "απελευθερώνεται κάποια θύρα? Ναι ή Όχι", καλείται το πρόγραμμα να απαντήσει, "ποια είναι η θύρα?" κτλ και μετά "έχουμε νέα εισερχόμενη κλήση? Ναι ή όχι" "σε ποιον απευθύνεται?" κτλ


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Γιώργος on May 11, 2008, 00:07:23 am
Θυμίζω επίσης ότι η εκφώνηση ΔΕΝ αναφέρει τη διαδικασία να τσεκάρεις και ΑΠΟ ΠΟΙΟΝ είναι η κλήση. Γιατί πρέπει κι αυτόν να τον βάλεις σε busy status, eh?  8)


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: zeus90 on May 11, 2008, 14:08:57 pm
Θυμίζω επίσης ότι η εκφώνηση ΔΕΝ αναφέρει τη διαδικασία να τσεκάρεις και ΑΠΟ ΠΟΙΟΝ είναι η κλήση. Γιατί πρέπει κι αυτόν να τον βάλεις σε busy status, eh?  8)
Αν βέβαια αυτός που καλεί είναι ένας από τους "γνωστούς" μας αριθμούς έτσι??? 8)


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: johnnysp on May 11, 2008, 14:42:46 pm
Ποιός αλγόριθμος είναι πιο αποδοτικός?
Αυτός που μάθαμε στο λύκειο για τη δυαδική ή με divide and rule???

BinarySearch(A[0..N-1], value, low, high) {
       if (high < low)
           return -1 // not found
       mid = (low + high) / 2
       if (A[mid] > value)
           return BinarySearch(A, value, low, mid-1)
       else if (A[mid] < value)
           return BinarySearch(A, value, mid+1, high)
       else
           return mid // found
   }

(found on wiki):-)
Όπου Α είναι ο πίνακας με τους αριθμούς των συνδρομητών;;;
Και επιπλέον τι γίνεται στην περίπτωση που ο αριθμός των στοιχείων του πίνακα είναι άρτιος αριθμός;;
πχ. αν το Ν=5 το στοιχείο [2,5] τι σημαίνει;;
 


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Γιώργος on May 11, 2008, 15:52:48 pm
Το '/' είναι η ακέραια διαίρεση μεταξύ ints, οπότε δεν υπάρχει πρόβλημα, είτε είναι άρτιο είτε περιττό. ;)


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: johnnysp on May 11, 2008, 16:12:44 pm
Εκει που λέει "να ελέγχεται αν έχει τερματιστεί κάποια συνδιάλεξη..",πως θα υλοποιηθεί αυτό;;;
Θα ρωτάμε τον χρήστη να μας δώσει τον αριθμό του συνδρομητή που τερμάτισε την συνδιάλεξη;;


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: fourier on May 11, 2008, 16:18:10 pm
Εκει που λέει "να ελέγχεται αν έχει τερματιστεί κάποια συνδιάλεξη..",πως θα υλοποιηθεί αυτό;;;
Θα ρωτάμε τον χρήστη να μας δώσει τον αριθμό του συνδρομητή που τερμάτισε την συνδιάλεξη;;

Διαβασε την εκφωνηση με προσοχη, το διατυπωνει σαφεστατα.


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Papatanasis on May 11, 2008, 16:26:05 pm
Quote
Η αναζήτηση του αριθμού του συνδρομητή γίνεται με τον αλγόριθμο της δυαδικής ανίχνευσης. Συμφωνά με αυτόν ελέγχεται αν ο ζητούμενος αριθμός ευρίσκεται μεταξύ του πρώτου και του τελευταίου αριθμού του ταξινομημένου πίνακα αν όχι ο ζητούμενος αριθμός δεν υπάρχει στον πίνακα, αν ναι επιλέγεται ο αριθμός που βρίσκεται στο μέσον του πίνακα.  Αν αυτός δεν είναι ο ζητούμενος το πρόβλημα ταυτίζεται με το αρχικό αν ο αλγόριθμός εφαρμοστεί στα δύο τμήματα που χωρίστηκε ο αρχικός πίνακας.

Πολυ χαζο τον βρισκω αυτο τον τροπο!Απο την στιγμη που ο αριθμος θα βισκεται ειτε στο 1ο ειτε στο τελευταιο στοιχειο του πινακα,
πως γινεται να βρισκεται και στο μεσαιο?Βεβαια αν αυτη η επαναληψη γινει αρκετες φορες θα φτασουμε στο παραπανω,αλλα μου
φαινονται ασκοπες οι τοσες επαναληψεις.Α και ενα τελευταιο.Αν ο πινακας εχει αρτιο αριθμο στοιχειων,το μεσαιο στοιχειο ποιο ειναι?

εδιτ Μαλακιες ελεγα.Νομιζω οτι το καταφερα!


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: johnnysp on May 11, 2008, 16:31:10 pm
Εκει που λέει "να ελέγχεται αν έχει τερματιστεί κάποια συνδιάλεξη..",πως θα υλοποιηθεί αυτό;;;
Θα ρωτάμε τον χρήστη να μας δώσει τον αριθμό του συνδρομητή που τερμάτισε την συνδιάλεξη;;

Διαβασε την εκφωνηση με προσοχη, το διατυπωνει σαφεστατα.
Απλα σε αυτό το σημείο δεν διευκρινίζει πως ακριβώς να ελέγχεται ο τερματισμός μιας κλήσης...
Έχει κανεις κάποια ιδέα;


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: antonios on May 11, 2008, 19:11:52 pm
SYN=(int*)malloc(N*sizeof(int));
        for (i=0;i<N;i++);
   {
      printf("dose ton arithmo klisis gia ton %d o syndromiti\n", i);
      scanf("%d", &SYN+i);
   }


Έχω γράψει αυτό το κομμάτι και μου ζητάει μόνο έναν αριθμό, μήπως μπορεί να μου πει κάποιος το λάθος μου????? Please...


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Γιώργος on May 11, 2008, 19:13:21 pm
Εμ... έναν αριθμό ζητάς στην scanf, οπότε πού 'ναι το πρόβλημα;


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: antonios on May 11, 2008, 19:16:29 pm
Πώς να το γράψω για να μπει στην επανάληψη?? επειδή νομίζω δεν γίνεται να γράψω SYN.....


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: ripper_george on May 11, 2008, 19:17:50 pm
HELP!!!

Το Visual Studio δεν μου βρίσκει την getch()....

Μου βγάζει ως Error:

getch() identifier not found......


Anyone having an idea?


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Γιώργος on May 11, 2008, 19:20:48 pm
getchar() 8)


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: ripper_george on May 11, 2008, 19:25:12 pm
δεν θέλω να παταω enter και να το δεχεται αλλά απευθείας..
Η getch δεν είναι για αυτό το πράγμα?


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Emfanever on May 11, 2008, 19:26:39 pm
έβαλες τη σωστή βιβλιοθήκη?
Ψάξε στο help. Η stdlib.h ή η conio.h είναι νομίζω


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: ripper_george on May 11, 2008, 19:28:05 pm
ΜΑΑΑΑΑΑΤΕ

U RULE!!!!! :D


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Γιώργος on May 11, 2008, 19:28:36 pm
Οκ, πάλι μαλακία είπα.  8)


http://mc-computing.com/Languages/Console_IO.htm
έβαλες τη σωστή βιβλιοθήκη?
Ψάξε στο help. Η stdlib.h ή η conio.h είναι νομίζω



edit: Με πρόλαβε. :P


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: antonios on May 11, 2008, 19:30:15 pm
Μπα... πάλι δεν δουλευει... μου ζητάει μόνο έναν αριθμό....  :-[


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Papatanasis on May 11, 2008, 19:33:03 pm
Αν γραψω find(A,κτλ),οπου Α ο πινακας με τους αριθμους,θα μου στειλει ολοκληρο τον πινακα στην find ή θα μου βγαλει μνμ λαθους?


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Γιώργος on May 11, 2008, 19:37:29 pm
Αν γραψω find(A,κτλ),οπου Α ο πινακας με τους αριθμους,θα μου στειλει ολοκληρο τον πινακα στην find ή θα μου βγαλει μνμ λαθους?
Αν το όρισμα είναι int *A τότε όχι.
Συγκεκριμένα, στέλνει "δείκτη" στον πίνακα. Ο πίνακας δεν κοπιάρεται, δηλαδή αν τον πειράξεις, θα αλλάξει ο αρχικός σου πίνακας.


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: AgentCain on May 11, 2008, 19:39:04 pm
SYN=(int*)malloc(N*sizeof(int));
        for (i=0;i<N;i++);
   {
      printf("dose ton arithmo klisis gia ton %d o syndromiti\n", i);
      scanf("%d", &(SYN+i));
   }


Έχω γράψει αυτό το κομμάτι και μου ζητάει μόνο έναν αριθμό, μήπως μπορεί να μου πει κάποιος το λάθος μου????? Please...

έτσι λογικά είναι σωστό
Έχω την εντύπωση ότι πρέπει να γράψει είτε &SYN(i) είτε SYN+i και όχι &(SYN+i)
To SYN+i είναι πόιντερ ενώ το SYN(i) στοιχείο  :)
όπου () βάλε []


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Γιώργος on May 11, 2008, 19:41:52 pm
Code:
scanf("%d", *(SYN+i));


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Papatanasis on May 11, 2008, 19:48:05 pm
Αν γραψω find(A,κτλ),οπου Α ο πινακας με τους αριθμους,θα μου στειλει ολοκληρο τον πινακα στην find ή θα μου βγαλει μνμ λαθους?
Αν το όρισμα είναι int *A τότε όχι.
Συγκεκριμένα, στέλνει "δείκτη" στον πίνακα. Ο πίνακας δεν κοπιάρεται, δηλαδή αν τον πειράξεις, θα αλλάξει ο αρχικός σου πίνακας.
Αμα το ορισμα ειναι int Α,τοτε τι γινεται?Τον στελνει ή οχι?

Βασικα ποιος ειναι ο τροπος για να στειλω ολοκληρο τον πινακα στην find?
Γιατι χωρις ολοκληρο τον πινακα η find δεν εχει νοημα!

εδιτ Το βρηκα! :D :D :D


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: antonios on May 11, 2008, 19:53:53 pm
Ό,τι και να δοκιμάσω δεν δουλεύει... Μου ζητάει μόνο έναν αριθμό.. Δεν μπορώ να βρω τον λόγο! Καμία άλλη ιδέα μήπως??


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Emfanever on May 11, 2008, 20:45:41 pm
Αφού η απάντηση στην ερώτηση υπάρχουν διαθέσιμες θύρες εισόδου?
 ,γίνεται από το πληκτρολόγιο , ποιο το νόημα να υπάρχουν μόνο 30?
Αφού μπορoύμε να απαντήσουμε όσες φορές θέλουμε ΝΑΙ.

Εγώ έβαλα στην αρχή να είναι όλες διαθέσιμες και μετά θα ελέγχει το πρόγραμμα αν υπάρχουν διαθέσιμες ή όχι. Νομίζω είναι πιο σωστό έτσι.


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Γιώργος on May 11, 2008, 20:47:53 pm
Εγώ έβαλα στην αρχή να είναι όλες διαθέσιμες και μετά θα ελέγχει το πρόγραμμα αν υπάρχουν διαθέσιμες ή όχι. Νομίζω είναι πιο σωστό έτσι.
Το σωστό αυτό είναι.



Αλλά.... ο πελάτης έχει πάντα δίκιο!  :D
Οπότε το πάμε με την εκφώνηση!


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: jeen on May 11, 2008, 20:52:31 pm
Κανονικά πρέπει να δουλεύει αν γράψεις scanf("%d", SYN+i) χωρίς παρενθέσεις ή αγκύλες...Το δοκίμασες και αυτό και δε δουλεύει? :-\


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: AgentCain on May 11, 2008, 22:33:59 pm
Code:
scanf("%d", *(SYN+i));

H scanf έχει ορίσματα pointers και όχι στοιχεία. Το *(SYN+i) είναι στοιχείο


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: AgentCain on May 11, 2008, 22:37:09 pm
SYN=(int*)malloc(N*sizeof(int));
        for (i=0;i<N;i++);
   {
      printf("dose ton arithmo klisis gia ton %d o syndromiti\n", i);
      scanf("%d", &SYN+i);
   }


Έχω γράψει αυτό το κομμάτι και μου ζητάει μόνο έναν αριθμό, μήπως μπορεί να μου πει κάποιος το λάθος μου????? Please...

Δε μου λες ρε συ... όταν δοκιμάζεις το κώδικα με την παρατήρηση του jeen τι αριθμούς βάζεις?
Διότι ο κώδικάς σου είναι φτιαγμένος για μικρούς αριθμούς και όχι τηλεφωνικούς του στυλ 2310123456  :P


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: jeen on May 11, 2008, 22:43:49 pm
Όντως μια σωστή παρατήρηση...Αν θέλεις να βάλεις αριθμούς του στυλ 2310565565 πρέπει ο πίνακας να είναι τύπου unsigned long int, αν και σε μένα δε τρέχει όταν το κάνω αυτό...Ίσως φταίει ο compiler...Αλλά σε σένα μπορεί να τρέχει...


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Γιώργος on May 11, 2008, 22:46:57 pm
Code:
scanf("%d", *(SYN+i));

H scanf έχει ορίσματα pointers και όχι στοιχεία. Το *(SYN+i) είναι στοιχείο
Χμ... τι σου κάνει η κούραση.  :(
Νομίζω έτσι είναι, όπως το λες.



Btw γιατί να γίνει έτσι κι όχι:
Code:
scanf("%d", &SYN[i]);

τότε, που 'ναι και στάνταρ;


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Emfanever on May 11, 2008, 22:57:15 pm

Btw γιατί να γίνει έτσι κι όχι:
Code:
scanf("%d", &SYN[i]);

τότε, που 'ναι και στάνταρ;

Αυτό είναι πιο συνηθισμένο αλλά αφού δε δουλεύει το  scanf("%d", SYN +i);
που είναι το ίδιο ,μάλλον δε θα δουλεύει ούτε το στάνταρ.


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: AgentCain on May 12, 2008, 01:14:37 am
Όντως μια σωστή παρατήρηση...Αν θέλεις να βάλεις αριθμούς του στυλ 2310565565 πρέπει ο πίνακας να είναι τύπου unsigned long int, αν και σε μένα δε τρέχει όταν το κάνω αυτό...Ίσως φταίει ο compiler...Αλλά σε σένα μπορεί να τρέχει...

Ποιόν compiler χρησιμοποιείς? Στον Dev όπου έβαλα unsigned long int δουλεύει αλλά μου πετoύσε στην αρχή warning σχετικά με κάποια στάνταρ, κάτι για ISO(που απότι έψαξα αφορούν τον κάθε υπολογιστή ξεχωριστά και δεν ισχύουν για όλους)
Μετά το έπιασε το χαζό του και έφτιαξε μόνο του  :P


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: jeen on May 12, 2008, 02:22:57 am
Της Borland χρησιμοποιώ...Βασικά δε μου βγάζει errors ή warnings...Αλλά όταν τρέχω το πρόγραμμα και ενώ βάζω πχ 2310111111 όταν του λέω να μου το τυπώσει, τυπώνει κάτι άλλο πχ 597514, κάτι εντελώς άσχετο...Δε ξέρω αν είναι θέση μνήμης ή κάτι τέτοιο αυτό που μου βγάζει...


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Papatanasis on May 12, 2008, 02:32:17 am
Της Borland χρησιμοποιώ...Βασικά δε μου βγάζει errors ή warnings...Αλλά όταν τρέχω το πρόγραμμα και ενώ βάζω πχ 2310111111 όταν του λέω να μου το τυπώσει, τυπώνει κάτι άλλο πχ 597514, κάτι εντελώς άσχετο...Δε ξέρω αν είναι θέση μνήμης ή κάτι τέτοιο αυτό που μου βγάζει...
Και εμενα τα ιδια κανει ο dev! :???: :???:


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: tomshare3 on May 12, 2008, 03:04:09 am
βασικα βγαζει κατι τετοιο γιατι εχεις δηλωσει τη μεταβλητη ως int.. ο compiler δεν αναγνωριζει καποιο λαθος απλα δεσμευει μνημη για τα πρωτα byte του αριθμου και τα υπολοιπα τα πεταει! δοκιμασε να δηλωσεις τη μεταβλητη ως unsinged long int και θα δουλεψει! ή πιο απλα χρησιμοποιησε παραδειγματα με μικρους αριθμους!!


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Papatanasis on May 12, 2008, 03:05:37 am
βασικα βγαζει κατι τετοιο γιατι εχεις δηλωσει τη μεταβλητη ως int.. ο compiler δεν αναγνωριζει καποιο λαθος απλα δεσμευει μνημη για τα πρωτα byte του αριθμου και τα υπολοιπα τα πεταει! δοκιμασε να δηλωσεις τη μεταβλητη ως unsinged long int και θα δουλεψει! ή πιο απλα χρησιμοποιησε παραδειγματα με μικρους αριθμους!!
Το δοκιμασα και με unsigned long int αλλα παλι ασχετους αριθμους μου εβγαζε!! :???: :???:


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Emfanever on May 12, 2008, 03:45:36 am
Όταν θέλεις να διαβάσεις unsigned long , π.χ x γράφεις:

scanf(" %lu",&x);

μήπως αυτό φταίει τόση ώρα?


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Papatanasis on May 12, 2008, 03:49:40 am
Όταν θέλεις να διαβάσεις unsigned long , π.χ x γράφεις:

scanf(" %lu",&x);

μήπως αυτό φταίει τόση ώρα?
Ισως.Θα το τσεκαρω αυριο γτ τωρα βαριεμαι! :P


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: AgentCain on May 12, 2008, 10:08:16 am
Προσωπικά το %lu δεν μου δούλεψε αντιθέτως δούλεψε το %u
Σαν να θέλει δλδ ναβάλεις μόνο τον 1ο χαρακτηρισμό, τι να πει κανείς  :D


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: mademlis on May 12, 2008, 12:43:56 pm

Btw γιατί να γίνει έτσι κι όχι:
Code:
scanf("%d", &SYN[i]);

τότε, που 'ναι και στάνταρ;

Αυτό είναι πιο συνηθισμένο αλλά αφού δε δουλεύει το  scanf("%d", SYN +i);
που είναι το ίδιο ,μάλλον δε θα δουλεύει ούτε το στάνταρ.

Το
Code:
scanf("%d", &SYN[i]);
δεν δουλεύει, εξαιτίας της προτεραιότητας των πράξεων.
το σωστό είναι

Code:
scanf("%d", &(SYN[i]));


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Emfanever on May 12, 2008, 13:46:49 pm
Προσωπικά το %lu δεν μου δούλεψε αντιθέτως δούλεψε το %u
Σαν να θέλει δλδ ναβάλεις μόνο τον 1ο χαρακτηρισμό, τι να πει κανείς  :D

Μπορεί να έχει σχέση με τον compiler! Εμένα μου πήρε λίγη ώρα μέχρι να βρω το σωστό  :D
Borland χρησιμοποιώ

Το
Code:
scanf("%d", &SYN[i]);
δεν δουλεύει, εξαιτίας της προτεραιότητας των πράξεων.
το σωστό είναι

Code:
scanf("%d", &(SYN[i]));
Εγώ πάντως το κάνω χωρίς παρένθεση και δε μου δημιουργεί πρόβλημα...
Εξάλλου μεγαλύτερη προτεραιότητα έχει η αγκύλη [ ] από το &


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Komimis on May 12, 2008, 15:33:58 pm
Ορίζω τους αριθμους κλήσης απο 111 εώς 101010 (για 10 συνδρομητές πχ)

όταν ζητάω απο τον χρήστη να εισάγει τον καλούμενο αριθμό όλοι από το 777 και πάνω δεν αναγνωρίζονται ως συνδρομητές! (δλδ δν τους βρίσκει η find στον πίνακα)

θα τρελαθώ :D


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: PreDa on May 12, 2008, 15:46:58 pm
SYN=(int*)malloc(N*sizeof(int));
        for (i=0;i<N;i++);
   {
      printf("dose ton arithmo klisis gia ton %d o syndromiti\n", i);
      scanf("%d", &SYN+i);
   }


Έχω γράψει αυτό το κομμάτι και μου ζητάει μόνο έναν αριθμό, μήπως μπορεί να μου πει κάποιος το λάθος μου????? Please...
for (i=0;i<N;i++) ;  Μήπως φταίει το ερωτηματικό μετά την παρένθεση????


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Emfanever on May 12, 2008, 18:36:35 pm
Ορίζω τους αριθμους κλήσης απο 111 εώς 101010 (για 10 συνδρομητές πχ)

όταν ζητάω απο τον χρήστη να εισάγει τον καλούμενο αριθμό όλοι από το 777 και πάνω δεν αναγνωρίζονται ως συνδρομητές! (δλδ δν τους βρίσκει η find στον πίνακα)

θα τρελαθώ :D
Προφανώς υπάρχει κάπου ένα λάθος ,τώρα, όρισες λάθος μεταβλητές? έχεις λάθος λογική στη find?
 δεν μπορούμε να ξέρουμε αν δε δούμε κάτι!


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: screambloodygore on May 12, 2008, 19:27:20 pm
η συνάρτηση find τι ορίσματα θα έχει συγκεκριμένα στην άσκηση??


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Γιώργος on May 12, 2008, 19:31:21 pm
η συνάρτηση find τι ορίσματα θα έχει συγκεκριμένα στην άσκηση??
Αυτά που έχει στο άρθρο της wikipedia (binary search), φαντάζομαι.  :)


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: screambloodygore on May 12, 2008, 19:45:02 pm
αυτά έβαλα κ εγώ αλλά κάτι δεν πάει καλά και νομίζω είναι στη find.τελοσπάντων θα το ξανακοιτάξω για 100η φορά :-\


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Emfanever on May 12, 2008, 20:01:00 pm
Εγώ έβαλα 3:

1) Το όνομα του πίνακα των αριθμών κλήσης
2)Τον αριθμό των συνδρομητών
3)Τον αριθμό κλήσης που αναζητάμε

δλδ κάπως έτσι θα είναι όταν ορίζεις τη find
int find(unsigned long *a,int N,unsigned long target)


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: screambloodygore on May 12, 2008, 20:40:47 pm
Εγώ έβαλα 3:

1) Το όνομα του πίνακα των αριθμών κλήσης
2)Τον αριθμό των συνδρομητών
3)Τον αριθμό κλήσης που αναζητάμε

δλδ κάπως έτσι θα είναι όταν ορίζεις τη find
int find(unsigned long *a,int N,unsigned long target)
έτσι όμως όταν την καλέσεις πώς θα ψάξει τον πίνακα των συνδρομητών αφού ο πίνακας δεν έχει standard μέγεθος οπότε από ποιο μέχρι ποιο στοιχείο να ψάξει?


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Emfanever on May 12, 2008, 20:45:00 pm
Αφού δίνω και το Ν που είναι ο αριθμός των συνδρομητών ,άρα και το μέγεθος του πίνακα,οπότε που είναι το πρόβλημα??


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: screambloodygore on May 12, 2008, 20:48:44 pm
σορυ ρε μ..κια ειπα δεν πρόσεξα καλά τι έγραψες..


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: fourier on May 12, 2008, 22:06:08 pm
Εγώ έβαλα 3:

1) Το όνομα του πίνακα των αριθμών κλήσης
2)Τον αριθμό των συνδρομητών
3)Τον αριθμό κλήσης που αναζητάμε

δλδ κάπως έτσι θα είναι όταν ορίζεις τη find
int find(unsigned long *a,int N,unsigned long target)

Τον πινακα των συνδρομητων γιατι τον εκανες μονοδιαστατο? Και το 0/1 (την κατασταση διαθεσιμος/απασχολημενος) πού την αποθηκευεις?

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


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Γιώργος on May 12, 2008, 22:13:55 pm
Παίδες, χωριστοί πίνακες για χωριστά πράγματα. Δεν υπάρχει λόγος τον τηλεφωνικό κατάλογο να τον κάνουμε 2D. :)


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: solli144 on May 12, 2008, 22:52:26 pm
συνάρτηση για το ακέραιο μέρος?????? και τι θέλει include ????


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Komimis on May 12, 2008, 23:35:51 pm
Ορίζω τους αριθμους κλήσης απο 111 εώς 101010 (για 10 συνδρομητές πχ)

όταν ζητάω απο τον χρήστη να εισάγει τον καλούμενο αριθμό όλοι από το 777 και πάνω δεν αναγνωρίζονται ως συνδρομητές! (δλδ δν τους βρίσκει η find στον πίνακα)

θα τρελαθώ :D
Προφανώς υπάρχει κάπου ένα λάθος ,τώρα, όρισες λάθος μεταβλητές? έχεις λάθος λογική στη find?
 δεν μπορούμε να ξέρουμε αν δε δούμε κάτι!

έχω τα εξής:

int n,m,i,s=0,*Sindromites
for (i=0;i<n;i++) Sindromites=(i+1)*11;

μέχρι το Sindromites[5]=66 όλα καλά..μετα ολα τα βγάζει -1


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Emfanever on May 13, 2008, 00:01:05 am
Εγώ έβαλα 3:

1) Το όνομα του πίνακα των αριθμών κλήσης
2)Τον αριθμό των συνδρομητών
3)Τον αριθμό κλήσης που αναζητάμε

δλδ κάπως έτσι θα είναι όταν ορίζεις τη find
int find(unsigned long *a,int N,unsigned long target)

Τον πινακα των συνδρομητων γιατι τον εκανες μονοδιαστατο? Και το 0/1 (την κατασταση διαθεσιμος/απασχολημενος) πού την αποθηκευεις?

Εγω τον εκανα διδιαστατο και ζοριζομαι λιγο με την κληση της find, αλλα θα το ξανακοιταξω αυριο παλι.
Βασικά δισδιάστατο τον έκανα και εγώ απλά στο παράδειγμα τον έγραψα μονοδιάστατο για να μη είναι τόσο μπερδεμένο.
Όπως και εσύ έκανα ένα πίνακα 2xN. Στην πρώτη γραμμή αποθηκεύω τους αριθμούς κλήσης και στη δεύτερη τις θύρες εξόδου!
Γιατί έχεις πρόβλημα ?
Αν αποθηκεύεις τους αριθμούς στην πρώτη γραμμή θα γράψεις α(i)(0)
αν τους αποθηκεύεις στη δεύτερη α(i)(1)

Στη θέση των παρενθέσεων εννοώ αγκύλη


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Emfanever on May 13, 2008, 00:11:51 am
Ορίζω τους αριθμους κλήσης απο 111 εώς 101010 (για 10 συνδρομητές πχ)

όταν ζητάω απο τον χρήστη να εισάγει τον καλούμενο αριθμό όλοι από το 777 και πάνω δεν αναγνωρίζονται ως συνδρομητές! (δλδ δν τους βρίσκει η find στον πίνακα)

θα τρελαθώ :D


έχω τα εξής:

int n,m,i,s=0,*Sindromites
for (i=0;i<n;i++) Sindromites=(i+1)*11;

μέχρι το Sindromites[5]=66 όλα καλά..μετα ολα τα βγάζει -1

Έχεις χρησιμοποιήσει τη malloc για το syndromites? Αλλιώς που ξέρεις ότι έχεις χώρο για n μεταβλητές?
Λογικά πάει και γράφει μετά σε θέσεις που μπορεί να μην είναι ελεύθερες,αφού δήλωσες χώρο μόνο για 1 μεταβλητή.Δηλαδή τυχερός είσαι που φτάνει μέχρι το syndromites[5]!


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Anyparktos on May 13, 2008, 05:34:27 am
Αν βούλεται κανείς ας ποστάρει το πρόγραμμα γιατί μερικοί δεν καταλαβαίνουν χριστό ούτε τι ζητάει ο Κορτέσης ούτε πως να το κάνουμε,,,


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: johnnysp on May 13, 2008, 11:48:44 am
Μπορεί κάποιος να μου πει τι ορίσματα έχει η συνάρτηση qsort;;


Title: Απ: [Δομημένος Προγ.] Εργασία D 2008
Post by: Tonia on May 13, 2008, 12:02:05 pm
το καλύτερο είναι να κάνεις την ταξινόμηση με το χέρι. με τις έτοιμες συναρτήσεις μπερδεύεσαι και ξοδεύεις τον ίδιο χρόνο για να καταλάβεις πως δουλεύουν με αυτόν που χρειάζεται για να φτιάξεις 5 γραμμές παραπάνω κώδικα.


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: ion on May 13, 2008, 12:04:31 pm
λοιπόν είναι κάπως έτσι

qsort(πίνακας,αριθμός στοιχείων,μέγεθος στοιχείου,δεν καταλαβα εδώ τι θέλει)

στο δεν κατάλαβα τι θέλει λέει κανονικά μέτρο σύγκρισης
εγώ έβαλα ένα που βρήκα σ ένα βιβλίο και λειτουργεί
είναι η συνάρτηση
int comp(const void *a, const void *b)
{
   return * (int *)a - * (int *) b;
}

αυτά

Επίσης πιστεύω ότι στην κλήση της φάιντ θέλει και το κάτω όριο αλλιώς
πως θα κάνει την αναδρομή;


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Γιώργος on May 13, 2008, 12:06:49 pm
http://www.elook.org/programming/c/qsort.html


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: tomshare3 on May 13, 2008, 12:24:48 pm
λοιπόν είναι κάπως έτσι

qsort(πίνακας,αριθμός στοιχείων,μέγεθος στοιχείου,δεν καταλαβα εδώ τι θέλει)

στο δεν κατάλαβα τι θέλει λέει κανονικά μέτρο σύγκρισης
εγώ έβαλα ένα που βρήκα σ ένα βιβλίο και λειτουργεί
είναι η συνάρτηση
int comp(const void *a, const void *b)
{
   return * (int *)a - * (int *) b;
}

αυτά

Επίσης πιστεύω ότι στην κλήση της φάιντ θέλει και το κάτω όριο αλλιώς
πως θα κάνει την αναδρομή;


το αποτελεσμα στο return ειναι ενας θετικος ή αρνητικος αριθμος και αναλογα οριζεται η ταξινομηση..αυξουσα ή φθινουσα
http://www.cplusplus.com/reference/clibrary/cstdlib/qsort.html

για καποιο λογο η qsort δεν λειτουργει στον borland... στο visual studio ωστοσο λειτουργει κανονικα...


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: ion on May 13, 2008, 12:27:29 pm
axa! θενκς!

λοιπόν κάτι που δεν μπορώ καθόλου να καταλάβω είναι με τι θα γεμίσω αρχικά
τους πίνακες των θυρών εισόδου και εξόδου.
Αφού τα ρυθμίζει ο χρήστης τι θα τον ρωτήσω 100 φορές τι κάνει ο ένας συνδρομητής
και ο άλλος;
Ή 30 ποια θύρα εισόδου είναι διαθέσιμη και ποια όχι;

Ή να τους κάνω όλους διαθέσιμους αρχικά;


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: ion on May 13, 2008, 12:28:10 pm

για καποιο λογο η qsort δεν λειτουργει στον borland... στο visual studio ωστοσο λειτουργει κανονικα...


εγώ έχω μπόρλαντ και τρέχει κανονικά όπως την έγραψα


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: tomshare3 on May 13, 2008, 12:30:18 pm
μαλλον ο δικος μου borland εχει προβλημα... :-\ :-\ :-\


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Anyparktos on May 13, 2008, 14:59:06 pm
Παιδιά να ρωτήσω αφού λέει Ν μαξιμουμ 100 κτλ λογικά εννοεί να μην χρησιμοποιήσουμε malloc και να ορίσουμε τουσ πινακες ίσους με εκατό.Αφού όμως πρέπει οι αρι8μοί να μπουν κατα αύξουσα σειρά,δεν θα υπάρχουν κάποια μηδενικά στην αρχή του πίνακα(100-ν μηδενικά για την ακρίβεια όπου ν οι συνδρομητές)? επομένως αν είναι ο χρήστης να δώσει τους αριθμούς σε σειρά πρέπει να ξεκινήσει από το 100-ν-1 στοιχείο?
Και αν όχι τι κάνουμε?Sort τους αριθμούς του πίνακα?????


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: fourier on May 13, 2008, 15:05:44 pm
Ανεβαζω την εργασια μου, παρ' ολο που δεν ειναι ενταξει. Καποια μαλακια πρεπει να εχω κανει με την χρηση του διδιαστατου πινακα μεσα στη find και μου βγαζει segmentation error.

Επισης μου παρουσιαστηκε ενα αλλο προβλημα: οταν κανω scanf για μια μεταβλητη τυπου char, αποθηκευεται η τιμη στη μεταβλητη, αλλα το enter παραμενει στο καναλι εισοδου, με αποτελεσμα το προγραμμα να προσπερνα καποιες scanf, αφου για τιμη καταχωρει το enter. Εστειλα mail στον Κορτεση και μου ειπε να χρησιμοποιησω την fflush(stdin). Ωστοσο, πρωτον διαβασα στο internet οτι πρεπει να αποφευγεται, και δευτερον το δοκιμασα αλλα δεν εφερε αποτελεσμα. Το ελυσα λοιπον καπως "μπακαλικα": Δηλωσα μια "dummy" μεταβλητη τυπου char (την qqq) και εβαλα το προγραμμα να κανει ενα scanf γι αυτην πριν απο καθε scanf "επισημης" μεταβλητης, ωστε να μαζευει τα τυχον περισσευαμενα enter. Το μονο μειονεκτημα ειναι πως καποιες φορες που δεν περισσευουν enter στο καναλι, το προγραμμα σταματαει και περιμενει ενα enter για να συνεχισει.

Σημειωνω πως δοκιμασα να βαλω getchar στη θεση του scanf για τις char αλλα ειχα το ιδιο προβλημα.

Μια αλλη λυση που μου προτεινε ενας φιλος ειναι να βαλω ενα while-loop που θα επαναλαμβανει την scanf για οσο η εισοδος ειναι enter, αλλα προς το παρον δεν εχω χρονο (ουτε υπομονη!!!) να το δοκιμασω.
Εαν κανενας εχει να προτεινει τιποτα καλυτερο για το προβλημα, ή αν εντοπισει κανενας το λαθος μου στη συναρτηση, ειναι ευπροσδεκτος :)

Ακολουθει ο κωδικας:

Code:
#include <stdio.h>
#include <stdlib.h>

int find(int nmr, int **pinakas, int arxh, int telos);

int main(void) {

int **USERS, *IN_PORTS;
int n, m, i, frdprt, temp, number, result;
char end_call, portfree, incoming, t, qqq;

printf("\nPosoi syndromhtes yparxoun? ");
scanf("%d",&n);
if (n>100) {
printf("To kentro eksyphretei mexri 100 syndromhtes. Eisagete neo ari8mo oxi megalytero apo 100: ");
scanf("%d",&n);
}

printf("Poses 8yres eisodou dia8etei to kentro? ");
scanf("%d",&m);
if (m>30) {
printf("To kentro yposthrizei to poly mexri 30 8yres eisodou. Eisagete neo ari8mo oxi megalytero apo 30: ");
scanf("%d",&m);
}

USERS = (int **) malloc(n*sizeof(int *));
for (i=0; i<n; i++) {
USERS[i] = (int *) malloc(2*sizeof(int));
}

IN_PORTS = (int *) malloc(m*sizeof(int));

/* KA8E SYNDROMITHS EXEI ENAN ARI8MO THS MORFHS 1XX, OPOU XX ARI8MOS APO 0 MEXRI 99
EPISHS KA8E XRHSTHS TI8ETAI EKS ARXHS SE KATASTASH DIA8ESIMOS, OMOIWS KAI KA8E 8YRA  */

for (i=0; i<n; i++) {
USERS[i][0] = 100+i;
USERS[i][1] = 0;
}

for (i=0; i<m; i++) {
IN_PORTS[i] = -1;
}

printf("\nOi syndromhtes exoun ari8mo ths morfhs 1XX:\n");

/* DELETE */
for(i=0; i<n; i++) {
printf("%d. %d\n",i+1,USERS[i][0]);
}




/* EKKINHSH THS ATERMONOS EPANALHPSHS */

for(;;) {
fflush(stdin);
scanf("%c",&qqq);

printf("\n------------------------------------------------\n");
printf("\nENARKSH DIADIKASIAS\n");
printf("\nKatastash 8yrwn:\n");
for(i=0; i<m; i++) {
printf("%d --> %d\n",i+1,IN_PORTS[i]);
}


/* ERWTHSH GIA TERMATISMO SYNDIALEKSHS */
fflush(stdin);
scanf("%c",&qqq);
printf("\nExei termatistei kapoia syndialeksh (y/n) ? ");
scanf("%c",&end_call);

if (end_call=='y') {
fflush(stdin);
scanf("%c",&qqq);
printf("Poia 8yra apelef8erw8hke? ");
scanf("%d",&frdprt);

if (frdprt>m || frdprt<=0) {
printf("Den yparxei aftos o ari8mos, oi 8yres mas einai %d!!!\n",m);
}
else {
temp = IN_PORTS[frdprt-1];

if (temp==-1) {
printf("\nH 8yra htan hdh elef8erh.....");
}

else{
USERS[temp][1] = 0;
IN_PORTS[frdprt-1] = -1;
printf("%dh 8yra elef8erh.\nO syndromiths %d einai kai pali dia8esimos.\n",frdprt,USERS[temp][0]);
}
}
}

/* ERWTHSH GIA EISERXOMENH KLHSH */
fflush(stdin);
scanf("%c",&qqq);
printf("\nYparxei eiserxomenh klhsh (y/n) ? ");
scanf("%c",&incoming);

if (incoming=='y') {

fflush(stdin);
scanf("%c",&qqq);
printf("\nYparxei dia8esimh 8yra (y/n) ? ");
scanf("%c",&portfree);

if (portfree=='y') {
printf("\nEisagete ton ari8mo tou syndromhth: ");
scanf("%d",&number);

/* ---------------------------- KLHSH THS find ----------------------- */

result = find(number, USERS, 0, n);

if (result==-1) {
printf("\nH klhsh aporriptetai.\n");
}
else {
for(i=0; i<m; i++) {
if (IN_PORTS[i]==-1) {
IN_PORTS[i]=result;
USERS[result][1]=1;
}
}
}
}
else {
printf("\nH klhsh aporriptetai, den yparxoun dia8esimes 8yres.\n");
}

}
}

return 0;
}

int find(int nmr, int **pinakas, int arxh, int telos) {

int middle, running;

middle = ((arxh+telos)/2);
running = pinakas[middle][0];

if (nmr==running) {
return(middle);
}

else if (nmr<running) {
find (nmr, pinakas, arxh, middle-1);
}

else if (nmr>running) {
find (nmr, pinakas, middle+1, telos);
}

else {
return(-1);
}
}


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Emfanever on May 13, 2008, 15:39:22 pm
Στο πρόγραμμά σου ,μπορείς να απαντήσεις ότι δεν υπάρχει ελεύθερη θύρα εισόδου, ενώ στην πραγματικότητα υπάρχει. Τι νόημα έχει αυτό??
Βασικά δε φταις εσύ αλλά η εκφώνηση ,αλλά πάλι το θεωρώ πολύ ανούσιο.

Επίσης στην πρώτη κλήση  αποθηκεύεται ο αριθμός του συνδρομητή σε όλες τις θύρες,  ενώ πρέπει μόνο στην πρώτη.Βάλε ένα break

for(i=0; i<m; i++)
       if (IN_PORTS[ι]==-1) {
               N_PORTS[ι]=result;
          USERS[result][1]=1;
               break;
       }            
                                   
Τη μεταβλητή qqq βγάλτην από παντού, αφού έχεις βάλει την fflush πιο πριν, λογικό είναι μετά να περιμένει να της δώσεις τιμή . (Με αυτό τον τρόπο στο borland που το δοκίμασα δεν περιμένει να πατήσεις enter.)

_________________________________________________ ______
printf("\nPosoi syndromhtes yparxoun? ");
   scanf("%d",&n);
   while (n>100) {          //με το if αν και τη 2η φορά έβαζες λάθος νούμερο θα το δεχόταν!
      printf("To kentro eksyphretei mexri 100 syndromhtes. Eisagete neo ari8mo oxi megalytero apo 100: ");
      scanf("%d",&n);
   }
_________________________________________________ _______

Τώρα για τη find( ) :
Το telos είναι n-1 όχι n.


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: fourier on May 13, 2008, 16:43:48 pm
Στο πρόγραμμά σου ,μπορείς να απαντήσεις ότι δεν υπάρχει ελεύθερη θύρα εισόδου, ενώ στην πραγματικότητα υπάρχει. Τι νόημα έχει αυτό??
Βασικά δε φταις εσύ αλλά η εκφώνηση ,αλλά πάλι το θεωρώ πολύ ανούσιο.

Ετσι οπως τα λες ειναι, το συζητησαμε και με τον "Γιωργο" λιγες σελιδες πιο πανω, αλλα αφου το ζηταει......... :-X

Επίσης στην πρώτη κλήση  αποθηκεύεται ο αριθμός του συνδρομητή σε όλες τις θύρες,  ενώ πρέπει μόνο στην πρώτη.Βάλε ένα break

for(i=0; i<m; i++)
       if (IN_PORTS[ι]==-1) {
               N_PORTS[ι]=result;
          USERS[result][1]=1;
               break;
       }            
 

Ευχαριστω, θα το κοιταξω!

Τη μεταβλητή qqq βγάλτην από παντού, αφού έχεις βάλει την fflush πιο πριν, λογικό είναι μετά να περιμένει να της δώσεις τιμή . (Με αυτό τον τρόπο στο borland που το δοκίμασα δεν περιμένει να πατήσεις enter.)

Μαλλον δεν εγινα σαφης πιο πανω: Εβαλα αρχικα την fflush, οπως μου ειπε και ο Κορτεσης, αλλα στο linux δεν δουλεψε. Οποτε την αφησα, και εβαλα απο πανω και την qqq.

printf("\nPosoi syndromhtes yparxoun? ");
   scanf("%d",&n);
   while (n>100) {          //με το if αν και τη 2η φορά έβαζες λάθος νούμερο θα το δεχόταν!

Ναι εχεις δικιο, αλλα θεωρησα οτι μια προειδοποιηση ειναι αρκετη. Ευχαριστω για την επισημανση παντως, ισως το αλλαξω με while :)

Τώρα για τη find( ) :
Το telos είναι n-1 όχι n.

Σωστος!!! Γι'αυτο το segmentation error!! Thanx!  ^hello^


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Γιώργος on May 13, 2008, 16:45:51 pm
Η fflush(stdin) ΔΕΝ δουλεύει παιδιά. Θα πρέπει να φτιάξετε ένα δικό σας.


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: fourier on May 13, 2008, 16:53:48 pm
Τώρα για τη find( ) :
Το telos είναι n-1 όχι n.

Σωστος!!! Γι'αυτο το segmentation error!! Thanx!  ^hello^

H παρατηρηση σου ειναι οντως σωστη, αλλα και μετα τη διορθωση το segmentation error fault παραμενει.....


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Emfanever on May 13, 2008, 17:19:18 pm
Μάλλον πρέπει να βάλεις κάπου ένα έλεγχο για να σταματήσουν οι επαναλήψεις σε περίπτωση που η arxh γίνει μικρότερη από το telos.
Τώρα δε ξέρω σε ποιο ακριβώς σημείο πρέπει να το βάλεις στη δικιά σου find ,γιατί εγώ το έχω κάνει κάπως διαφορετικά.


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: fourier on May 13, 2008, 17:28:14 pm
Σκατα, δε δουλευει :(

Ρε συ δεν ανεβαζεις κι εσυ το δικο σου να ριξω μια ματια?


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: solli144 on May 13, 2008, 20:06:08 pm
Παιδιά το πρόγραμμα που έφτιαξα γίνεται compiled χωρίς κανένα πρόβλημα αλλά όταν εκτελειται το exe και όταν γεμίζει κάπως ο πίνακας εισόδου μου βγάζει ένα error το λειτουργικό σύστημα( και στα Vista και   στα XP ).

Εχει κάποιος καμιά ιδέα που μπορεί αυτό να οφείλεται ?



Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Γιώργος on May 13, 2008, 20:08:16 pm
Εχει κάποιος καμιά ιδέα που μπορεί αυτό να οφείλεται ?
2048 ιδέες έχω, σου κάνουν;

Πρέπει να βρεις πού ακριβώς κολλάει, έτσι δεν γίνεται δουλειά.


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: solli144 on May 13, 2008, 20:12:44 pm
τι να σου πω.... παντως δεν χρησιμοποίησα πουθενά δέσμευση μνήμης ή pointers


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Γιώργος on May 13, 2008, 20:13:39 pm
τι να σου πω.... παντως δεν χρησιμοποίησα πουθενά δέσμευση μνήμης ή pointers
Ωραία, άλλοι 1023 λόγοι. Βρες βρε συ σε ποια εντολή σκαλώνει, δεν βγαίνει άκρη έτσι!


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: solli144 on May 13, 2008, 20:16:02 pm
κάπου εδω :

pos=-1;
      i=0;
      while(pos<0){
         if(inp==-1){
            pos=i;
         }
         i++;
      }
      if(pos>=0){
         printf("Yparxei eiserxomenh klish? (y=1/n=0)\n");
         scanf("%d",&ap);
         if(ap){
            printf("Dwse ton ari8mo ths klishs:\n");
            scanf("%d",&num);
            if(find(num,NUM,0,N)!=-1){
               if(ex[find(num,NUM,0,N)]==0){
                  inp[pos]=find(num,NUM,0,N);
                  ex[find(num,NUM,0,N)]=1;
               }else{
                  printf("o syndromitis me ton ari8mo pou kalesate einai apasxolimenos\n");
               }
            }else{
            printf("den yparxei autos o ari8mos pou dwsate!\n");
            }
         }
      }else{
         printf("den yparxei dia8esimh 8yra eisodou\n");
      }


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: solli144 on May 13, 2008, 20:16:28 pm
 :-\


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Γιώργος on May 13, 2008, 20:17:45 pm
Οκ, καλά το πας. Βάλε κάποια printf("TEST 1\n") κοκ ανάμεσα στις εντολές να δεις σε ποια ακριβώς κολλάει.  :)


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: zeus90 on May 13, 2008, 21:06:05 pm
Υπάρχει κανείς τελικά που κατάφερε να κάνει το πρόγραμμά του να διαβάζει 10ψήφιους τηλεφωνικούς αριθμούς σε Borland?
Αν ναι ΠΩΣ??


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: fourier on May 13, 2008, 21:32:05 pm
Υπάρχει κανείς τελικά που κατάφερε να κάνει το πρόγραμμά του να διαβάζει 10ψήφιους τηλεφωνικούς αριθμούς σε Borland?
Αν ναι ΠΩΣ??

Γιατι να το κανεις με 10ψηφιους? Δωσε αριθμους απο 0 μεχρι Ν-1


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: zeus90 on May 13, 2008, 21:33:25 pm
Τι είναι το Ν?


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Emfanever on May 13, 2008, 21:38:04 pm
Υπάρχει κανείς τελικά που κατάφερε να κάνει το πρόγραμμά του να διαβάζει 10ψήφιους τηλεφωνικούς αριθμούς σε Borland?
Αν ναι ΠΩΣ??

Ένα παράδειγμα.....

Code:
#include <stdio.h>

void main()
{
   int i;
   unsigned long a[5];

   printf("Dwse ta 5 stoixeia: \n");
   for(i=0;i<5;i++)
       scanf("%lu",&a[i]);

   printf("\nPinakas:\n");
   for(i=0;i<5;i++)
       printf("%lu\n",a[i]);
}


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: fourier on May 13, 2008, 21:46:28 pm
Ρε παιδες να ρωτησω κατι γιατι θα τρελαθω. Η find μου επιστρεφει σε καθε κληση της την τιμη -1. Εβαλα μερικα printf με βλακειες μεσα στην find ετσι ωστε να εντοπισω πού ειναι το προβλημα. Η find μου ειναι αυτη:

int find(int nmr, int **pinakas, int arxh, int telos) {

      int middle, running;

      middle = ((arxh+telos)/2);
      running = pinakas[middle][0];

      printf("arxh=%d , telos=%d , middle=%d , running=%d ,  number=%d\n",arxh,telos,middle,running,nmr);

      if (running==nmr) {
         printf("OEO!\n");
         return(middle);
      }

      else if (nmr<running) {
         find (nmr, pinakas, arxh, middle-1);
      }

      else if (nmr>running) {
         find (nmr, pinakas, middle+1, telos);
      }

      else {
         return -1;
      }

   printf("XAXAXAXAXAXAX\n");
   return -1;
}


Και οταν την καλω, με n=8 συνδρομητες, και αριθμο εισερχομενης κλησης 102, μου επιστρεφει το παρακατω (attached screenshot, καθως δεν καταφερα να κανω copy απο το terminal του xandros :D):
(http://www.thmmy.gr/smf/index.php?action=dlattach;topic=24333.0;attach=29558;image)
Οπως λεει και ο κωδικας, η συναρτηση καλει τον εαυτο της οσες φορες χρειαστει, με διαρκως μειουμενο διαστημα αναζητησης.
Καποια στιγμη (στην 3η προσπαθεια) το διαστημα εχει πλεον κοινη αρχη και τελος, αρα η αναζητηση εχει ολοκληρωθει. Σ' αυτην την περιπτωση, το πρωτο if condition επαληθευεται, και η συναρτηση το βλεπει, καθως εκτυπωνει το "ΟΕΟ!", αλλα ωστοσο δεν επιστρεφει την main την τιμη της middle, αλλα αντιθετα κατεβαινει στο τελος, κατω απο τα if-else-conditions και επιστρεφει 2 φορες το "ΧΑΧΑΧΑΧΑΧΑ"!!! (Το "apotelesma anazhthshs =**" το εβαλα στη main, για να μου εκτυπωνει την επιστρεφομενη τιμη)

ΤΙ ΣΚΑΤΑ ΣΥΜΒΑΙΝΕΙ ΕΔΩ?????


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: zeus90 on May 13, 2008, 21:49:46 pm
Quote
void main()
{

 unsigned long users[100],inports[30],outports[100],i,j=0,k,temp;

 printf("Dwse mexri 100 arithmous sindromitwn\n Gia na stamatiseis patise 0\n");

 for (i=0;i<99;i++)
  {
    scanf("%lu",&k);
    if (k==0)
    {
    break;
    }
    else
    {
    j=j+1;
    users=k;
    printf("%lu\n",users);
    }
   }
 for (i=1;i<j;i++)
   {
    for (k=j;k>0;k--)
     {
       if (users[k-1]>users[k])
       {
   temp=users[k];
   users[k]=users[k-1];
   users[k-1]=temp;
       }
      }
     }
     for (i=0;i<j;i++)
     {
         printf("%lu\n",users);
         }



}
Έχω κάνει τον παραπάνω κώδικα για να εισάγω τους αριθμούς και να τους ταξινομώ.Για κάποιον λόγο όμως τον προτελευταίο αριθμό που εισάγω , στην ταξινόμηση τον κάνει 0.Μπορεί κανείς να βοηθήσει?


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Γιώργος on May 13, 2008, 21:55:45 pm
Αυτή ακριβώς είναι η πιο κομψή υλοποίηση. :)


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Emfanever on May 13, 2008, 22:34:51 pm
Quote
void main()
{

 unsigned long users[100],inports[30],outports[100],i,j=0,k,temp;

 printf("Dwse mexri 100 arithmous sindromitwn\n Gia na stamatiseis patise 0\n");

 for (i=0;i<99;i++)
  {
    scanf("%lu",&k);
    if (k==0)
    {
    break;
    }
    else
    {
    j=j+1;
    users=k;

.................................................

     }
     for (i=0;i<j;i++)
     {
         printf("%lu\n",users);
         }



}
Έχω κάνει τον παραπάνω κώδικα για να εισάγω τους αριθμούς και να τους ταξινομώ.Για κάποιον λόγο όμως τον προτελευταίο αριθμό που εισάγω , στην ταξινόμηση τον κάνει 0.Μπορεί κανείς να βοηθήσει?

Λίγο μπερδεμένα είναι, δοκίμασε αυτό:
Code:
#include <stdio.h>

void main()
{
 int i,j=0,n;
 unsigned long users[100],inports[30],outports[100],k,temp;

 printf("Dwse ton arithmo twn sindromitwn:\n");
 scanf("%d",&n);
 while(n>100){
     printf("Dwse mikrotero arithmo:");
     scanf("%d",&n);
 }
 printf("Dwse tous arithmous klisis:\n");
 for (i=0;i<n;i++)
    scanf("%lu",&users[i]);

 printf("Pinakas:\n");
 for(i=0;i<n;i++)
     printf("%lu\n",users[i]);     
   
 for (i=0;i<n;i++)
   {
    for (j=0;j<n-i-1;j++)
     {
       if (users[j]>users[j+1])
       {
       temp=users[j];
       users[j]=users[j+1];
       users[j+1]=temp;
       }
      }
     }
     printf("Taxinomimenos:\n");
     for (i=0;i<n;i++)
     {
         printf("%lu\n",users[i]);
         }



}


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: AgentCain on May 13, 2008, 22:37:35 pm
Quote

 for (i=0;i<99;i++)
  {
    scanf("%lu",&k);
    if (k==0)
    {
    break;
    }
    else
    {
    j=j+1;
    users=k;
    printf("%lu\n",users);
    }
   }
Γιατί βάζεις <99? Θα βάλεις είτε <100 είτε <=99. Το πρόγραμμά σου θα πρέπει να τρέξει από 0 μέχρι και 99. Έτσι που το έγραψες τρέχει μέχι το 98

Quote
for (i=1;i<j;i++)
   {
    for (k=j;k>0;k--)
     {
       if (users[k-1]>users[k])
       {
   temp=users[k];
   users[k]=users[k-1];
   users[k-1]=temp;
       }
      }
     }
     for (i=0;i<j;i++)
     {
         printf("%lu\n",users);
         }
Έκανες ταξινόμηση φυσαλίδας ε?
Πάλι το ίδιο. Στη ταξινόμηση αυτή το k σου πρέπει να πάει από το μέγιστο στο ελάχιστο. Το j σου μετράει πόσους συνδρομητές έβαλες. Αν όμως εσύ έβαλες π.χ. 5 τότε αυτοί είναι τοποθετημένοι στις θέσεις 0-4. Όμως στην 1η επανάληψη του λες "σύγκρινε το users{4} με το users{5}???
Προφανώς η θέση 5 είναι κενή και με όλη αυτή την αλυσίδα κάπου σου μηδενίζονται τα στοιχεία



Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: AgentCain on May 13, 2008, 22:48:26 pm
Ρε παιδες να ρωτησω κατι γιατι θα τρελαθω. Η find μου επιστρεφει σε καθε κληση της την τιμη -1. Εβαλα μερικα printf με βλακειες μεσα στην find ετσι ωστε να εντοπισω πού ειναι το προβλημα. Η find μου ειναι αυτη:
1)Ελπίζω οι αριθμοί σου είναι σωστά ταξινομημένοι σε αύξουσα σειρά.
2)Το 1ο return νομίζω είναι περιττώ
3)Πρέπει να βάλεις και έναν έλεγχο παραπάνο ώστε να βλέπει σε κάθε κλήση εάν ο αριθμός που ψάχνεις συνεχίζει να βρίσκεται ανάμεσα στο μέγιστο και ελάχιστο όριο που ψάχνεις.


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: fourier on May 13, 2008, 22:59:53 pm
Thanx agentcain, τη βρηκα την ακρη. Το προγραμμα τελειωσε και δουλευει σωστα :D :D :D


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: solli144 on May 13, 2008, 23:17:21 pm
Οκ, καλά το πας. Βάλε κάποια printf("TEST 1\n") κοκ ανάμεσα στις εντολές να δεις σε ποια ακριβώς κολλάει.  :)

καλή μαγκιά thanks    ;)


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Γιώργος on May 13, 2008, 23:21:55 pm
Το debugging είναι η μισή μου ζωή ρε!!  :D :D


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: fourier on May 13, 2008, 23:22:53 pm
Τελικα τη find την εγραψα ετσι:

Code:
int find(int nmr, int **pinakas, int arxh, int telos) {

int middle, running;

if (nmr<pinakas[arxh][0] || nmr>pinakas[telos][0]) {
return -1;
}

middle = ((arxh+telos)/2);
running = pinakas[middle][0];


if (running==nmr) {

return middle;
}

else if (nmr<running) {
middle = find (nmr, pinakas, arxh, middle-1);
return middle;
}

else if (nmr>running) {
middle = find (nmr, pinakas, middle+1, telos);
return middle;
}

else {
return -1;
}

printf("XAXAXAXAXAXAX\n");

}


edit: Και δουλευει :D


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: zeus90 on May 13, 2008, 23:39:09 pm
@AgentCain: Προφανώς έκανα μ@@@@ες στην ταξινόμηση.Το άλλο "απροσεξία" !!! Τέσπα.Ευχαριστώ για τις διορθώσεις.


Για να μην ταλαιπωρούμε άλλο μάλλον θα ακολουθήσω τον τρόπο του Emfanever
Ευχαριστώ συνάδελφοι!!!


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: leon-SPT on May 14, 2008, 00:14:54 am
@AgentCain: Προφανώς έκανα μ@@@@ες στην ταξινόμηση.Το άλλο "απροσεξία" !!! Τέσπα.Ευχαριστώ για τις διορθώσεις.


Για να μην ταλαιπωρούμε άλλο μάλλον θα ακολουθήσω τον τρόπο του Emfanever
Ευχαριστώ συνάδελφοι!!!

Και ποιος ειναι ο τροπος του Εmfanever?? PLZZZZ Μου εχουν σπασει εκεινα τα 2 που κρεμονται (printf"αρχιδια");


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Emfanever on May 14, 2008, 00:22:24 am
Τι ακριβώς θες? Την ταξινόμηση ή τη find?


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: leon-SPT on May 14, 2008, 00:23:21 am
τη find


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Emfanever on May 14, 2008, 00:28:52 am
Ορίστε!
Code:

int find(int sortedArray[], int first, int last, int key)

{

   if (first <= last) {
       int mid = (first + last) / 2;
       if (key == sortedArray[mid])
           return mid;   
       else if (key < sortedArray[mid])
           
           return find(sortedArray, first, mid-1, key);
       else
           
           return find(sortedArray, mid+1, last, key);
   }
   return -1;   
}


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: leon-SPT on May 14, 2008, 00:34:46 am
Οκ thx.. Αλλα να ρωτήσω και κάτι άλλο.. Μπορείς να πεις κάθε μεταβλητή που όρισες τί αντιπροσωπεύει στο πρόγραμμα?.. Γιατί το κανα με 2 μεταβλητές και έχεις 4.. Τhx


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Emfanever on May 14, 2008, 00:40:38 am
sortedArray[]   -> ο πίνακας που περιέχει τους αριθμούς κλήσης των συνδρομητών
first  -> Αρχικά είναι το 0
last  -> Αρχικά είναι Ν-1 , όπου Ν ο αριθμός των συνδρομητών
key   -> ο αριθμός κλήσης που ψάχνουμε

 :)


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: gagas on May 14, 2008, 01:05:46 am
να κανω μια σοβαρη ερωτηση?
μας ζηταει το προγραμμα αρχικα να ελεγχει αν τερματιζεται καποια κληση..πως θα μπορει να το 'αντιληφθει' αυτο?
μηπως πρεπει να ελεγχει εαν  ο πινακας της θυρας εισοδου εχει ελαττωθει?αυτο πως θα το ξερουμε?μηπως κ παλι χρειαζεται μνμ απο τον χρηστη..κ αυτο ηθελε να γραψει ο καθηγητης στην 5η παρατηρηση?δεν μπορω να το σκεφτω καπως αλλιως


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Emfanever on May 14, 2008, 01:09:01 am
Θα ρωτάει το πρόγραμμα:
" Τέλειωσε καμία κλήση? "

Και θα απαντάς από το πληκτρολόγιο "ΝΑΙ" ή "ΟΧΙ"
Αν πεις ΝΑΙ θα ρωτάει με ποιο συνδρομητή για να ελευθερώνεται η αντίστοιχη θύρα εισόδου και εξόδου!


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: gagas on May 14, 2008, 01:13:32 am
σε ευχαριστω παρα πολυ για την βοηθεια..!


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: tomshare3 on May 14, 2008, 01:14:24 am
περιττο να σχολιασω για 20000000000 φορα στο topic οτι και αυτο ειναι τελειως @@@@@@! :D


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: leon-SPT on May 14, 2008, 02:53:30 am
 int find (long unsigned int A[], int first, int last,long unsigned int key)
  {     
   
        if (last < first){
           return -1 ;
       mid = (last + first)/2;
       if (A[mid] > key){
           return find(A, first,mid-1,key);}
       else if (A[mid] < key)
           return find(A,mid+1, last,key);}
       else
           return mid; }
   }


Παιδια ξέρει κανείς γιατι μου βγάζει λάθος??? Μου το βγάζει στο πρώτο {...
Δηλαδή λογικά στην 1η σειρά..
Μήπως πρέπει να δηλώσς τίποτα?


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: gagas on May 14, 2008, 04:45:03 am
το λαθος ειναι οτι κανεις διπλη δηλωση..κ int kai long unsigned.ενα απο τα δυο..


απο οτι βλεπω κανεις δεν χρησιμοποιει δυναμικη δεσμευση μνημης(malloc).
παρολο που δινει μεγιστες διαστασεις πινακων μηπως θα επρεπε να την χρησιμοποιησουμε?



Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: leon-SPT on May 14, 2008, 10:24:18 am
Μπααα... Δεν ειναι εκεί το λάθος.. Την έχω δηλώσει κι έτσι πριν την int main()


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Wanderer on May 14, 2008, 11:03:27 am
Η πρώτη παράμετρος είναι pointer? Αν ναι τότε πρέπει να το δηλώσεις ως τέτοιο (βάζοντας ένα αστεράκι μετά τον τύπο της μεταβλητής. Κάνε το long unsigned int *A). Επειδή δηλώνεις μέσω του ορίσματος ότι ο pointer Α θα δείχνει στη διεύθυνση του πρώτου στοιχείου του πίνακα που θέλεις, μπορείς μέσα στη find να χρησιμοποιήσεις το Α σαν πίνακα κανονικά
Code:
 A[mid], A[1], A[x] κ.λ.π. 


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Emfanever on May 14, 2008, 11:21:28 am

Παιδια ξέρει κανείς γιατι μου βγάζει λάθος??? Μου το βγάζει στο πρώτο {...
Δηλαδή λογικά στην 1η σειρά..
Μήπως πρέπει να δηλώσς τίποτα?

http://www.thmmy.gr/smf/index.php?topic=24333.msg463453#msg463453


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: leon-SPT on May 14, 2008, 12:32:54 pm
Παιδιά ορίτστε το πρόβλημα... Κάπου μυ βγάζει λάθος... Οποιος έχει κουράγιο, ας το ρίξει μια ματιά και ας μου πει που είναι το λάθος,....


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: leon-SPT on May 14, 2008, 14:00:27 pm
Kαμιά ιδέα κανείς??


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: smo on May 14, 2008, 14:03:16 pm
int find (long unsigned int A[], int first, int last,long unsigned int key)
  {     
   
        if (last < first){
           return -1 ;
       mid = (last + first)/2;
       if (A[mid] > key){
           return find(A, first,mid-1,key);}
       else if (A[mid] < key)
           return find(A,mid+1, last,key);}
       else
           return mid; }
   }


Παιδια ξέρει κανείς γιατι μου βγάζει λάθος??? Μου το βγάζει στο πρώτο {...
Δηλαδή λογικά στην 1η σειρά..
Μήπως πρέπει να δηλώσς τίποτα?

Εισαι σιγουρος οτι εχεις βαλει --->{ και } τις μλκιες σωστα? Δες το πρωτο ιf πχ αλλα και μετα νομιζω.


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Emfanever on May 14, 2008, 14:09:03 pm
Παιδιά ορίτστε το πρόβλημα... Κάπου μυ βγάζει λάθος... Οποιος έχει κουράγιο, ας το ρίξει μια ματιά και ας μου πει που είναι το λάθος,....

Αφού σου πόσταρα ακριβώς τη find και πάλι λάθος κάνεις? Ένα copy paste είναι.

Code:
int find(unsigned long int A[], int first, int last,unsigned long int key) 

{
   int mid;
   if (first <= last) {
       int mid = (first + last) / 2;
                                                           //  <- εδώ είχες λάθος αγκύλη
       if (key == A[mid]){
           return mid;   }
       else if (key < A[mid]){
           return find(A, first, mid-1, key);}
       else{
           return find(A, mid+1, last, key);}
   }         
   return -1;   
}


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: leon-SPT on May 14, 2008, 14:10:15 pm
Οκ το βρήκα το λάθος σε αυτό... Βασικά τώρα μου βγάζει το μίζερο "Να μην αποσταλεί" από τα  windows... ΜΙΖΕΡΟ


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Emfanever on May 14, 2008, 14:13:55 pm
Τι να σου πω ,δε ξέρω, εμένα στο Dev τρέχει κανονικά πάντως


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: gagas on May 14, 2008, 14:47:42 pm
πως γινεται αλλη δηλωση να εχει ο πινακας κ το key κ αλλη το first και το last?

επισης:οταν χρησιμοποιω την find η τιμη που επιστρεφει δεν πρεπει να την καταχωρησω σε μεταβλητη?δηλ
χ=find();

μου βγαζει λαθος σε αυτη την εκφραση..


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Papatanasis on May 14, 2008, 14:52:36 pm
πως γινεται αλλη δηλωση να εχει ο πινακας κ το key κ αλλη το first και το last?

επισης:οταν χρησιμοποιω την find η τιμη που επιστρεφει δεν πρεπει να την καταχωρησω σε μεταβλητη?δηλ
χ=find();

μου βγαζει λαθος σε αυτη την εκφραση..

Στην find τα βαζεις τα ορισματα ή την εχει οπως πιο πανω?
Αν δεν εχεις τα ορισματα λογικο ειναι να σου βγαζει λαθος!


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Time_Tripper on May 14, 2008, 14:55:56 pm
εισαι σιγουρος οτι εχεις δηλωσει σωστα τη find?
μες στη main πρεπει να ναι της μορφης x=find(array,first,last,key)
επεισης προσεξε το x να ειναι ιδιου τυπου με την find (π.χ. int)


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Emfanever on May 14, 2008, 14:57:27 pm
πως γινεται αλλη δηλωση να εχει ο πινακας κ το key κ αλλη το first και το last?

επισης:οταν χρησιμοποιω την find η τιμη που επιστρεφει δεν πρεπει να την καταχωρησω σε μεταβλητη?δηλ
χ=find();

μου βγαζει λαθος σε αυτη την εκφραση..

Τα first last γίνεται να είναι int γιατί μπαίνουν μέσα στην αγκύλη , πχ. array[first]

x=find() ,όπου x int. Κανονικά δε θα έπρεπε να βγάζει λάθος


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: gagas on May 14, 2008, 15:03:07 pm
int find(unsigned long arrayb[],unsigned long key)
main()
{
int k;
unsigned long a,array[100];
.
.
k=find(array[],a);
..
}
το λαθος που βγαζει ειναι:
expression syntax
μαυριζει την σχεση k=find(array[],a);


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Emfanever on May 14, 2008, 15:18:54 pm
mipos exei lathos i find?


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: gagas on May 14, 2008, 15:22:32 pm
εβαλα αντι για find(array[],a)
find(i,a)  και το παιρνει σωστο..!μηπως το προβλημα ειναι στους πινακες κ πρεπει να βαλω pointers??


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: leon-SPT on May 14, 2008, 17:07:15 pm
Παιδιά έχει κανείς την ταξινόμηση (bubblesort) να την πετάξει λίγο εδώ?


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: dimvam on May 14, 2008, 17:28:55 pm
Και επίσης να ρωτήσω κάτι άλλο, μια συνάρτηση long int πώς πρέπει να τη βάλουμε στο scanf για να τη διαβάσει?


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Emfanever on May 14, 2008, 17:36:39 pm
Παιδιά έχει κανείς την ταξινόμηση (bubblesort) να την πετάξει λίγο εδώ?

for (i=0; i<n-1; i++)
  for (j=0; j<n-1-i; j++)
    if (a[j+1] < a[j]) { 
      tmp = a[j];         
      a[j] = a[j+1];
      a[j+1] = tmp;
  }

Και επίσης να ρωτήσω κάτι άλλο, μια συνάρτηση long int πώς πρέπει να τη βάλουμε στο scanf για να τη διαβάσει?
scanf("%ld",......);


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Time_Tripper on May 14, 2008, 18:28:00 pm
εβαλα αντι για find(array[],a)
find(i,a)  και το παιρνει σωστο..!μηπως το προβλημα ειναι στους πινακες κ πρεπει να βαλω pointers??


δοκιμασε find(array,a)
εγω ετσι το κανα κ ηταν σωστο
βεβαια το κανα με malloc...  ::)


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: zeus90 on May 14, 2008, 21:05:59 pm
εβαλα αντι για find(array[],a)
find(i,a)  και το παιρνει σωστο..!μηπως το προβλημα ειναι στους πινακες κ πρεπει να βαλω pointers??

Απλά μην βάζεις τις αγκύλες.Είχα και εγώ το ίδιο ακριβώς πρόβλημα.Αφού τα δοκίμασα όλα έκανα και αυτό ΚΑΙΙΙΙΙ
ΤΙ ΗΔΟΝΗ
COMPILE STATUS:SUCCESS


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Γιώργος on May 14, 2008, 21:14:35 pm
Ναι ρε παιδιά, στην ΚΛΗΣΗ της συνάρτησης απ' τη main βάζουμε σκέτο το όνομα του πίνακα. Δείκτη περνάμε στην ουσία!
Στη δήλωσή της φυσικά και βάζουμε αγκύλες!


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: anonymous-root on May 14, 2008, 21:20:00 pm
εβαλα τα νουμερα ως unsigned long int και τα διαβάζω με %lu.


όταν κάνω την ταξινόμηση όμως, με όλους τους τρόπους, άλλες φορές τα κάνει σωστά και άλλες αλλάζει τους αριθμούς!

τι παιζει;


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: zeus90 on May 14, 2008, 21:21:39 pm
Πώς κάνεις την ταξινόμηση?Είχα και εγώ παρόμοιο πρόβλημα και το έλυσα.... ;)


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: anonymous-root on May 14, 2008, 21:38:52 pm
qsort, bubblesort.


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: zeus90 on May 14, 2008, 21:46:55 pm
Code:
#include <stdio.h>

void main()
{
 int i,j=0,n;
 unsigned long users[100],inports[30],outports[100],k,temp;

 printf("Dwse ton arithmo twn sindromitwn:\n");
 scanf("%d",&n);
 while(n>100){
     printf("Dwse mikrotero arithmo:");
     scanf("%d",&n);
 }
 printf("Dwse tous arithmous klisis:\n");
 for (i=0;i<n;i++)
    scanf("%lu",&users[i]);

 printf("Pinakas:\n");
 for(i=0;i<n;i++)
     printf("%lu\n",users[i]);     
   
 for (i=0;i<n;i++)
   {
    for (j=0;j<n-i-1;j++)
     {
       if (users[j]>users[j+1])
       {
       temp=users[j];
       users[j]=users[j+1];
       users[j+1]=temp;
       }
      }
     }
     printf("Taxinomimenos:\n");
     for (i=0;i<n;i++)
     {
         printf("%lu\n",users[i]);
         }



}

Δοκίμασε αυτό προσαρμοσμένο στα ονόματα των δικών σου μεταβλητών και πες...


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: anonymous-root on May 14, 2008, 22:00:04 pm
Δοκίμασε αυτό προσαρμοσμένο στα ονόματα των δικών σου μεταβλητών και πες...


ευχαριστώ φίλε
μάλλον κάτι πρέπει να παίζει με τους αριθμούς που έβαζα όμως.
εβαζα 9562651687 κτλ.

αυτή τη στιγμή κάνω debug! δεν προλαβαίνω για δοκιμές κώδικα (2 ώρες μείνανε!)

ευχαριστώ και πάλι!


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: fourier on May 14, 2008, 22:06:51 pm
Μια απορια που εχω απ' αυτα που διαβαζω, ειναι γιατι βαζετε το προγραμμα να σας ζηταει χειροκινητα αριθμους, και δεν το βαζετε να τους δημιουργει αυτοματα? Ετσι γλιτωνετε και το sorting, αφου μπορει να τους βαλει εξ' αρχης σε αυξουσα σειρα.....

Εγω το' βαλα να δινει αριθμους της μορφης 1ΧΧ, οπου ΧΧ απο 00 μεχρι 99..........


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: zeus90 on May 14, 2008, 22:12:33 pm
Μια απορια που εχω απ' αυτα που διαβαζω, ειναι γιατι βαζετε το προγραμμα να σας ζηταει χειροκινητα αριθμους, και δεν το βαζετε να τους δημιουργει αυτοματα? Ετσι γλιτωνετε και το sorting, αφου μπορει να τους βαλει εξ' αρχης σε αυξουσα σειρα.....

Εγω το' βαλα να δινει αριθμους της μορφης 1ΧΧ, οπου ΧΧ απο 00 μεχρι 99..........
Δίκιο έχεις αλλά το άλλο είναι πιο ρεαλιστικό....

@anonymous-root
Βάζε αριθμούς μέχρι 4,000,000.Δεν δέχεται μεγαλύτερους αριθμούς η unsigned long μεταβλητή...

Good Luck!!! :D


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: anonymous-root on May 14, 2008, 22:15:29 pm
Μας αρέσει να "σσκοτώνουμε" τους αριθμούς στο πληκτρολόγιο :P :D



@anonymous-root
Βάζε αριθμούς μέχρι 4,000,000.Δεν δέχεται μεγαλύτερους αριθμούς η unsigned long μεταβλητή...

Good Luck!!! :D
+


αυτό το λάθος έκανα!!

η πλάκα είναι ότι τωρα στο ετημμυ λέει: "Αδυναμία σύνδεσης με τη βάση δεδομένων [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.. Επικοινωνήστε με τους διαχειριστές του συστήματος "


 :D :D :D :D


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Wanderer on May 14, 2008, 22:23:50 pm

αυτή τη στιγμή κάνω debug! δεν προλαβαίνω για δοκιμές κώδικα (2 ώρες μείνανε!)

ευχαριστώ και πάλι!
Από ό,τι θυμάμαι από εμάς, την προθεσμία τη λήγει το πρωί της επόμενης μέρας. Είχα παραδόσει κανονικά κάποιες φορές εργασία στις 1:30 ή και 2:00 το βράδυ, και δεν υπήρξε πρόβλημα.

Υπάρχει και άλλος τρόπος για ταξινόμηση που προσωπικά τον βρίσκω περισσότερο βολικό:

Code:
flag=false;
int temp;
while(flag==false) {
  flag=true;
  for(i=0;i<n-1;i++) {
    if(A[i+1]>A[i]) {
      //ta gnosta
      flag=false;
    }
  }
}

Πώς λειτουργεί: στην αρχή κάνει τη σημαία αληθή. Μετά ελέγχει τον πίνακα. Αν τον βρει ταξινομημένο, δηλαδή δεν ισχύει η συνθήκη ελέγχου, τότε αφήνει τη σημαία αληθή και τερματίζει ο εξωτερικός βρόγχος επανάληψης. Αλλιώς κάνει τις απαραίτητες ταξινομήσεις και ξαναβάζει τη σημαία ψευδή. Ξαναεκτελείται ο εξωτερικός βρόγχος και ξαναγίνεται εκ νέου έλεγχος στον πίνακα. Στο τέλος όταν γίνει ταξινομημένος, τερματίζει ο εξωτερικός βρόγχος διότι όπως είπα η σημαία μένει αληθής.
Με αυτόν τον τρόπο γλιτώνουμε και περιττές επαναλήψεις, και ο κώδικας είναι μάλλον πιο εύκολος στην κατανόηση και στη συγγραφή.

Ένα έτοιμο παράδειγμα για όποιον θέλει να ελέγξει και αυτήν τη μέθοδο (γραμμένο σε dev):

Code:
#include <stdio.h>
#include <conio.h>

int main() {
  int an[5];
  int flag=false;
  int temp;
 
  for(int i=0;i<5;i++) {
  printf("Give %d element\n",i+1);
  scanf("%d",(an+i));
  }
 
  while(flag==false) {
  flag=true;
  for(int i=0;i<4;i++) {
    if(an[i+1]>an[i]) {
      temp=an[i+1];
      an[i+1]=an[i];
      an[i]=temp;
      flag=false;
    }
  }
}

for(int i=0;i<5;i++) {
  printf("%d \n",*(an+i));
}

getch();
}


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: zeus90 on May 14, 2008, 22:27:23 pm
Ποπο μαλακίαααα....
Κρέμασε το σύστημα......
Αν συνέλθει τυχερός θα είσαι!!!!!!Τώρα είναι που χρειάζεσαι Good luck. 8)


Αθάνατοι Έλληνες.Πάντα της τελευταίας στιγμής είμαστε και εμείς..... :D


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: belo on May 14, 2008, 23:09:42 pm
Μέχρι τι ώρα μπορώ να στείλω εργασία;;;;;


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: λήθη on May 14, 2008, 23:18:27 pm
0000 hours


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: tesla on May 14, 2008, 23:24:52 pm
Ρε μαγκες τι γινεται?παω να κανω δηλωση στο ethmmy για την εργασια και μου λεει

Αδυναμία σύνδεσης με τη βάση δεδομένων [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket..

WTF


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: tesla on May 14, 2008, 23:29:18 pm
Καποιος??????Λιγο γρηγορα αν γινεται!!


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: geloki35 on May 14, 2008, 23:30:30 pm
Ελεος το συστημα μου μεσα.......


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: thanosdr on May 14, 2008, 23:33:04 pm
Ας μας πει καποιος το e-mail του κορτεση να την στειλουμε εκει τουλαχιστον


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: apostolos1986 on May 14, 2008, 23:34:23 pm
stk[at]eng.auth.gr νομιζω


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: anonymous-root on May 14, 2008, 23:34:51 pm
Ελεος το συστημα μου μεσα.......

++

και μόλις την τελειώσα!


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: thanosdr on May 14, 2008, 23:40:30 pm
Στο e-thmmy λεει stk@gen.auth.gr. Εγω την εστειλα εκει


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: koukos on May 14, 2008, 23:47:50 pm
Τα κατάφερε κανένας? θελω να πω αξιζει να προσπαθω κ να ξαναπροσπαθω κ να ξαναπροσπαθω..;


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: fourier on May 14, 2008, 23:52:12 pm
Τα κατάφερε κανένας? θελω να πω αξιζει να προσπαθω κ να ξαναπροσπαθω κ να ξαναπροσπαθω..;

1) MH στελνετε την εργασια στον Κορτεση, θα σας βρισει και με το δικιο του.

2) Αν θελετε, στειλτε του ενα mail ζητωντας του να δωσει παραταση μεχρι αυριο βραδυ λογω των προβληματων.

3) Το προβλημα αυτο του eThmmy ειναι γνωστο. Ειναι τοσο τελεια προγραμματισμενο αυτο το εργαλειο, που δεν μπορει να σηκωσει πολλους χρηστες, τα παιζει.

4) Στειλτε mail διαμαρτυριας στους υπευθυνους του eThmmy και ΑΠΑΙΤΗΣΤΕ να δουλευει οταν το χρειαζεστε.

5) Φροντιστε να παραδιδετε την εργασια σας το νωριτερο δυνατον  ;D


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: fourier on May 14, 2008, 23:54:43 pm
Α ξεχασα το πιο σημαντικο:

6) ΣΤΑΜΑΤΗΣΤΕ να προσπαθειτε ξανα και ξανα, γιατι το επιδεινωνετε. Χαλαρωστε, βαλτε να δειτε καμια ταινια, και προσπαθηστε σε καμια-δυο ωριτσες παλι που η κινηση θα χει πεσει.


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: Πιστολέρο on May 15, 2008, 10:20:30 am
 Παράταση για την παράδοση της εργασίας D

15 Μαϊ 2008 9:41 πμ
Κορτέσης

Λόγω  του  προβλήματος  με  τον  server  του  eΤΗΜΜΥ  η  παράδοση  της  εργασίας  D  παρατείνεται  μέχρι  τις  24μμ  της  Πέμπτης  15-5-08.  Όσοι  φοιτητές  έχουν  στείλει  την  εργασία  με  e-mail  πρέπει  να  την  ανεβάσουν  και  στον  server.


Title: Re: [Δομημένος Προγ.] Εργασία D 2008
Post by: portinos on May 15, 2008, 22:55:35 pm
Παιδιά δοκιμάσατε να μπείτε τώρα στο eTHMMY. Μου βγάζει error. Ακόμη να λυθεί το πρόβλημα; Πως θα καταθέσω την εργασία...και χτες τα ίδια έκανε.