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

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

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

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

Δημοσίευσηαπό Star_Light » 29 Ιούλ 2011, 12:54

Τι σημαινει out of the box???? Πω ρε παλι λαθος το εκανα :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 » 29 Ιούλ 2011, 13:06

stamatiou έγραψε:Oκ, πάμε στην επόμενη άσκηση; :D

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

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

Δημοσίευσηαπό stamatiou » 29 Ιούλ 2011, 13:07

migf1 έγραψε:
stamatiou έγραψε:Oκ, πάμε στην επόμενη άσκηση; :D

Δώστε μου λίγο χρόνο γιατί είμαι στη δουλειά.

Οκ :D
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

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

Δημοσίευσηαπό Star_Light » 29 Ιούλ 2011, 13:57

Βασικα σε καποιο παραδειγμα ειχε πει ο migf1 οτι μπορουμε απευθειας μεσω της sscanf να μετατρεψουμε ενα string σε integer για αυτο το λογο εβαλα το %d μεσα στην sscanf.
Γνώσεις ⇛ 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 » 29 Ιούλ 2011, 14:17

Star_Light έγραψε:Τι σημαινει out of the box???? Πω ρε παλι λαθος το εκανα :P και η πλακα ειναι πως ο μεταγλωτιστης μου τα εβγαζε κανονικα :/

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

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

Δημοσίευσηαπό migf1 » 29 Ιούλ 2011, 15:32

stamatiou έγραψε:
migf1 έγραψε:
stamatiou έγραψε:Oκ, πάμε στην επόμενη άσκηση; :D

Δώστε μου λίγο χρόνο γιατί είμαι στη δουλειά.

Οκ :D

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

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

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

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

Δημοσίευσηαπό Star_Light » 29 Ιούλ 2011, 15:37

σε πιο βασικες λεω εγω!!!

Κατι ακομα... εφοσον η sscanf επιστρεφει interger... τοτε πως εγω μεσα στην printf δινω %c μορφοποιηση??? δεν εχει σημασια ετσι? επιστρεφει απλα την αριθμητικη τιμη του χαρακτηρα που διαβαζει στο 1ο της ορισμα και εχει αποθηκευσει στο 3ο ε???
Γνώσεις ⇛ 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++

Δημοσίευσηαπό stamatiou » 29 Ιούλ 2011, 15:39

Και εγώ αυτό λέω. Καλύτερα αργά και σταθερά παρά γρήγορα και να ξαναγυρίζουμε σε αυτά μετά από λίγες μέρες :D
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

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

Δημοσίευσηαπό migf1 » 29 Ιούλ 2011, 17:27

Star_Light έγραψε:σε πιο βασικες λεω εγω!!!

Κατι ακομα... εφοσον η sscanf επιστρεφει interger... τοτε πως εγω μεσα στην printf δινω %c μορφοποιηση??? δεν εχει σημασια ετσι? επιστρεφει απλα την αριθμητικη τιμη του χαρακτηρα που διαβαζει στο 1ο της ορισμα και εχει αποθηκευσει στο 3ο ε???

Όχι, όχι... η τιμή επιστροφής της sscanf είναι το πλήθος των επιτυχημένων εκχωρήσεων που έκανε, σύμφωνα με αυτά που της είπες στο 2ο όρισμά της.
Για παράδειγμα, αν εσύ θες να διαβάσεις π.χ. 2 int χ και y από τη κύρια είσοδο, διαβάζεις όλη τη γραμμή πρώτα στο inbuf και μετά για να "τραβήξεις" τις τιμές των x και y που χρειάζεσαι μέσα από το inbuf, γράφεις:
Κώδικας: Επιλογή όλων

int x,y;
sscanf(inbuf, "%d %d", &x, &y);

Αν ο χρήστης σου γράψει ένα μόνο νούμερο και πατήσει ENTER τότε η sscanf θα βάλει το νούμερο στο x, θα βάλει 0 στο y και θα σου επιστρέψει 1. Ότι δηλαδή διάβασε με επιτυχία την 1 από τις 2 μεταβλητές που της είχες πει να διαβάσει.

Αν ο χρήστης σου γράψει 3 ή περισσότερα νούμερα (εννοείται ξεχωρισμένα με κενούς χαρακτήρες) τότε η sscanf θα βάλει το 1ο νούμερο στο x, το 2ο νούμερο στο y, θα αγνοήσει όλα τα υπόλοιπα και θα σου επιστρέψει 2. Ότι δηλαδή διάβασε επιτυχημένα τις 2 μεταβλητές που της είχες πει να διαβάσει.

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

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

int x,y;
int n;

n = sscanf(inbuf, "%d %d", &x, &y);

if ( n == EOF)
// καμία μεταβλητή σου δεν διαβάστηκε με επιτυχία (π.χ. ο χρήστης πάτησε ENTER χωρίς να γράψει κανένα νούμερο)
else if (n == 1)
// μόνο μια μεταβλητή διαβάστηκε επιτυχημένα (συνήθως η 1η, η x δλδ σε μας)
else if (n == 2)
// διαβάστηκαν επιτυχημένα και οι 2 μεταβλητές μας (τυχόν εξτρά νούμερα στην είσοδο αγνοήθηκαν)

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

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

Δημοσίευσηαπό Star_Light » 29 Ιούλ 2011, 18:27

ΠΩΠΩ πρωτη φορα το ακουω και αυτο...... και σε αλλες συναρτησεις ετσι παιζει????

το ξερω το EOF = END OF FILE :D

Θεωρια απο C ηξερα... απο τον χειμωνα... απλα δεν ειχα δουλεψει τοσο τις ασκησεις.
Τελευταία επεξεργασία από Star_Light και 29 Ιούλ 2011, 18: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
Εκτύπωση

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

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