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

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

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

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

Δημοσίευσηαπό giannosfor » 27 Μαρ 2012, 01:05

Off topic:
Πως κάνετε το μορφοποιημένο κώδικα ;
1 Γνώσεις Linux: Καθόλου ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 12.04 precise 3.2.0-58-generic 32bit (en_US.UTF-8, Unity ubuntu), Ubuntu 3.2.0-57-generic, Microsoft Windows XP Professional
3 Intel Core2 Duo CPU E4600 2.40GHz ‖ RAM 2012 MiB ‖ ASUS INC. P5Q - � P5Q
4 nVidia G94 [GeForce 9600 GT] [10de:0622] {nvidia}
5 eth0: Qualcomm Atheros AR8121/AR8113/AR8114 Gigabit or Fast Ethernet [1969:1026] (rev b0) ⋮ wlan0: 148f:3070 Ralink Technology, Corp. RT2870/RT3070 Wireless Adapter
Άβαταρ μέλους
giannosfor
punkTUX
punkTUX
 
Δημοσιεύσεις: 297
Εγγραφή: 24 Απρ 2011, 20:24
Τοποθεσία: Ηράκλειο
Εκτύπωση

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

Δημοσίευσηαπό Star_Light » 27 Μαρ 2012, 01:53

giannosfor έγραψε:Off topic:
Πως κάνετε το μορφοποιημένο κώδικα ;


z_code .... /z_code
Γνώσεις ⇛ 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

Δημοσίευσηαπό giannosfor » 27 Μαρ 2012, 11:27

Thanks!
1 Γνώσεις Linux: Καθόλου ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 12.04 precise 3.2.0-58-generic 32bit (en_US.UTF-8, Unity ubuntu), Ubuntu 3.2.0-57-generic, Microsoft Windows XP Professional
3 Intel Core2 Duo CPU E4600 2.40GHz ‖ RAM 2012 MiB ‖ ASUS INC. P5Q - � P5Q
4 nVidia G94 [GeForce 9600 GT] [10de:0622] {nvidia}
5 eth0: Qualcomm Atheros AR8121/AR8113/AR8114 Gigabit or Fast Ethernet [1969:1026] (rev b0) ⋮ wlan0: 148f:3070 Ralink Technology, Corp. RT2870/RT3070 Wireless Adapter
Άβαταρ μέλους
giannosfor
punkTUX
punkTUX
 
Δημοσιεύσεις: 297
Εγγραφή: 24 Απρ 2011, 20:24
Τοποθεσία: Ηράκλειο
Εκτύπωση

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

Δημοσίευσηαπό migf1 » 27 Μαρ 2012, 20:24

Παιδιά, αν έχει κάποιος 64-μπιτο Ubuntu μπορεί να μου πει πόσα bytes είναι o long-double; Αν δεν ξέρει, έχω εδώ (σε spoiler) ένα απόσπασμα από κώδικα που μπορεί να το κάνει compile με έναν 64-μπιτο compiler και να μου πει πόσα bytes βγάζει το hexdump.

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

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

Δημοσίευσηαπό Star_Light » 27 Μαρ 2012, 22:49

64 bit ειναι το δικο μου

Κώδικας: Επιλογή όλων
kostas@kostas-SSL:~/PROGRAMS$ uname -a
Linux kostas-SSL 2.6.35-32-generic #67-Ubuntu SMP Mon Mar 5 19:39:49 UTC 2012 x86_64 GNU/Linux
kostas@kostas-SSL:~/PROGRAMS$


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

kostas@kostas-SSL:~/PROGRAMS$ ./tests2
s hexdump:
68 66 65 77 72 77 65 69 6f 72 20 65 69 6f 72 20
75 65 77 69 75 20 77 65 69 75 65 77 20 65 77 20
77 65 77 65 6f 20 65 75 65 75 65 75 65 72 6f 20
37 37 39 37 39 34 33 35 34 33 39 35 66 6a 6b 66
68 69 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00

ld hexdump (cur.endian): 77 65 69 6f 72 20 65 69 6f 72 20 75 65 77 69 75
ldouble val: 6.53001e+3886 / 0x6.96520726f696577p+12909

ld hexdump (opp.endian): 75 69 77 65 75 20 72 6f 69 65 20 72 6f 69 65 77
ldouble val: 1.60381e+2883 / 0x6.f72207565776975p+9575
sh: pause: not found


Η εξοδος του προγραμματος σου.
Γνώσεις ⇛ 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

Δημοσίευσηαπό medigeek » 28 Μαρ 2012, 01:32

Αυτό βοηθάει καθόλου;
https://en.wikipedia.org/wiki/C_data_types#Basic_types
έγραψε:extended precision floating-point type. Actual properties unspecified. On most systems this is equivalent either to double, 80-bit floating point format, or IEEE 754 quadruple precision floating-point format.

https://en.wikipedia.org/wiki/Extended_precision
https://en.wikipedia.org/wiki/Quadruple ... int_format
Κύπριος; Κόπιασε στο ubuntu-cy! ┃ Launchpad Debian Github
Οδηγός για νεοεισερχόμενους -- Αρχικές οδηγίες για αρχάριους χρήστες του Ubuntu

1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 12.10 quantal 3.5.0-21-generic 64bit (en_US.UTF-8, GNOME cinnamon2d), Ubuntu 3.5.0-19-generic, Windows 7
3 Intel Core2 Duo CPU E6550 2.33GHz ‖ RAM 5970 MiB ‖ MSI MS-7235
4 nVidia G73 [GeForce 7300 GT] [10de:0393] {nvidia}
5 eth0: Realtek RTL-8110SC/8169SC Gigabit Ethernet [10ec:8167] (rev 10)
Άβαταρ μέλους
medigeek
Freedom
Freedom
 
Δημοσιεύσεις: 5023
Εγγραφή: 24 Μάιος 2008, 14:49
Τοποθεσία: Σερβία/Κύπρος
Launchpad: medigeek
IRC: savvas
Εκτύπωση

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

Δημοσίευσηαπό migf1 » 28 Μαρ 2012, 11:32

Κώστα ευχαριστώ για το test, τελικά είναι 16 bytes ο long-double εκεί (οπότε πρέπει να τροποποιήσω μια οθόνη ώστε να χωράει και 16bytes σε μια από τις γραμμές της).

@medigreek: Ευχαριστώ για τα links (αν και τα γνωρίζω αυτά). Το πρόβλημα είναι πως όταν γράφεις γενικό κώδικα (που προορίζεται να γίνεται compile σε πολλά και ανομοιογενή συστήματα) δεν μπορείς να βασιστείς σε υλοποιήσεις που εξαρτώνται άμεσα από την εκάστοτε αρχιτεκτονική. Τελικά βγήκε άκρη (χτες ήμουν πτώμα και είχα ξεχάσει τελείως το <float.h> που χρησιμοποιεί abstract #defines για τα floating point numbers).

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

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

Δημοσίευσηαπό Star_Light » 28 Μαρ 2012, 12:25

@migf1 anytime my friend :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

Δημοσίευσηαπό Ilias95 » 28 Μαρ 2012, 14:50

@migf1
Επειδή θα καταπιαστώ αργότερα με τον string-tokenizer ξαναρωτάω για κάτι που δεν κατάλαβα.

Έστω ότι περνάω σαν string με delimiting characters το παρακάτω: "ab".
Αυτό σημαίνει ότι θα "σπάει" το string όπου βρίσκει "ab" ή θα το σπάει όπου βρίσκει "a" ή "b".
Το πρώτο το θεωρώ πιο λογικό (έτσι δουλεύει και η split() στην python), αλλά κάπου μπερδεύτηκα από τα γραφόμενα σου.

migf1 έγραψε:Ο string-tokenizer είναι πολύ όμορφη και πάρα πολύ χρήσιμη συνάρτηση, και λογικά δεν θα το καταφέρεις πολύ εύκολα να είναι re-usable.

Επίσης εδώ πέρα τι ακριβώς εννοείς re-usable;
Αφού θα είναι μία αυτόνομη συνάρτηση, αναγκαστικά δεν θα είναι re-usable; Εννοείται ότι δεν θα χρησιμοποιήσω global μεταβλητές.
Ή άλλο καταλαβαίνω;

Τέλος, άλλη είναι η prompt_for και άλλη η LIBS;
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

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

Δημοσίευσηαπό migf1 » 28 Μαρ 2012, 15:03

Ilias95 έγραψε:@migf1
Επειδή θα καταπιαστώ αργότερα με τον string-tokenizer ξαναρωτάω για κάτι που δεν κατάλαβα.

Έστω ότι περνάω σαν string με delimiting characters το παρακάτω: "ab".
Αυτό σημαίνει ότι θα "σπάει" το string όπου βρίσκει "ab" ή θα το σπάει όπου βρίσκει "a" ή "b".
Το πρώτο το θεωρώ πιο λογικό (έτσι δουλεύει και η split() στην python), αλλά κάπου μπερδεύτηκα από τα γραφόμενα σου.

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

έγραψε:
migf1 έγραψε:Ο string-tokenizer είναι πολύ όμορφη και πάρα πολύ χρήσιμη συνάρτηση, και λογικά δεν θα το καταφέρεις πολύ εύκολα να είναι re-usable.

Επίσης εδώ πέρα τι ακριβώς εννοείς re-usable;
Αφού θα είναι μία αυτόνομη συνάρτηση, αναγκαστικά δεν θα είναι re-usable; Εννοείται ότι δεν θα χρησιμοποιήσω global μεταβλητές.
Ή άλλο καταλαβαίνω;

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

έγραψε:Τέλος, άλλη είναι η prompt_for και άλλη η LIBS;

Ναι, η LIBS είναι μια συλλογή από αυτόνομες συναρτήσεις διαχείρισης strings, που μπορούν να χρησιμοποιηθούν εναλλακτικά εκείνων του <string.h> ή/και ως προέκταση του <string.h>.

Η prompt_for() ασχολείται αποκλειστικά με την κύρια είσοδο... δίνει δηλαδή εναλλακτική στις στάνταρ συναρτήσεις εισόδου.

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

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

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