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

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

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

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

Δημοσίευσηαπό Star_Light » 06 Οκτ 2011, 19:00

Τσεκαρε το

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


for(i=1; i<10; i++)
if((i==5) || (i==3))
printf("\n %d",y);

printf("\n%d",y);



Το y στην τελευταια printf θα εκτυπωθει ουτως η αλλως.

Τα λεμε το βραδυ.
Γνώσεις ⇛ 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 » 06 Οκτ 2011, 19:08

Όταν το value πάρει την τιμή 2 εκτελείται το if, δηλαδή το continue που περιέχει. Άρα η ροή κάνει skip το printf() όταν το value ισούται με 2. Continue σημαίνει: διέκοψε την τρέχουσα επανάληψη και πήγαινε στην επόμενη.

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

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

Δημοσίευσηαπό migf1 » 06 Οκτ 2011, 20:26

Star_Light έγραψε:Τσεκαρε το

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


for(i=1; i<10; i++)
if((i==5) || (i==3))
printf("\n %d",y);

printf("\n%d",y);



Το y στην τελευταια printf θα εκτυπωθει ουτως η αλλως.

Τα λεμε το βραδυ.

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

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

Δημοσίευσηαπό Star_Light » 06 Οκτ 2011, 22:16

migf1 έγραψε:Όταν το value πάρει την τιμή 2 εκτελείται το if, δηλαδή το continue που περιέχει. Άρα η ροή κάνει skip το printf() όταν το value ισούται με 2. Continue σημαίνει: διέκοψε την τρέχουσα επανάληψη και πήγαινε στην επόμενη.

Btw, μετά τα άγκιστρα δεν βάζουμε ερωτηματικά.


Αν εννοεις αυτο εδω το τμημα

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

if(y){
printf("\nHello FOlks");
printf("\nHow are you");
}


Οταν εβγαλα τα ερωτηματα ο μεταγλωτιστης μου κτυπησε.
Γιατι να βγουν τα ερωτηματικα? Εφοσον με τις αγκυλες μπορεις να
εκτελεσεις παραπανω απο μια εντολες? (μπλοκ εντολων)
αρα βαζεις ερωτηματικα επειδη καθεμια ειναι ξεχωριστη εντολη
απλα λογω των αγκιστρων θεωρουνται σωμα οποτε και θα εκτελεστουν ολες.

P.S Έχεις απολυτο δικιο για την continue. H continue λεει να συνεχιστει ο βρογχος
στην επομενη επαναληψη αλλα ελεγχεται απο την if για να το κανει αυτο.
Τελευταία επεξεργασία από Star_Light και 06 Οκτ 2011, 22:54, έχει επεξεργασθεί 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
Εκτύπωση

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

Δημοσίευσηαπό Star_Light » 06 Οκτ 2011, 22:17

migf1 έγραψε:
Φυσικά και θα τυπωθεί, γιατί να μην τυπωθεί; Αφού του λες να τυπώνεται σε κάθε επανάληψη του loop.


Τι εννοεις σε καθε επαναληψη του βρογχου?
Η τελευταια printf δεν ειναι μέρος της for.
Γνώσεις ⇛ 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 » 07 Οκτ 2011, 06:46

Star_Light έγραψε:
migf1 έγραψε:Όταν το value πάρει την τιμή 2 εκτελείται το if, δηλαδή το continue που περιέχει. Άρα η ροή κάνει skip το printf() όταν το value ισούται με 2. Continue σημαίνει: διέκοψε την τρέχουσα επανάληψη και πήγαινε στην επόμενη.

Btw, μετά τα άγκιστρα δεν βάζουμε ερωτηματικά.


Αν εννοεις αυτο εδω το τμημα

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

if(y){
printf("\nHello FOlks");
printf("\nHow are you");
}


Οταν εβγαλα τα ερωτηματα ο μεταγλωτιστης μου κτυπησε.
Γιατι να βγουν τα ερωτηματικα? Εφοσον με τις αγκυλες μπορεις να
εκτελεσεις παραπανω απο μια εντολες? (μπλοκ εντολων)
αρα βαζεις ερωτηματικα επειδη καθεμια ειναι ξεχωριστη εντολη
απλα λογω των αγκιστρων θεωρουνται σωμα οποτε και θα εκτελεστουν ολες.

Αυτό εδώ το ερωτηματικό εννοούσα: viewtopic.php?p=211261#p211261

έγραψε:P.S Έχεις απολυτο δικιο για την continue. H continue λεει να συνεχιστει ο βρογχος
στην επομενη επαναληψη αλλα ελεγχεται απο την if για να το κανει αυτο.

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

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

Δημοσίευσηαπό migf1 » 07 Οκτ 2011, 06:47

Star_Light έγραψε:
migf1 έγραψε:
Φυσικά και θα τυπωθεί, γιατί να μην τυπωθεί; Αφού του λες να τυπώνεται σε κάθε επανάληψη του loop.


Τι εννοεις σε καθε επαναληψη του βρογχου?
Η τελευταια printf δεν ειναι μέρος της for.

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

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

Δημοσίευσηαπό stamatiou » 08 Οκτ 2011, 15:15

migf1 έγραψε:
stamatiou έγραψε:
migf1 έγραψε:Που λέει για το table_cleanup()? δεν το βλέπω.

ΥΓ1. Ναι, για debugging είναι.
ΥΓ2. Δοκίμασες τον debugger της Pelles-C? Εκεί είναι πολύ πιο ξεκάθαρα τα πράγματα!

Το Table_Cleanup μου το λέει στον gdb.

Άμα δεν μου πεις τι σου λέει για την table_cleanup() πως θα καταλάβω τι πρόβλημα υπάρχει;

έγραψε:
ΥΓ2. Όχι, μαθαίνω από τον gdb γιατί τον χρησιμοποιεί ένα βιβλίο που διαβάζω αυτόν το καιρό, αλλά τα frames και το backtrace τι είναι;

Βάλε τον debugger της Pelles-C για να δεις που έχει πρόβλημα η συνάρτηση που έχεις φτιάξει, είναι πολύ πιο εύχρηστος από τον gdb (ή βάλε printf() γραμμές μέσα στην προβληματική σου συνάρτηση να σου τυπώνουν τιμές μεταβλητών σε ενδιάμεσα στάδια).

Ωρίστε τι μου λέει στο gdb:
Spoiler: show
#0 0x00007ffff7a7bd05 in raise () from /lib/x86_64-linux-gnu/libc.so.6
#1 0x00007ffff7a7fab6 in abort () from /lib/x86_64-linux-gnu/libc.so.6
#2 0x00007ffff7ab4d7b in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#3 0x00007ffff7ac0a8f in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#4 0x00007ffff7ac48e3 in free () from /lib/x86_64-linux-gnu/libc.so.6
#5 0x0000000000400abe in table_cleanup (table=0x7fffffffe180) at main.c:70
#6 0x000000000040119e in main () at main.c:249

Και μέσα στο Σαββατοκύριακο θα δοκιμάσω και το Pelles C αλλά γιατί παίρνει μόνο το δεύτερο input;
stamatiou
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 947
Εγγραφή: 25 Ιουν 2010, 20:23
Εκτύπωση

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

Δημοσίευσηαπό Star_Light » 08 Οκτ 2011, 16:54

btw μολις βρω χρονο θα δοκιμασω να υλοποιησω το Κοσκινο του Ερατοσθένη σε C.

Δουλεψα με χαρτι και μολυβι χθες βραδυ τον αλγοριθμο.... πολυ απλος (στο χαρτι)

http://el.wikipedia.org/wiki/%CE%9A%CF% ... E%BD%CE%B7

Οποιος θελει να τον υλοποιησει σε κωδικα αλλα εχει αποριες στην αλγοριθμικη του αναλυση ας ρωτησει.
Γνώσεις ⇛ 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 » 08 Οκτ 2011, 23:19

BTW migf1 τελικα τι εκανες με τον αλγοριθμο της ναυμαχίας? :)
Γνώσεις ⇛ 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
Εκτύπωση

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

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

cron