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

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

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

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

Δημοσίευσηαπό migf1 » 16 Φεβ 2012, 15:23

migf1 έγραψε:Βάλε το στον gdb να δεις γιατί. Και όχι μόνο για να δεις, αλλά και για να σου εντυπωθεί κιόλας.

Και για να το δεις καλύτερα στον gdb, γράψε την συνθήκη ως εξής στον κώδικα...

Κώδικας: Επιλογή όλων

if ( s1[i]
|| s2[i] != '\0' )

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

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

Δημοσίευσηαπό migf1 » 16 Φεβ 2012, 15:37

Star_Light έγραψε:
...
ΕΠισης να ξεκαθαρισουμε και κατι ακομη.... ανομοια ειναι αυτα με διαφορετικο μεγιστο μήκος ετσι και δεν μπορουμε να τα εναλλαξουμε
(αν ειναι στατικα) διοτι διαφορετικο μέγεθος εχει ανατεθει στο ενα και στο αλλο... Ισως για αυτο δεν ειναι σωστο να οριζω 2 define για 2 πινακες
που τελικα έχουν το ιδιο μεγεθος πχ

Κώδικας: Επιλογή όλων


#define N 6
#define M 6



αλλα

Κώδικας: Επιλογή όλων
define SIZE 6

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

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

Δημοσίευσηαπό Star_Light » 16 Φεβ 2012, 15:40

Σωστα για το int εχει διαφορετικο μεγεθος απο οτι ενα char :/
Γνώσεις ⇛ 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

Δημοσίευσηαπό Star_Light » 16 Φεβ 2012, 15:59

Τελος ανόμοια ειναι 2 string ειπαμε με διαφορετικό μέγιστο μήκος αλλα οχι με διαφορετικο τρέχον μήκος (δεδομένου οτι το μέγιστο μήκος τους ειναι ακριβως το ίδιο) έτσι?

Ρε συ ακομη δεν μπορω να καταλαβω γιατι την malloc την ταυτιζουμε με την εννοια της δυναμικότητας....
οταν δηλωνω εναν πινακα λεω στην μνήμη να μου δεσμεύσει ας πουμε....

Κώδικας: Επιλογή όλων
char table[10];


10 x 1 = 10 bytes ( Αν char = 1b)

το ιδιο δεν κάνει ομως και το

Κώδικας: Επιλογή όλων
malloc(10 * sizeof(char));


Αρα που ειναι ακριβως η δυναμικη δεσμευση κατα το runtime.... :S
Γνώσεις ⇛ 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

Δημοσίευσηαπό migf1 » 16 Φεβ 2012, 16:04

Star_Light έγραψε:
Αρα που ειναι ακριβως η δυναμικη δεσμευση κατα το runtime.... :S

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

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

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

Δημοσίευσηαπό Star_Light » 16 Φεβ 2012, 16:09

Oχι δεν το βρηκα ακομη γιατι ψαχνομουν με την malloc.... Τα παραδείγματα που έχουν τα βιβλια δεν ρωταει κανενα τον χρηστη για αυτο που λες.

Αυτο με τα ανομοια strings που ειπα πιο πανω ειναι ενταξει? Πολυ απορια ρε αδερφακι μου με την C τα βιβλια δεν με καλυπτουν και με προβληματιζει αυτο
Γνώσεις ⇛ 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

Δημοσίευσηαπό migf1 » 16 Φεβ 2012, 16:12

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

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

Δημοσίευσηαπό migf1 » 16 Φεβ 2012, 16:41

Για τον κώδικα του Vigenere: http://ideone.com/SvFRR δεν θα κάνω τελικά αναλυτικό ποστ, γιατί πολύ αμφιβάλλω αν θα το διαβάσει και κανείς. Όποιος έχει απορίες στον κώδικα ας τις ποστάρει και θα τις απαντήσω.

Η βασική διαφορά της δικής μου υλοποίησης από τη συντριπτική πλειοψηφία όσων κυκλοφορούν στο νετ είναι η συνάρτηση: int tabrecta_make() η οποία επιτρέπει στον προγραμματιστή να επιλέξει οποιοδήποτε αλφάβητο επιθυμεί μέσα από το extended ASCII table, είτε με συνεχόμενα σύμβολα, είτε περνώντας ένα c-string που περιέχει όποια σύμβολα θέλει, με όποια σειρά θέλει.

Επίσης επιτρέπει το ανακάτεμα του βασικού αλφάβητου πριν δημιουργήσει τα υπόλοιπα μέσα στον πίνακα tabula recta, ορίζοντας την τιμή 1 στη σταθερά SHUFFLE (με 0 το αλφάβητο δεν ανακατεύεται).

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

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

Δημοσίευσηαπό Star_Light » 16 Φεβ 2012, 16:57

Κατσε φιλε μου γιατι δεν μου βγαινει τωρα ενα παραδειγμα με την malloc
και θα το δωσω απο το παραθυρο. :/
Γνώσεις ⇛ 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

Δημοσίευσηαπό migf1 » 16 Φεβ 2012, 17:01

:lol:
Κανονικά έπρεπε να ασχοληθείς πρώτα με το || ... είναι πιο στοιχειώδες ;)

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

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

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