Κατανόηση Κώδικα σε C .

...IDE, compilers, κλπ

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

Κατανόηση Κώδικα σε C .

Δημοσίευσηαπό Star_Light » 29 Μαρ 2011, 18:03

Σε αυτο το θρέντ μπορούμε να βάζουμε μικρής κάπως έκτασης πηγαίων κωδικών αφού έχουμε ψάξει πρώτα και δεν μπορούμε να κατανοήσουμε ή κολλάμε κάπου.... κάνω την αρχή!!!!!

Κώδικας: Επιλογή όλων
#include<stdio.h>
int main()
{
int primes[25];
int counter=1;
int start=3;
int prime;
int i;

primes[0]=2;
printf("2");
while(counter<25)
{
prime=1;
for(i=0; i<counter&&prime; i++)
if(!(start%primes[i])) prime=0;
if(prime)
{
printf("%d",start);
primes[counter++]=start;
}
start++;
}
{
printf("\n");
}

return 0;
}


ο κώδικας αυτός έχει μια έξοδο της μορφής 24 ακεραίων + 1 απο την printf("2");

παμε λοιπον να τον δουμε πως λειτουργει... αρχικα τυπώνεται το 2 λόγω της printf που βρίσκεται έξω απο τους βρόγχους.
Στην συνεχεια θα ξεκινήσουμε με counter=1 και εφοσον 1 < 25 μπαινει μεσα στην while ορίζοντας το prime σε μια Μη μηδενική τιμή.

Για i=0 μεσα στην for και για οσο το i που θα προκύψει απο την πραξη AND των μεταβλητών counter και prime δεν δωσει μηδενικη τιμη (απο οσο καταλαβα) συνεχιζουμε να το αυξανουμε κατα 1.

παρακατω ΕΑΝ το υπολοιπο της διαιρεσης του start = 3 εδω και του primes[0]=2 εδω υπαρχει το prime δεν εχει μηδενικη τιμη και αρα η if συνεχίζεται

οποτε εφοσον δεν εχει μηδενικη τιμη τυπωνει το 3

και στο primes [ 1 ] βαζει το 3. (δεν αυξανεται εδω το counter του primes παρα μονο μετα την εκχωρηση επειδη εχει τα ++ δεξια του (σωστος?!)

στην συνεχεια αυξανεται το start κατα 1 δηλαδη γινεται 4. και ξαναμπαινουμε στην while εφοσον παλι counter = 1 < 25 προχωρουμε... και το prime = 1
στην for για i=1 και i<counter&&prime οπου δινει παλι μη μηδενικη τιμη προχωρουμε... εφοσον τωρα ομως 4/3 ... τυπωνει παλι 4??? Ενω η εξοδος ειναι 2,3,5...δεν το καταλαβαινω εδω πως παει :?: :?: :?: εκτος και αν υπαρχει το υπολοιπο και αρα δεν μπαινει καθολου οποτε ξανα κανει την επαναληψη για μεγαλυτερο i αλλα και παλι αν υπαρχει το υπολοιπο και το κανει αυτο δεν θα μπει καθολου στο primes[counter++]=start; ωστε να αρχικοποιησει και να χρησιμοποιηθει στην επομενη επαναληψη στο start%primes[i] μεσα στην if ............
Γνώσεις ⇛ 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 .

Δημοσίευσηαπό linuxs » 14 Ιουν 2011, 15:06

Λοιπόν, θα ήθελα να προτείνω ότι έχει σχέση με C όπως αυτό η με PHP, Python κτλ(απο θέμα ασκήσεων και απορίες) να μεταφερθούν στα ασύχρονα μαθήματα. Προσωπικά μόλις τώρα ανακάλυψα οτι υπάρχει μια απορία σε C εδώ. :(

Σχετικά με την ερώτηση, έχεις χαθεί με τις αγκύλες μήπως? Αν προσέξεις σε κάποιο σημείο έχεις }{... :? Κοίταξέ το και πες μου αν είναι οκ έτσι για να συνεχίσω. ;)
Αν το πρόβλημά μας επιλυθεί. Επιλέγουμε το θέμα που βοήθησε στην επίλυση και πατάμε το κουμπάκι Εικόνα.
Γνώσεις ⇛ Linux: Μέτριο┃Προγραμματισμός: C┃Αγγλικά: Καλά
Λειτουργικό ⇛ Linux Ubuntu 10.4 LTS
Προδιαγραφές ⇛ Intel Pentium @T4500 2.3GHz│ 512GB VRAM│ 500 HDD│ ATI RADEON HD545v 512 MB │ Screen: 15.6''
Άβαταρ μέλους
linuxs
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1060
Εγγραφή: 02 Ιούλ 2010, 13:19
Τοποθεσία: GR
IRC: linuxs
Εκτύπωση


Επιστροφή στο Εφαρμογές για Ανάπτυξη Λογισμικού