Τα πάντα για την C

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

Συντονιστής: konnn

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό Star_Light » 01 Αύγ 2011, 16:13

και καπου εδω πιστευω καταλαβαινει κανεις ποσο κακο ειναι το προγραμμα να πεταει πραγματα που κανονικα δεν θα επρεπε... ως προς την ασφάλεια... πχ εγω δινω σαν χρηστης το οριο και αυτο μου πεταει αυτο που υπολογισε.... αρα ουσιαστικα δινει στον χρηστη την λυση του μαντέματος!
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό Star_Light » 01 Αύγ 2011, 16:24

migf1 έγραψε:@Star_Light, πάντως δεν τα πήγες όσο άσχημα ενδεχομένως νομίζεις :)
Επιπρόσθετα σε αυτά που έγραψα παραπάνω, βάλε κι αυτά:

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

ε) το μήνυμα σφάλματος όταν η μαντεψιά είναι εκτός ορίων, τύπωσέ το μέσα στο κεντρικό loop της main, όταν το r είναι ίσο με -1 ;)


δ) αυτο δεν καταλαβαινω πως να το κανω....

ε) εδω πειραζει που αντι για αυτο που μου λες εβαλα ενα ακομη ορισμα στον πινακα *hints πχ *hints[4] το οποιο ορισα σαν "ektos oriwn ksanaprospathiste" και μεσα στην συναρτηση εβαλα να μου επιστρέφει την τιμη 3? :D

στ) Δεν εχω βάλει ομως να μετραει τον αριθμο των προσπαθειων που χρειάστηκε ο χρήστης + οτι μου πεταει το αποτέλεσμα :/
Τελευταία επεξεργασία από Star_Light και 01 Αύγ 2011, 16:30, έχει επεξεργασθεί 1 φορά/ες συνολικά
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό migf1 » 01 Αύγ 2011, 16:25

Star_Light έγραψε:και καπου εδω πιστευω καταλαβαινει κανεις ποσο κακο ειναι το προγραμμα να πεταει πραγματα που κανονικα δεν θα επρεπε... ως προς την ασφάλεια... πχ εγω δινω σαν χρηστης το οριο και αυτο μου πεταει αυτο που υπολογισε.... αρα ουσιαστικα δινει στον χρηστη την λυση του μαντέματος!


Αφού βρε συ, εσύ του λες να το τυπώσει με αυτή τη γραμμή:
Κώδικας: Επιλογή όλων
printf("%d", hidden);

:lol:

Όσο για την scanf, δεν ξέρω σε ποιο πρόβλημα αναφέρεσαι για το συγκεκριμένο προγραμματάκι, αλλά είπαμε να την καταργήσεις την scanf γενικώς!

Κάνε το συνήθεια τώρα που είναι νωρίς να διαβάζεις ολόκληρη τη γραμμή της κύριας εισόδου σε ένα string inbuf μέγιστου μήκους 256 (με την fgets ή με την s_get) και κατόπιν "τράβα" από εκεί τις μεταβλητές που θες να διαβάσεις, είτε με sscanf είτε με atoi/atol/atof.

Για τη μέγιστη μαγκιά που λες, αυτή την τεχνική ήθελα να σας δείξω και πέταξα έτσι στα ξαφνικά τον πίνακα με τα strings στην άσκηση, γιατί ως λογική χρησιμοποιείται κατά κόρον. Όχι για τόσο απλά πράγματα όπως αυτό το guessing game, αλλά είναι πολύ συνηθισμένη προσέγγιση.

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

ΥΓ. Πάω να γράψω post για τα macros, ε ;
Τελευταία επεξεργασία από migf1 και 01 Αύγ 2011, 16:34, έχει επεξεργασθεί 1 φορά/ες συνολικά
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό migf1 » 01 Αύγ 2011, 16:31

Star_Light έγραψε:
δ) αυτο δεν καταλαβαινω πως να το κανω....

Θα βάλεις σε loop να του ζητάει το lim όσο αυτός επιμένει να σου δίνει νούμερο που είναι μικρότερο του 1.

έγραψε:ε) εδω πειραζει που αντι για αυτο που μου λες εβαλα ενα ακομη ορισμα στον πινακα *hints πχ *hints[4] το οποιο ορισα σαν "ektos oriwn ksanaprospathiste" και μεσα στην συναρτηση εβαλα να μου επιστρέφει την τιμη 3? :D

Όχι μόνο δεν πειράζει, είναι και πολύ ωραίο! Αρκεί να το έχεις κάνει σωστά, γιατί... μυρίζομαι πως θα έχεις κάνει καμιά πατάτα :lol: Θα σου πω όταν ποστάρεις τον κώδικα.

έγραψε:στ) Δεν εχω βάλει ομως να μετραει τον αριθμο των προσπαθειων που χρειάστηκε ο χρήστης + οτι μου πεταει το αποτέλεσμα :/

Για το αποτέλεσμα, δες το προηγούμενο ποστ μου... εσύ του λες να στο τυπώνει :lol:
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό Star_Light » 01 Αύγ 2011, 16:33

migf1 έγραψε:
Star_Light έγραψε:και καπου εδω πιστευω καταλαβαινει κανεις ποσο κακο ειναι το προγραμμα να πεταει πραγματα που κανονικα δεν θα επρεπε... ως προς την ασφάλεια... πχ εγω δινω σαν χρηστης το οριο και αυτο μου πεταει αυτο που υπολογισε.... αρα ουσιαστικα δινει στον χρηστη την λυση του μαντέματος!


Αφού βρε συ, εσύ του λες να το τυπώσει με αυτή τη γραμμή:
Κώδικας: Επιλογή όλων
printf("%d", hidden);

:lol:

Όσο για την scanf, δεν ξέρω σε ποιο πρόβλημα αναφέρεσαι για το συγκεκριμένο προγραμματάκι, αλλά είπαμε να την καταργήσεις την scanf γενικώς!

Κάνε το συνήθεια τώρα που είναι νωρίς να διαβάζεις ολόκληρη τη γραμμή της κύριας εισόδου σε ένα string inbuf μέγιστου μήκους 256 και κατόπιν "τράβα" από εκεί τις μεταβλητές που θες να διαβάσεις, είτε με sscanf είτε με atoi/atol/atof.

Για τη μέγιστη μαγκιά που λες, αυτή την τεχνική ήθελα να σας δείξω και πέταξα έτσι στα ξαφνικά τον πίνακα με τα strings στην άσκηση, γιατί ως λογική χρησιμοποιείται κατά κόρον. Όχι για τόσο απλά πράγματα όπως αυτό το guessing game, αλλά είναι πολύ συνηθισμένη προσέγγιση.

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

ΥΓ. Πάω να γράψω post για τα macros, ε ;


χααχαχχα ευχαριστω που μου θυμιζεις οτι ξέχασα τον μορφοποιητη του string :P
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό migf1 » 01 Αύγ 2011, 16:38

Ποιον μορφοποιητή εννοείς; Ολόκληρη τη γραμμή πρέπει να σβήσεις, γιατί αυτή σου τυπώνει το hidden νούμερο.
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό Star_Light » 01 Αύγ 2011, 16:48

migf1 έγραψε:Ποιον μορφοποιητή εννοείς; Ολόκληρη τη γραμμή πρέπει να σβήσεις, γιατί αυτή σου τυπώνει το hidden νούμερο.


loooooooooooooooooooooool και μ αρεσει που παω να βγαλω και συμπερασμα χαχαχαχα
αυτο θα πρεπει να μπει στα αστεια περι λινουξ στο νημα περι ανεμων :lol: :lol: :lol:
απλα κανε πως δεν το διαβασες ποτε ρε παιδι μου γιατι το εβαλα εξαρχης οταν προσπαθουσα να φτιαξω
το προγραμμα στην αρχη αρχη για να δω αν θα μου το εκτυπωσει... ξερεις δοκιμες και ετσι χωρις να εχω φτιαξει την συναρτηση πρωτα.
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό migf1 » 01 Αύγ 2011, 16:55

Μη φοβάσαι, κι εγώ την πάτησα ακριβώς έτσι :lol:

Λοιπόν, αντί για macros, κάνω κάτι άλλο... φτιάχνω τον κώδικα του game έτσι ώστε ΟΤΙΔΗΠΟΤΕ ΜΗΝΥΜΑ τυπώνει να είναι μέσα στον πίνακα hints (που τον αλλάζω σε: messages). Οπότε θα είναι πλήρως απεξαρτημένο από hand-coded μηνύματα μέσα σε printf. Σαν κερασάκι στην τούρτα, θα φτιάξω 2 πίνακες, έναν με ελληνικά μηνύματα κι έναν με αγγλικά, και στην αρχή θα ρωτάω τον παίκτη σε ποια γλώσσα από τις δυο θέλει να παίξει.

Έχει μέσα πράγματα που δεν έχουμε πει ακόμα, όπως π.χ typdef και enum αλλά ας το έχουμε σαν δείγμα για όταν αρχίσω να λέω για αυτά τα πράματα :)
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό stamatiou » 01 Αύγ 2011, 17:07

migf1 έγραψε:Μη φοβάσαι, κι εγώ την πάτησα ακριβώς έτσι :lol:

Λοιπόν, αντί για macros, κάνω κάτι άλλο... φτιάχνω τον κώδικα του game έτσι ώστε ΟΤΙΔΗΠΟΤΕ ΜΗΝΥΜΑ τυπώνει να είναι μέσα στον πίνακα hints (που τον αλλάζω σε: messages). Οπότε θα είναι πλήρως απεξαρτημένο από hand-coded μηνύματα μέσα σε printf. Σαν κερασάκι στην τούρτα, θα φτιάξω 2 πίνακες, έναν με ελληνικά μηνύματα κι έναν με αγγλικά, και στην αρχή θα ρωτάω τον παίκτη σε ποια γλώσσα από τις δυο θέλει να παίξει.

Έχει μέσα πράγματα που δεν έχουμε πει ακόμα, όπως π.χ typdef και enum αλλά ας το έχουμε σαν δείγμα για όταν αρχίσω να λέω για αυτά τα πράματα :)

Τι εννοείς με το θα έχει όποιο μήνυμα τυπώνεται;
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

Re: Τα πάντα για την C/C++

Δημοσίευσηαπό migf1 » 01 Αύγ 2011, 17:15

Σε 5 λεπτάκια τελειώνω και θα το δείτε :)
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

ΠροηγούμενηΕπόμενο

Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι