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

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

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

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

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

Τωρα τσεκαρισα και την λυση που προτεινει ο King... ιδιες ειναι απλα αντι για

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


βάζει απευθειας το 100 στην τριτη εκφραση της printf και βγάζει τον έναν / .

και στην 2η
αντι για
Κώδικας: Επιλογή όλων
x/10%10


βάζει μια παρένθεση στον αριστερό τελεστέο (ως προς τον τελεστή %) για να το κανει πιο ευανάγνωστο
κατα τα αλλα η προτεραιότητα μιας και οι / , % ανήκουν στο ιδιο επιπεδο ειναι απο αριστερα προς τα δεξια ειτε βαλεις
την παρένθεση ειτε δεν την βάλεις.

http://knking.com/books/c2/answers/c4.html
Γνώσεις ⇛ 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 » 12 Μαρ 2012, 21:53

@Star_Light
Δεν διάβασα όλο τον κώδικα, αλλά η παρακάτω λογική στην main είναι λάθος:
Μορφοποιημένος Κώδικας: Επιλογή όλων
if( ch == 1 )
ISBN_13(ch);
if( ch == 2)
ISBN_10(ch);
if( ch == 3)
UPC(ch);
if( ch!= 1 || ch!=2 || ch!=3 )
printf(" Error Message : There is no option ");

Έτσι όπως το έχεις είτε 1, είτε 2, είτε 3 δώσεις πάντα θα παίρνεις error message.

Το σωστό είναι:
Μορφοποιημένος Κώδικας: Επιλογή όλων
if (ch == 1)
ISBN_13(ch);
else if (ch == 2)
ISBN_10(ch);
else if (ch == 3)
UPC(ch);
else
printf(" Error Message : There is no option ");

Ή καλύτερα:
Μορφοποιημένος Κώδικας: Επιλογή όλων
switch(ch) {
case 1: ISBN_13(ch); break;
case 2: ISBN_10(ch); break;
case 3: UPC(ch); break;
default: printf(" Error Message : There is no option "); break;
}
Τελευταία επεξεργασία από Ilias95 και 12 Μαρ 2012, 22:00, έχει επεξεργασθεί 1 φορά/ες συνολικά
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

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

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

@Ilias95 μεταγλώτισε τον παραπανω κωδικα και δοκιμασε να τον τρέξεις με 1 , 2 , 3

αλλα και -1 , -2 , -3 ..... 5 , 6 , 7..... 1000 :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

Δημοσίευσηαπό Ilias95 » 12 Μαρ 2012, 21:58

Star_Light έγραψε:@Ilias95 μεταγλώτισε τον παραπανω κωδικα και δοκιμασε να τον τρέξεις με 1 , 2 , 3

αλλα και -1 , -2 , -3 ..... 5 , 6 , 7..... 1000 :p

Κώδικας: Επιλογή όλων
ISBN-13 / ISBN-10 / UPC ? Push 1 / 2 / 3 respectively : 2
Enter ISBN-10 like [y-y-y-y]: 4-1-6-3
Here is what you give:
Group identifier : 4
Publisher identifier: 1
Title identifier: 6
Check digit: 3 Error Message : There is no option

Δεν θα πρεπε να παίρνω error message στο τέλος νομίζω. :)

Επίσης παίρνω warnings κατά το compile:
Κώδικας: Επιλογή όλων
test1.c: In function ‘ISBN_13’:
test1.c:27:18: προειδοποίηση: unused parameter ‘ch’ [-Wunused-parameter]
test1.c: In function ‘ISBN_10’:
test1.c:40:18: προειδοποίηση: unused parameter ‘ch’ [-Wunused-parameter]
test1.c: In function ‘UPC’:
test1.c:53:14: προειδοποίηση: unused parameter ‘ch’ [-Wunused-parameter]



Edit: "ενώ αν δώσεις κάποιον άσχετο αριθμό δεν θα πάρεις"
Άκυρο εδώ, μπερδεύτηκα. Έτσι όπως το έχεις σε οποιαδήποτε περίπτωση θα πάρεις error. Αφού δεν γίνεται το ch να είναι και 1, και 2, και 3 ταυτόχρονα... ;)
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

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

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

Αυτο ομολογω μου ξέφυγε και έχεις δικιο :lol: :lol:

εγω νομιζα οτι μου έλεγες πριν μπει στην συνάρτηση και μου φάνηκε περίεργο...

Πρέπει να φρεσκάρω ξανα τα if μου μπαινω κεφάλαιο 5 τωρα οποτε θα τα ξαναδω :p

βγάλε την γραμμή με την τελευταια if αν θες να χρησιμοποιήσεις αυτο το πολυ εμπορικο προγραμμα :lol: :lol:

edit: ο migf1 που χάθηκε??? τον έφαγε ο hex editor? :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

Δημοσίευσηαπό Ilias95 » 12 Μαρ 2012, 22:22

Στις συναρτήσεις γιατί περνάς arguments που δεν τα χρησιμοποιείς;
Κάνε τες void. Γι' αυτό παίρνεις warning κατά την μεταγλώττιση.
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

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

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

Ilias95 έγραψε:Στις συναρτήσεις γιατί περνάς arguments που δεν τα χρησιμοποιείς;
Κάνε τες void. Γι' αυτό παίρνεις warning κατά την μεταγλώττιση.


Σωστός. Και έγραψα και απο την αρχή τις συναρτήσεις για να μην χρειάζεται μετα να τις δηλώνω
και να τις ορίζω.

http://ideone.com/US2JV

p.s Εμενα ο μεταγλωτιστής δεν μου έδωσε κανενα warn πάντως και δεν ασχολήθηκα και πολυ με τον κώδικα οποτε και μου διέφυγε!!!! :(
Ποιον compiler χρησιμοποιεις?
Γνώσεις ⇛ 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 » 12 Μαρ 2012, 22:38

Star_Light έγραψε:p.s Εμενα ο μεταγλωτιστής δεν μου έδωσε κανενα warn πάντως και δεν ασχολήθηκα και πολυ με τον κώδικα οποτε και μου διέφυγε!!!! :(
Ποιον compiler χρησιμοποιεις?

gcc. Κάνε compile με flags '-W -Wextra -Wall' για να πιάνεις τα warnings.
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

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

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

Ilias95 έγραψε:
gcc. Κάνε compile με flags '-W -Wextra -Wall' για να πιάνεις τα warnings.


Οπα ναι. Σελ.30 στον King :p

Τα είχα ξεχάσει τα options του gcc επειδη το compile το έκανα απο το GUI του geany
και οχι manually απο το τερματικό.
Γνώσεις ⇛ 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 » 12 Μαρ 2012, 23:05

Star_Light έγραψε:
Ilias95 έγραψε:
gcc. Κάνε compile με flags '-W -Wextra -Wall' για να πιάνεις τα warnings.


Οπα ναι. Σελ.30 στον King :p

Τα είχα ξεχάσει τα options του gcc επειδη το compile το έκανα απο το GUI του geany
και οχι manually απο το τερματικό.

Και εγώ το Geany χρησιμοποιώ.
Μπορείς να διαμορφώσεις όπως θες την εντολή μεταγλώττισης. (Build -> Set build commands)
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

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

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