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

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

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

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

Δημοσίευσηαπό Star_Light » 30 Ιαν 2012, 18:51

Εικόνα

Aυτο θα κανω!
Τελευταία επεξεργασία από Star_Light και 30 Ιαν 2012, 19:00, έχει επεξεργασθεί 2 φορά/ες συνολικά
Γνώσεις ⇛ 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 » 30 Ιαν 2012, 18:58

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

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

Δημοσίευσηαπό stamatiou » 30 Ιαν 2012, 19:02

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

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

Δημοσίευσηαπό Star_Light » 30 Ιαν 2012, 19:11

stamatiou έγραψε:Συγνώμη αλλά χάθηκα στα ποστ :D
Τώρα με τι ασχολούμαστε μπας και βοηθήσω και εγώ αν μπορώ;


Eχω υλοποιησει τον bubble sort σε C αλλα εχω ενα θεμα με την εισοδο και πρεπει
να ξαναδιαβασω τα strings. EYχαριστω για την προθεση αλλα αμα δεν τα καταλαβω μονος μου
δεν εχει νοημα.
Γνώσεις ⇛ 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 » 30 Ιαν 2012, 19:17

Με τίποτα συγκεκριμένο, Γιώργο.

Επειδή όμως βλέπω πως υπάρχει μεγαλύτερο πρόβλημα με το διάβασμα της κύριας εισόδου στη C (όχι μόνο σε αυτό το φόρουμ, αλλά και σε άλλα) κι επειδή ήρθα σπίτι, θα φτιάξω μια μικρή βιβλιοθήκη ειδικά για διάβασμα της κύριας εισόδου στη C, θα της βάλω κι Ελληνικά σχόλια γιανα βγει όμορφη τεκμηρίωση μέσω του Doxygen, και θα την ποστάρω για να τη χρησιμοποιεί όποιος θέλει να τραβάει εύκολα μεταβλητές από την κύρια είσοδο.

Π.χ.

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

if ( prompt_for_char( "θέλετε να συνεχίσετε (/ο); " ) == 'ο' )
exit( EXIT_SUCCESS );

ή...

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

int n = 0;

n = prompt_for_int( "Δώστε έναν ακέραιο: " );
printf( "Δώσατε: %d\n", n );


κλπ, κλπ.

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

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

Δημοσίευσηαπό stamatiou » 30 Ιαν 2012, 19:27

Star_Light έγραψε:
stamatiou έγραψε:Συγνώμη αλλά χάθηκα στα ποστ :D
Τώρα με τι ασχολούμαστε μπας και βοηθήσω και εγώ αν μπορώ;


Eχω υλοποιησει τον bubble sort σε C αλλα εχω ενα θεμα με την εισοδο και πρεπει
να ξαναδιαβασω τα strings. EYχαριστω για την προθεση αλλα αμα δεν τα καταλαβω μονος μου
δεν εχει νοημα.

Και ποιος από όλους τους κώδικες έχει το πρόβλημα;
Όσο για το αν έχει νόημα βέβαι και έχει! Για αυτό έχουμε κάνει αυτό το τόπικ! Για να βοηθάμε ο ένας τον άλλον ( και όλους εμάς ο migf1) :lol:
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

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

Δημοσίευσηαπό Star_Light » 30 Ιαν 2012, 20:09

stamatiou έγραψε:
Και ποιος από όλους τους κώδικες έχει το πρόβλημα;
Όσο για το αν έχει νόημα βέβαι και έχει! Για αυτό έχουμε κάνει αυτό το τόπικ! Για να βοηθάμε ο ένας τον άλλον ( και όλους εμάς ο migf1) :lol:


ετούτος :
http://pastebin.com/u8WBAnZC

εννοω οτι δεν εχει νοημα να το παρετε να μου το λυσετε και να
μου το δωσετε!!! Πρεπει μονος μου να τριφτω να δω που σκαλώνει το μυαλό μου!
Κατα τα αλλα δεν εχω κανενα προβλημα με οποιαδηποτε βοηθεια και μια χαρα πρηζω τους πάντες
με τις αποριες μου :D
Γνώσεις ⇛ 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 » 30 Ιαν 2012, 20:13

Λοιπον έκατσα 1 ωριτσα και ξαναφρεσκάρισα τα strings απο ενα βιβλιο της C.

εχω 2 αποριες .

Κώδικας: Επιλογή όλων
char *message = "Message"
puts(message);


Δεν χρειάζομαι αριθμητικη δεικτών εδω? Επειδη αρχικα ο δεικτης αυτος δειχνει στον 1ο χαρακτηρα
πως θα το εκτυπωσει ολο μαζι τελικα? Και γιατι με ενα message θα εκτυπωθει ολοκληρο? Ναι οκ ο message
ειναι δεικτης αλλα του λειπει το * που προβαλλει ξερω γω τα περιεχομενα....
Γνώσεις ⇛ 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 » 30 Ιαν 2012, 20:30

To * δεν προβάλλει τα περιεχόμενου ολόκληρου του string, αλλά μονάχα τα περιεχόμενα του 1ου χαρακτήρα μέσα στο string.
Οπότε, είτε γράψουμε: message[0], είτε γράψουμε: *message, το αποτέλεσμα είναι ο χαρακτήρας: 'M'

Τώρα σε ότι αφορά την ερώτηση περί εκτύπωσης, η: puts() είναι έτσι φτιαγμένη ώστε όταν της περνάς σαν όρισμα ένα c-string, να το τυπώνει ολόκληρο, και στο τέλος να τυπώνει και μια αλλαγή γραμμής. Και σημείωσε πως της περνάς σαν όρισμα το: message και όχι το *message.

Ουσιαστικά αυτό που κάνει η συνάρτηση είναι να ξεκινάει από την αρχή του c-string: message και να τυπώνει έναν-έναν κάθε χαρακτήρα, μέχρι να βρει μηδενικό χαρακτήρα. Μόλις τον βρει, τυπώνει μια αλλαγή γραμμής και επιστρέφει.

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

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

Δημοσίευσηαπό Star_Light » 30 Ιαν 2012, 20:45

migf1 έγραψε:To * δεν προβάλλει τα περιεχόμενου ολόκληρου του string, αλλά μονάχα τα περιεχόμενα του 1ου χαρακτήρα μέσα στο string.
Οπότε, είτε γράψουμε: message[0], είτε γράψουμε: *message, το αποτέλεσμα είναι ο χαρακτήρας: 'M'

Τώρα σε ότι αφορά την ερώτηση περί εκτύπωσης, η: puts() είναι έτσι φτιαγμένη ώστε όταν της περνάς σαν όρισμα ένα c-string, να το τυπώνει ολόκληρο, και στο τέλος να τυπώνει και μια αλλαγή γραμμής. Και σημείωσε πως της περνάς σαν όρισμα το: message και όχι το *message.

Ουσιαστικά αυτό που κάνει η συνάρτηση είναι να ξεκινάει από την αρχή του c-string: message και να τυπώνει έναν-έναν κάθε χαρακτήρα, μέχρι να βρει μηδενικό χαρακτήρα. Μόλις τον βρει, τυπώνει μια αλλαγή γραμμής και επιστρέφει.

Για αυτό και στην τεκμηρίωσή της γράφει ότι το όρισμά της πρέπει να είναι string (και όχι χαρακτήρας). Όλες οι συναρτήσεις strings είναι φτιαγμένες έτσι ώστε να περιμένουν ως όρισμα ένα c-string.


Oποτε αλλη φορα πριν ρωτησω καλυτερα να διαβαζω την τεκμηριωση της εκαστοτε συνάρτησης.

Και η printf ετσι ειναι σαν την puts? Οταν της περνας το message σκετο αλλα με εναν μορφοποιητη %s .

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


char *ptr[]="Hello";

printf("%c", *ptr);

output -> H

printf("%s", ptr);

output-> Hello

Γνώσεις ⇛ 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
Εκτύπωση

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

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