Title: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: il capitano on June 06, 2010, 01:46:42 am Αντε πειτε (διαχωριστηκε απο τις γενικες αποριες)!!
edit: βαζω και πολλ να δουμε :P Title: Re: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: Αιμιλία η φτερωτή χελώνα on June 11, 2010, 19:34:41 pm πως πηγε? 8))
Title: Re: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: dnitsos on June 11, 2010, 19:39:16 pm Title: Re: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: Αιμιλία η φτερωτή χελώνα on June 11, 2010, 19:46:11 pm τι σας ζορισε παλι και επεσε πουτσος;
Title: Re: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: cindy on June 11, 2010, 19:48:25 pm ένα θα σου πω...ήθελε struct...εγώ βέβαια το κατάλαβα εκ'των υστέρων ακόμη κ αν κάτι δε μου κολλούσε..ελπ΄΄ιζω οι άλλοι να το είδαν έγκαιρα....
Title: Re: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: Chester on June 11, 2010, 19:52:16 pm παιδια, αυτο ειναι το 3ο θεμα απο την Α ομαδα
int fun(int k) { static int z; if(!k)k=z; z++; z%=4; return z; } void main() { int i,n; char *p; for(i=0;i<4;i++) { p="ABCDE"; n=fun(i) ; p[n]='X'; printf("%d %s\n",n,p); } } Το μονο που εχω να πω ειναι οτι ζωγραφισε παλι ο κορτεξ σημερα..... Αν μπορει καποιος ας πει την λύση για να κανουμε κ καμια επαληθευση :/ ... Εγω παντως ειμαι σιγουρος οτι ο κωδικας δεν τρεχει :Ο edit: ειχα ξεχασει το ι στην συναρτηση φαν Title: Re: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: cindy on June 11, 2010, 19:54:51 pm εκεί που έχεις p[n]='X' είχε Η ο Κορτέσης(αυτό μας πείραξε...)..πάντα Η δεν ήταν το p;
Title: Re: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: Chester on June 11, 2010, 20:00:46 pm εκεί που έχεις p[n]='X' είχε Η ο Κορτέσης(αυτό μας πείραξε...)..πάντα Η δεν ήταν το p; εγω σαν αποτελεσμα εβγαλα 0 XBCDE 0 XBCDE 0 XBCDE 0 XBCDE Προφανως ειναι λαθος αλλα δεν μπορω να καταλαβω και πιο ειναι το σωστο... Title: Re: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: cindy on June 11, 2010, 20:10:32 pm γιατί όλα μηδέν;(τα n)
Title: Re: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: Chester on June 11, 2010, 20:14:15 pm γιατί όλα μηδέν;(τα n) επειδη το z%=4 δηλαδη z= z%4 το αποτελεσμα μου εβγαινε παντα 0 Title: Re: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: Άδης on June 11, 2010, 20:16:26 pm Αν θυμαμαι καλά τα n τα εβγαλα 1 2 3 0
Το έτρεξε κανείς το πρόγραμμα να μας πει τι βγάζει στα σίγουρα; Title: Re: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: Sage on June 11, 2010, 20:16:58 pm παιδια, αυτο ειναι το 3ο θεμα απο την Α ομαδα int fun(int k) { static int z; if(!k)k=z; z++; z%=4; return z; } void main() { int i,n; char *p; for(i=0;i<4;i++) { p="ABCDE"; n=fun(i) ; p[n]='X'; printf("%d %s\n",n,p); } } Το μονο που εχω να πω ειναι οτι ζωγραφισε παλι ο κορτεξ σημερα..... Αν μπορει καποιος ας πει την λύση για να κανουμε κ καμια επαληθευση :/ ... Εγω παντως ειμαι σιγουρος οτι ο κωδικας δεν τρεχει :Ο edit: ειχα ξεχασει το ι στην συναρτηση φαν Εγώ έβγαλα... 1 AXCDE 0 XBCDE 1 AXCDE 0 XBCDE Όμως είναι ΛΑΘΟΣ γτ νόμιζα πως η συνθήκη στην if ισούταν με k==0... αλλά κανονικά ειναι k!=0 !! ^banghead^ πφφφ.. :'( EDIT: Το έτρεξα μόλις το πρόγραμμα.. κ εβγαλε 1 AXCDE 2 AXXDE 3 AXXXE 0 XXXXE κάτι δεν μου κολλάει ομως..... :???: Title: Re: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: The Stig on June 11, 2010, 20:17:32 pm Στην θεωρία β ομάδας στο πρώτο ερώτημα με τις τεχνικές ήθελε εκείνο με την αναλυτική και την συνθετική η εκείνο με την αναλυτική και τον ιεραρχικο προγραμματισμό και τον τμηματικο προγραμματισμό και αν είναι το δεύτερο μπορείτε να μου πείτε γιατί όχι το πρώτο;;;; Αφού και στο πρώτο λέει τεχνικές σχεδίασης και δπ...
Title: Re: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: cindy on June 11, 2010, 20:18:01 pm α,ok!!στην ομάδα Β είχε z%=3 και όλα τα άλλα ίδια..δεν το πρόσεξα νωρίτερα...
Title: Re: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: Chester on June 11, 2010, 20:18:27 pm Αν θυμαμαι καλά τα n τα εβγαλα 1 2 3 0 Το έτρεξε κανείς το πρόγραμμα να μας πει τι βγάζει στα σίγουρα; Πως σου βγηκε 1 2 3 0 ? μπορεις να το εξηγησεις λιγο ? Title: Re: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: τσαι-borg on June 11, 2010, 20:19:06 pm Στην θεωρία β ομάδας στο πρώτο ερώτημα με τις τεχνικές ήθελε εκείνο με την αναλυτική και την συνθετική η εκείνο με την αναλυτική και τον ιεραρχικο προγραμματισμό και τον τμηματικο προγραμματισμό και αν είναι το δεύτερο μπορείτε να μου πείτε γιατί όχι το πρώτο;;;; Αφού και στο πρώτο λέει τεχνικές σχεδίασης και δπ... γιατι ελεγε αναφερετε τις 3 τεχνικες. :P (και γιατι αν δεν εννοουσε το δευτερο την εχω γαμησει) Title: Re: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: Social_waste on June 11, 2010, 20:23:25 pm Αν θυμαμαι καλά τα n τα εβγαλα 1 2 3 0 Το έτρεξε κανείς το πρόγραμμα να μας πει τι βγάζει στα σίγουρα; Πως σου βγηκε 1 2 3 0 ? μπορεις να το εξηγησεις λιγο ? οποτε καθε φορα αυξανεται κατα 1 και μας δινει τα υπολοιπα με το 4 αρχιζοντας προφανως απο το 1. και τρεχει τεσσερεις φορες γιατι η συναρτηση χρησιμοποιει αντιγραφο της i και δεν πειραζει το οριτζιναλ. Title: Re: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: cindy on June 11, 2010, 20:23:36 pm Στην θεωρία β ομάδας στο πρώτο ερώτημα με τις τεχνικές ήθελε εκείνο με την αναλυτική και την συνθετική η εκείνο με την αναλυτική και τον ιεραρχικο προγραμματισμό και τον τμηματικο προγραμματισμό και αν είναι το δεύτερο μπορείτε να μου πείτε γιατί όχι το πρώτο;;;; Αφού και στο πρώτο λέει τεχνικές σχεδίασης και δπ...
γιατι ελεγε αναφερετε τις 3 τεχνικες. (και γιατι αν δεν εννοουσε το δευτερο την εχω γαμησει) plus,το επόμενο ερώτημα ήταν για τις ενότητες...σίγουρα όχι τυχαίο!! Title: Re: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: cindy on June 11, 2010, 20:25:19 pm Social_waste,μήπως ξέρεις και τις τιμές για z%=3;
Title: Re: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: The Stig on June 11, 2010, 20:26:10 pm Ναι αλλά και το πρώτο ήταν τρεις τεχνικές....
Title: Re: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: Social_waste on June 11, 2010, 20:27:58 pm αν ειναι ιδια ολα τα αλλα
φανταζομαι 1 2 0 1. Title: Re: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: Άδης on June 11, 2010, 20:29:04 pm Το πρόγραμμα του θεματος 3 το έτρεξε κανείς;
Πρώτα απ' όλα τρέχει ή ο Κορτέσης μεγαλούργησε πάλι. αν ειναι ιδια ολα τα αλλα φανταζομαι 1 2 0 1. Συμφωνώ... Title: Re: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: Chester on June 11, 2010, 20:42:39 pm μαλ@@ια..... :( αυτο το !κ με εφαγε...
Title: Re: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: The Stig on June 11, 2010, 20:55:09 pm Μαλ@@κια!! Το ήξερα ότι θα χάσω από την κωλοθεωρια!!!!!! Άντε μην αρχίζω να κραζω την ύπαρξη θεωρίας σε αυτό το μάθημα και ας φταίω και εγώ που δεν την διάβασα όσο έπρεπε!!!!
Title: Re: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: cindy on June 11, 2010, 21:12:08 pm μαλ@@ια..... :( αυτο το !κ με εφαγε... τελικά αυτή η εντολή έκανε το k 1;;; Title: Re: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: Social_waste on June 11, 2010, 21:19:14 pm κανει το κ ισο με z καθε φορα
εκτος απο την πρωτη. αλλα μιας που δεν το χρησιμοποιεις καπου δε σε νοιαζει. Title: Re: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: nohponex on June 11, 2010, 21:33:53 pm παιδια, αυτο ειναι το 3ο θεμα απο την Α ομαδα int fun(int k) { static int z; if(!k)k=z; z++; z%=4; return z; } ... z=k ηταν 1,2,3,0 έβγαλα και εγώ αν αυτό τρέχει όντως που το δοκίμασα και δν τρέχει άλλα για να το έβαλε δν ξέρω .... :/ Title: Re: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: st0up on June 11, 2010, 22:27:09 pm Α ομαδα, θεμα 3
1 AXCDE 2 AXXDE 3 AXXXE 0 XXXXE εβγαλα κι εγω... το z%=4 είναι το υπολοιπο της διαιρεσης του z με το 4 (για καποιον που ρωτησε πριν) Title: Re: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: Neal on June 11, 2010, 22:32:11 pm #include <stdio.h>
#include <stdlib.h> int fun(int k) { static int z; if(!k) z=k; z++; z%=4; return z; } int main() { int i,n; char p[7]; for(i=0;i<4;i++) { strcpy(p,"ABCDE"); n=fun(i) ; p[n]='X'; printf("%d %s\n",n,p); system("pause"); } } Αυτό είναι το προγραμματάκι. Προσέξτε ότι σε κάθε loop θέτει ξανά τον p="ABCDE" Title: Re: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: pap-x on June 11, 2010, 23:47:38 pm Δεν νομιζω το θεσιμο να γινοταν μέσα στο loop...Και δεν γινοταν και με strcpy..
Title: Re: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: Neal on June 11, 2010, 23:52:22 pm Μέσα στο loop γινόταν και απλώς το έγραψα έτσι για να το τρέξω, το ίδιο σκεπτικό είναι.
Title: Re: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: Neal on June 12, 2010, 00:00:46 am Ναι βασικά η strcpy αλλάζει το νόημα. Λάθος το προγραμματάκι. Αλλά το p="ABCDE" δεν μπορώ να καταλάβω γιατί είναι μέσα στο loop και γιατί το ορίζει ως pointer..
Title: Re: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: nikitas350 on June 12, 2010, 02:35:28 am Η άσκηση είναι λάθος.
Σύμφωνα με το βιβλίο "C programming language" σελίδα 104: There is an important difference between these definitions: char amessage[] = "now is the time"; /* an array */ char *pmessage = "now is the time"; /* a pointer */ amessage is an array, just big enough to hold the sequence of characters and '\0' that initializes it. Individual characters within the array may be changed but amessage will always refer to the same storage. On the other hand, pmessage is a pointer, initialized to point to a string constant; the pointer may subsequently be modified to point elsewhere, but the result is undefined if you try to modify the string contents. Δηλαδή δεν ξέρουμε τι θα γίνει τελικά (ακόμα και αν θα είναι δυνατόν να τρέξει).... Title: Re: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: Αιμιλία η φτερωτή χελώνα on June 12, 2010, 03:23:39 am παιχτηκε μαλακια φετος δηλαδης; :D
Title: Re: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: sofigami on June 12, 2010, 10:39:16 am Γεια σου ρε Νικήτα, πήρες εκεί τη βίβλο και μας είπες την επιστημονική άποψη..
Εγώ πάντως ελπίζω να ναι όπως είπαν τα παιδιά παραπάνω τα πράγματα γιατί 1 2 3 0 έβγαλα.. Title: Re: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: Neal on June 12, 2010, 12:14:09 pm Η άσκηση είναι λάθος. Σύμφωνα με το βιβλίο "C programming language" σελίδα 104: There is an important difference between these definitions: char amessage[] = "now is the time"; /* an array */ char *pmessage = "now is the time"; /* a pointer */ amessage is an array, just big enough to hold the sequence of characters and '\0' that initializes it. Individual characters within the array may be changed but amessage will always refer to the same storage. On the other hand, pmessage is a pointer, initialized to point to a string constant; the pointer may subsequently be modified to point elsewhere, but the result is undefined if you try to modify the string contents. Δηλαδή δεν ξέρουμε τι θα γίνει τελικά (ακόμα και αν θα είναι δυνατόν να τρέξει).... Μόλις τώρα που ξύπνησα αυτό το πράγμα σκέφτηκα. Δεν κάνει malloc για να δεσμεύσει μνήμη για τις επόμενες διευθύνσεις μνήμης, οπότε στην ουσία το πρόγραμμα του είναι λάθος, γιατί πχ το (p+3) που πάει να αλλάξει μπορεί να περιέχει μνήμη του λειτουργικού οπότε και να crash-άρει. Τι στον πέο; Τι έπρεπε να γράψουμε δηλαδή, Κορτέση πουρέ πάλι απέτυχες; Αλλά και το p="ABCDE" είναι fail. Γιατί, αναλόγως τον compiler, την πρώτη φορά που θα το συναντήσει μπορεί να το θέσει σε μια σταθερή διεύθυνση κάθε φορά ή μπορεί να το θέτει σε διαφορετικές κάθε φορά που το βλέπει. Title: Re: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: τσαι-borg on June 12, 2010, 12:36:02 pm Κορτεση κεφτε,τις πουστιες σου αλλου μη σε τσιγαρισω.
Title: Re: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: pap-x on June 12, 2010, 14:46:08 pm Παιδιά ο κώδικας crashαρει συνέχεια σε μένα. Κάτι δεν πάει καλά με το θέσιμο...Είναι σίγουρο όμως ότι το n είναι 1 2 3 0 στην Α ομάδα.
Title: Re: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: Neal on June 12, 2010, 14:47:44 pm Καλά αυτό είναι το μόνο σίγουρο.
Title: Re: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: theo_mich on June 13, 2010, 17:00:16 pm Στη Β ομαδα ειναι 1 2 0 1...
Title: Re: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: duffy on June 13, 2010, 17:32:29 pm το αποτελεσμα στο Α ειναι
1 AXCDE 2 ABXDE 3 ABCXE 0 XBCDE καθε φορα που τρεχει το loop ξαναθέτει το ρ="ΑΒΓΔΕ" και αλλάζει τον χαρακτήρα με 'Χ' καθε φορα, το έτρεξα κανονικα και μου εβγαλε κανονικα αυτο το αποτέλεσμα... Title: Re: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: Neal on June 13, 2010, 18:16:31 pm duffy, το πρόγραμμα είναι λάθος. Το αν θα τρέξει και πως θα τρέξει εξαρτάται εν μέρει από τον compiler. To "ABCDE" μπορεί να επιστρέφει κάθε φορά νέα θέση μνήμης που αποθηκεύτηκε ή μπορεί να δείχνει πάντα την ίδια. Επίσης, το "ΑΒCDE" επιστρέφει const char* οπότε δεν μπορεί να αλλάξει κανένα γράμμα εφόσον είναι const. Χτυπάει το πρόγραμμα, είναι το μόνο σίγουρο και είναι εντελώς λάθος.
Title: Re: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: Argirios on June 15, 2010, 01:02:36 am το αποτελεσμα στο Α ειναι 1 AXCDE 2 ABXDE 3 ABCXE 0 XBCDE καθε φορα που τρεχει το loop ξαναθέτει το ρ="ΑΒΓΔΕ" και αλλάζει τον χαρακτήρα με 'Χ' καθε φορα, το έτρεξα κανονικα και μου εβγαλε κανονικα αυτο το αποτέλεσμα... αυτό να είναι το σωστό! εγώ αυτό έγραψα :P Title: Re: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: Neal on June 15, 2010, 01:39:01 am Διαβάζει κανείς αυτά που γράφω; Έχει κάνει λάθος, το πρόγραμμα χτυπάει. Δε γίνεται να αλλάζεις τιμές σε const.
Title: Re: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: ScytheB on June 15, 2010, 19:43:03 pm Ναι ρε Neal , εγώ τον έπιασα και του το είπα στον διάδρομο , του επέμεινα και μου λέει, έ , έκανες λάθος στην άσκηση... Στον δικό του τρέχει...
Πάντως δείτε εδώ... https://www.securecoding.cert.org/confluence/display/seccode/STR30-C.+Do+not+attempt+to+modify+string+literals (https://www.securecoding.cert.org/confluence/display/seccode/STR30-C.+Do+not+attempt+to+modify+string+literals) Title: Re: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: Neal on June 15, 2010, 21:53:28 pm Αυτός έχει compiler του '90. Δε γίνεται να αλλάξει τιμή της const. Εμένα ο compiler μου μπορεί να βάζει τιμή 1000 αντί για ABCDE και επειδή τρέχει σε μένα δε σημαίνει ότι είναι σωστό.
Τι εννοείς ότι σου είπε ότι έκανες λάθος στην άσκηση; Όταν την έγραφες στον compiler ή στο χαρτί; Title: Re: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: The Stig on June 15, 2010, 22:19:45 pm Ρε Neal το θέμα είναι απλό. Έχεις δεν έχεις δίκιο (δεν το έψαξα και δεν μπορώ να εκφερω άποψη) ο κορτεσης έχει τους τίτλους και όχι εσυ που πολύ πιθανό να είσαι εσυ σωστός και όχι αυτός. Αυτό πρακτικά σημαίνει ότι οτιδήποτε και να έχει γίνει αυτός λέει πως λειτουργεί σιγά μην παραδεχτεί και το λάθος του εδώ που τα λέμε και διορθώνει με την υπόθεση ότι λειτουργεί. Αν είναι λάθος κανονικά πρέπει να ακυρωθεί το θέμα αλλά σιγά μην γίνει αυτό. Οπότε ποιο το νόημα να συνεχίζεται αυτή η δουλειά;;
Title: Re: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: Neal on June 15, 2010, 23:04:08 pm Τι σχέση έχουν οι τίτλοι και τα γαλόνια; Αν κάτι είναι λάθος, είναι λάθος ακόμα και ο Einstein να το είπε. Από κει και πέρα δε με νοιάζει τι θα γίνει, αλλά σίγουρα δε θα δεχτώ να μου κόψει μονάδες απ'το θέμα. Πέρα ότι είναι λάθος, δεν διευκρινίζεται πουθενά αν το p="ABCDE" που είναι μέσα στο loop δείχνει κάθε φορά διαφορετική διεύθυνση ή πάντα την ίδια (δηλαδή αν στην ουσία θα έχουμε ΑXXXE ή ABCXE).
από C99 standard (http://"http://en.wikipedia.org/wiki/C99") standard: §6.5.2.5 Quote "/tmp/fileXXXXXX" §6.7.8(char []){"/tmp/fileXXXXXX"} (const char []){"/tmp/fileXXXXXX"} The first always has static storage duration and has type array of char, but need not be modifiable; the last two have automatic storage duration when they occur within the body of a function, and the first of these two is modifiable. EXAMPLE 6 Like string literals, const-qualified compound literals can be placed into read-only memory and can even be shared. Quote On the other hand, the declaration char *p = "abc"; defines p with type ‘‘pointer to char’’ and initializes it to point to an object with type ‘‘array of char’’ with length 4 whose elements are initialized with a character string literal. If an attempt is made to use p to modify the contents of the array, the behavior is undefined. Title: Re: [Δομημένος Πρ.] Πως γραψατε 2010 version Post by: nikitas350 on June 16, 2010, 03:39:47 am Αυτό που είπα και εγώ πριν και αυτό που λέει και το C99 είναι ότι δεν ξέρεις τι θα γίνει αν θα το αλλάξεις. Αν μας έλεγε τι τυπώνει στον ταδε compiler τότε ok (από τη στιγμή που ο συγκεκριμένος compiler το επέτρεπε). Αλλά μας είπε τι τυπώνει γενικά....
|