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

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

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

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

Δημοσίευσηαπό stamatiou » 29 Απρ 2012, 14:34

stamatiou έγραψε:Παιδιά προσπαθώ να λύσω το δεύτερο πρόβλημα της Γ' Φάσης εκείνου του διαγωνισμού (http://www.pdp.gr/files/24c/PDP_24_C.pdf).
Ο αλγόριθμος έχει ως εξής:
Στην αρχή του λέω να βρει το μέσο του input και βάζω δύο integers, τον ένα πριν και τον άλλο μετά από αυτό. Μετά ελέγχω μέχρι πού είναι ίδιοι οι χαρακτήρες. Μετά του βάζω το mid όσο το μήκος - 1 και αρχίζω να βάζω τους χαρακτήρες που είναι πριν το τωρινό mid στις θέσεις μετά από αυτό.

Ο αλγόριθμος δεν ξέρω αν δουλεύει αλλά ο κώδικας μου βγάζει Segmentation Fault :P : http://ideone.com/doXzh

Ok, σόρρυ για το ποστ, αλλά απλά δεν είχα το pal.in στο κατάλογο :oops:
EDIT: Τελικά δουλεύει μόνο με το πρώτο test case :/
1Γνώσεις→Linux: Αρχάριος┃Προγραμματισμός:Αρχάριος┃Αγγλικά:Μέτριος
2Λειτουργικό→Arch Linxu 32bit
3Προδιαγραφές→2x AMD AthlonX2 DualCore QL-66 ‖ RAM 1751 MiB ‖ Hewlett-Packard 308C - Hewlett-Packard Compaq 615
4Κάρτες γραφικών:ATI RS780M/RS780MN [Radeon HD 3200 Graphics][1002:9612]
5Δίκτυα:eth0:Marvell 88E8042 PCI-E Fast Ethernet Controller [11ab:4357] (rev 10)⋮eth1: Broadcom BCM4312 802.11b/g LP-PHY [14e4:4315](rev 01)
Πρωσοπική Ιστοσελίδα: http://giwrg98.co.cc
Άβαταρ μέλους
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

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

Δημοσίευσηαπό migf1 » 29 Απρ 2012, 15:37

Ilias95 έγραψε:Σωστά, rule στο makefile. Τώρα κατάλαβα πως ακριβώς λειτουργεί.
Οπότε configure δεν χρειάζομαι ακόμα.

Ούτε καν ξεχωριστό rule δεν χρειάζεται, μπορείς να βάλεις τις σχετικές εντολές του φλοιού ως ξεχωριστές γραμμές (με leading tab πάντα) κάτω από το rule που δημιουργεί το εκτελέσιμο αρχείο σου. Οπότε δεν χρειάζεται να κάνουν καν: make install, θα γίνονται όλα με απλό: make (έτσι εχω τα makefiles του hexviewer, αν θέλεις να τα δεις ως παράδειγμα).

Βέβαια αυτό έχει το μεινέκτημα πως το "installation" επαναλάμβανεται σε κάθε compilation.

έγραψε:
simosx έγραψε:Κάτι που δε ρώτησες είναι το πως φτιάχνεις το .po. Αν έχεις απορίες σε αυτά τα βήματα, είναι καλό να τις επιλύσεις.

Υπάρχει πληθώρα σχετικών οδηγών online.
Πχ. http://oriya.sarovar.org/docs/gettext_single.html και http://www.tuxamito.com/joomla/index.ph ... t-tutorial.

Εγώ πάντως έφαγα μεγάλη φρίκη με το gettext στην τρίλιζα. Παρόλο το διάβασμα που έριξα και τον κόπο που κατέβαλα για να το κάνω να δουλέψει, τα έχω ξεχάσει όλα πλέον. Συν ότι σπάστηκα τελείως που η γλώσσα αλλάζει ανάλογα τα environment variables, τα οποία btw δεν λειτουργούν όμοια στα Windows.

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

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

Δημοσίευσηαπό Ilias95 » 29 Απρ 2012, 16:10

migf1 έγραψε:έτσι εχω τα makefiles του hexviewer

Κατεβάζοντας τον κώδικα που δίνεις στο πρώτο post εδώ viewtopic.php?f=6&t=22242&start=0#p231743 δεν βρήκα makefile.

Εγώ αυτή τη στιγμή προσπαθώ να κάνω κάτι άλλο και δεν μπορώ να βρω πως.
Το makefile που έχω για το hunt είναι αυτό: https://github.com/Ilias95/Hunt/blob/master/Makefile
Θέλω να μεταφέρω όλα τα αρχεία .c και .h σε έναν κατάλογο με όνομα src/.
Έτσι θα πρέπει να γίνει και αλλαγή στο makefile (το οποίο θα μείνει εκεί που είναι) ώστε πρώτα απ' όλα να μεταβαίνει (με την cd) στον φάκελο src/ και μετά να ξεκινάει την μεταγλώττιση.

Καμιά ιδέα πως μπορώ να το κάνω;

Edit: Οκ, τα κατάφερα.
Τελευταία επεξεργασία από Ilias95 και 29 Απρ 2012, 17:16, έχει επεξεργασθεί 1 φορά/ες συνολικά
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

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

Δημοσίευσηαπό Ilias95 » 29 Απρ 2012, 16:15

migf1 έγραψε:Εγώ πάντως έφαγα μεγάλη φρίκη με το gettext στην τρίλιζα. Παρόλο το διάβασμα που έριξα και τον κόπο που κατέβαλα για να το κάνω να δουλέψει, τα έχω ξεχάσει όλα πλέον. Συν ότι σπάστηκα τελείως που η γλώσσα αλλάζει ανάλογα τα environment variables, τα οποία btw δεν λειτουργούν όμοια στα Windows.

Για αυτό και τον HexViewer τον έκανα με ξεχωριστά εκτελέσιμα για κάθε γλώσσα, η οποία τρέχει πάντα ανεξαρτήτως περιβάλλοντος. Έτσι κι αλλιώς το μανίκι των ξεχωριστών αρχείων κειμένου για κάθε γλώσσα δεν το γλιτώνεις.

Δεν κατάλαβα που ακριβώς είχες το πρόβλημα με το gettext.
Εμένα και αυτό και το αντίστοιχο σύστημα του Qt που έχω δοκιμάσει μου άρεσαν πάρα πολύ και τα βρίσκω πολύ βολικά.

Δεν είναι αναγκαστικό να τρέξει με την γλώσσα που είναι ορισμένη στο σύστημα σου, μπορείς να το πειράξεις και αυτό.
Τώρα για τα Windows δεν ξέρω. Αν υπάρχει πρόβλημα εκεί, είναι όντως σημαντικό θέμα.
Πάντως τα διαφορετικά εκτελέσιμα νομίζω ότι δεν είναι και τόσο πρακτική λύση.
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

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

Δημοσίευσηαπό simosx » 29 Απρ 2012, 17:37

migf1 έγραψε:
Ούτε καν ξεχωριστό rule δεν χρειάζεται, μπορείς να βάλεις τις σχετικές εντολές του φλοιού ως ξεχωριστές γραμμές (με leading tab πάντα) κάτω από το rule που δημιουργεί το εκτελέσιμο αρχείο σου. Οπότε δεν χρειάζεται να κάνουν καν: make install, θα γίνονται όλα με απλό: make (έτσι εχω τα makefiles του hexviewer, αν θέλεις να τα δεις ως παράδειγμα).


Η τυπική πρακτική είναι να τα έχεις ξεχωριστά, και να χρησιμοποιείς τις παραμέτρους στο Makefile ώστε να κάνει ό,τι χρειάζεται.
Αυτό που έχει περάσει ως τυπική παραδοχή είναι
Κώδικας: Επιλογή όλων
make

μεταγλώττιση του πηγαίου κώδικα
Κώδικας: Επιλογή όλων
make clean

διαγραφή των μεταγλωττισμένων αρχείων ώστε να καθαρίσει ο κατάλογος και να επαναφερθεί στην αρχική κατάσταση.
Κώδικας: Επιλογή όλων
sudo make install

εγκατάσταση των αρχείων. Σε περίπτωση που δεν έχει γίνει μεταγλώττιση, ή η μεταγλώττιση πρέπει να επαναληφθεί, τότε γίνεται αυτόματα με κλήση του κανόνα μεταγλώττισης.
προσωπικό ιστολόγιο ϗ πλανήτης Ubuntu-gr
Συμβάλετε και εσείς στο ελληνικό βιβλίο Ubuntu!
1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 13.10 saucy 3.11.0-031100rc1-generic 64bit (el_GR.UTF-8, Unity ubuntu)
3 AMD E-450 APU with Radeon HD Graphics ‖ RAM 3555 MiB ‖ Sony Corporation VAIO
4 AMD nee ATI Wrestler [Radeon HD 6320] [1002:9806] {fglrx_pci}
5 eth0: Atheros Inc. AR8151 v2.0 Gigabit Ethernet [1969:1083] (rev c0) ⋮ wlan0: Atheros Inc. AR9285 [168c:002b] (rev 01)
Φτιάξτε και εσείς τη δική σας υπογραφή (παραπάνω κείμενο) αυτόματα με κλικ εδώ!
simosx
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 10334
Εγγραφή: 11 Μάιος 2008, 18:52
Launchpad: simosx
IRC: simosx
Εκτύπωση

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

Δημοσίευσηαπό migf1 » 29 Απρ 2012, 19:38

Ilias95 έγραψε:
Κατεβάζοντας τον κώδικα που δίνεις στο πρώτο post εδώ viewtopic.php?f=6&t=22242&start=0#p231743 δεν βρήκα makefile.

Μέσα στους φακέλους src/ansi και src/utf8 υπάρχουν διαφορα makefiles για διάφορους compilers.

έγραψε:Δεν κατάλαβα που ακριβώς είχες το πρόβλημα με το gettext.
Εμένα και αυτό και το αντίστοιχο σύστημα του Qt που έχω δοκιμάσει μου άρεσαν πάρα πολύ και τα βρίσκω πολύ βολικά.

Το πρόβλήμα είναι οι εξαρτήσεις του από περιβάλλον και βιβλιοθήκες, που για απλά προγράμματα περιπλέκουν αναντίστοιχα την διαδικασία. Ειδικά όταν θέλεις να μπορείς να κάνεις compile σε διαφορετικές πλατφόρμες.

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

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

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

Δημοσίευσηαπό stamatiou » 04 Μάιος 2012, 17:42

Γεια σας και πάλι.
Είμαι στο βιβλίο που έχουμε πει στη σελίδα 121 στην άσκηση 8. Έχω γράψει τον κώδικα εδώ:http://ideone.com/0GYwQ.
Για κάποιο όμως λόγο παίρνω runtime error :/
Επίσης στην 9 πώς γίνεται αφού μου ζητάει με μία μόνο εξτρά statement;
EDIT: Στην 12 δλδ μου λέει ότι ισχύει κάτι τέτοιο:
Spoiler: show
d <= sqrt(n) <=> d^2 <= n

Ισχύει όντως;
EDIT2: Στο 1ο Project έχω γράψει αυτό αλλά για κάποιο λόγο παίρνω error και warings: http://ideone.com/tuh0C
EDIT3: Στο 10ο Project ο κώδικάς μου δεν αγνοεί το 0/0/0: http://ideone.com/ITHgs. Θα το κοίταζα με debugger αλλά αυτή τη στιγμή είμαι σε άλλο υπολογιστή :/
1Γνώσεις→Linux: Αρχάριος┃Προγραμματισμός:Αρχάριος┃Αγγλικά:Μέτριος
2Λειτουργικό→Arch Linxu 32bit
3Προδιαγραφές→2x AMD AthlonX2 DualCore QL-66 ‖ RAM 1751 MiB ‖ Hewlett-Packard 308C - Hewlett-Packard Compaq 615
4Κάρτες γραφικών:ATI RS780M/RS780MN [Radeon HD 3200 Graphics][1002:9612]
5Δίκτυα:eth0:Marvell 88E8042 PCI-E Fast Ethernet Controller [11ab:4357] (rev 10)⋮eth1: Broadcom BCM4312 802.11b/g LP-PHY [14e4:4315](rev 01)
Πρωσοπική Ιστοσελίδα: http://giwrg98.co.cc
Άβαταρ μέλους
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

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

Δημοσίευσηαπό migf1 » 05 Μάιος 2012, 16:27

Τα περισσότερα από αυτά που ρωτάς Γιώργο είναι απλά θέμα χρόνου να τα βρεις με τη χρήση printf() μέσα στον κώδικά σου ή με χρήση ενός debugger. Δηλαδή, με άλλα λόγια, μας ζητάς να κάνουμε εμείς debug τον κώδικά σου για σένα :P

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

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

Δημοσίευσηαπό c7p » 06 Μάιος 2012, 16:33

Από όσο ξέρω και από ότι έψαξα, η σύνταξη είναι αυτή

goto label ;
... code ...
label :

Πάω κάνω compile το πρόγραμμα μου που χρησιμοποιεί την goto και "χτυπάει" στην γραμμή που έχω το label.
Το μήνυμα είναι το εξής: "error: label at end of compound statement"

Καμιά ιδέα ;
Άβαταρ μέλους
c7p
powerTUX
powerTUX
 
Δημοσιεύσεις: 1849
Εγγραφή: 30 Μάιος 2009, 16:09
Τοποθεσία: Κατερίνη
Εκτύπωση

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

Δημοσίευσηαπό stamatiou » 06 Μάιος 2012, 16:39

c7p έγραψε:Από όσο ξέρω και από ότι έψαξα, η σύνταξη είναι αυτή

goto label ;
... code ...
label :

Πάω κάνω compile το πρόγραμμα μου που χρησιμοποιεί την goto και "χτυπάει" στην γραμμή που έχω το label.
Το μήνυμα είναι το εξής: "error: label at end of compound statement"

Καμιά ιδέα ;

Στο βιβλίο C Programming A modern approach νομίζω πως λέει ότι μετά από το label πρέπει να ακολουθεί statement άρα δοκίμασε να βάλεις:
Κώδικας: Επιλογή όλων

goto label:
...
label: ;
...

EDIT: Βασικά πρέπει να είναι το ίδιο :/
Τελευταία επεξεργασία από stamatiou και 06 Μάιος 2012, 16:54, έχει επεξεργασθεί 1 φορά/ες συνολικά
1Γνώσεις→Linux: Αρχάριος┃Προγραμματισμός:Αρχάριος┃Αγγλικά:Μέτριος
2Λειτουργικό→Arch Linxu 32bit
3Προδιαγραφές→2x AMD AthlonX2 DualCore QL-66 ‖ RAM 1751 MiB ‖ Hewlett-Packard 308C - Hewlett-Packard Compaq 615
4Κάρτες γραφικών:ATI RS780M/RS780MN [Radeon HD 3200 Graphics][1002:9612]
5Δίκτυα:eth0:Marvell 88E8042 PCI-E Fast Ethernet Controller [11ab:4357] (rev 10)⋮eth1: Broadcom BCM4312 802.11b/g LP-PHY [14e4:4315](rev 01)
Πρωσοπική Ιστοσελίδα: http://giwrg98.co.cc
Άβαταρ μέλους
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

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

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

cron