Προς το περιεχόμενο

επεξηγηση κώδικα C++


eleni1231983

Προτεινόμενες αναρτήσεις

Δημοσ.

γειά σας παιδιά!ειμαι νέα στο forum νέα στην C++ θέλω να μου εξήγηση κάποιος τι κάνει ο παρακάτω κώδικας γραμμή γραμμή εάν σας είναι εύκολο....δυστυχώς ξέρω μόνο την πρώτη γραμμή....ευχαριστώ.

 

{

int B[10]; //δήλωση ενός μονοδιάστατου πίνακα Β με 10 ακεραίους

int bottom = 0;

int top=6;

int k=3;

for (int i=bottom;i<top;i++)

cin>>B

while(k>0)

{ top-top-1;

k== ; )

top==top+1;

B[top]-12;

}

Δημοσ.
Μα λέει, ξέρει τι δεν κάνουν...

 

συγνώμη αλλά εννοεί ότι είναι λάθος γραμμένες? και πώς θα ήταν η σωστή τούς σύνταξη?

Δημοσ.

πως να σου πούμε; δίνεις κάτι που δεν δουλεύει, δεν σημαίνει τίποτα και θες να σου πούμε τι κάνει (ΔΕΝ ΚΑΝΕΙ) και πως είναι το σωστό (ΓΙΑ ΝΑ ΚΑΝΕΙ ΤΙ; )

Δημοσ.

συγνώμη παιδιά αλλά δεν τα πάω καλά με τον προγραμματισμό...

έστω πείτε μου τι κάνει η εντολή "int bottom = 0;" η η εντολή " "for (int i=bottom;i<top;i++)

αυτό θέλω να μάθω......

Δημοσ.

Η εντολή int bottom=0; κάνει δύο δουλειές. Ορίζει μία μεταβλητή με όνομα [/b]bottom[/b] τύπου int και της δίνει την τιμή 0.

 

Το for (int i=bottom;i<top;i++). Είναι ένας βρόχος for. Εκτελεί αυτά που ακολουθούν top φορές (μέχρι το i=bottom (0) να γίνει top-1. Το i αυξάνεται κατά 1 σε κάθε εκτέλεση).

 

http://en.wikipedia.org/wiki/For_loop

 

Πραγματικά πρέπει να ρίξεις μια ματιά σε κάποιο βιβλίο ή κάποιον on line οδηγό για C++. Ίσως και σε κάποιον οδηγό προγραμματισμού με ψευδοκώδικα. Αγγλικά ξέρεις;

Δημοσ.

ξέρω κάποια αγγλικά αλλα όχι και τέλεια.....οπότε αν καταλαβα καλά

 

Η εντολή int top=6; Ορίζει μία μεταβλητή με όνομα top τύπου int (integer..??)και της δίνει την τιμή 6.

 

Η εντολή int k=3; Ορίζει μία μεταβλητή με όνομα k τύπου int και της δίνει την τιμή 3.

 

το cin>>B τυπώνει στα στοιχεία στην θέση i...???του πίνακα B...???

 

η εντολή while (k>0) εκτελεί τον κώδικα επαναληπτικά μέχρι την στιγμή που δεν θα ισχύει η συνθήκη δηλ όταν το k πάρει τιμή μεγαλύτερη του 0....??

 

τα υπόλοιπα δεν ξέρω τι κάνουν........

 

{ top-top-1;

k== ; )

top==top+1;

B[top]-12;

}

Δημοσ.
το cin>>B τυπώνει στα στοιχεία στην θέση i...???του πίνακα B...???

 

Αυτή η εντολή πάει πακέτο με την αμέσως προηγούμενη for, άρα εκτελείται 6 φορές, με τη μεταβλητή i να παίρνει διαδοχικά τις τιμές bottom (δηλαδή 0), 1, 2, 3, 4, 5. Η cin είναι εντολή εισόδου, σταματά τη ροή του προγράμματος και περιμένει είσοδο από τον χρήστη μέσω του πληκτρολογίου. Ό,τι πληκτρολογήσει ο χρήστης λοιπόν, το «τσιμπάει» η cin και πάει και το βάζει ως τιμή στο στοιχείο i του πίνακα B.

 

 

η εντολή while (k>0) εκτελεί τον κώδικα επαναληπτικά μέχρι την στιγμή που δεν θα ισχύει η συνθήκη δηλ όταν το k πάρει τιμή μεγαλύτερη του 0....??

 

Σωστό.

 

 

τα υπόλοιπα δεν ξέρω τι κάνουν........

 

Τα υπόλοιπα είναι το μπλοκ κώδικα (το τμήμα μεταξύ των χαρακτήρων { και }) που εκτελεί επαναληπτικά η while.

 

 

top-top-1;

 

Αυτή η παράσταση, ενώ είναι συντακτικά ορθή, δε βγάζει και πολύ νόημα. Από την τιμή top αφαιρείς την τιμή top, αφαιρείς και 1 και το αποτέλεσμα αποθηκεύεται...που; Πουθενά! Χάνεται! Μία τρύπα στο νερό. Μήπως ήθελες να γράψεις: top = top - 1;

 

 

k== ; )

 

Ούτε αυτή η παράσταση βγάζει νόημα. Όχι μόνο αυτό, αλλά εδώ υπάρχει συντακτικό λάθος που θα προκαλέσει πρόωρη διακοπή της μεταγλώττισης του κώδικα, αν υποθετικά προσπαθούσες να τον κάνεις compile. Μήπως εδώ ήθελες να γράψεις κάτι στο στυλ: k--;

 

 

top==top+1;

 

Όμοια με την προπροηγούμενη σειρά. Κι εδώ έχεις ένα συντακτικά ορθό statement, το οποίο όμως δε βγάζει νόημα: Ελέγχεις για ισότητα δύο παραστάσεις, την παράσταση top στο αριστερό μέλος και την παράσταση top + 1 στο δεξιό μέλος. Δεν είναι προφανές ότι αυτές οι δύο παραστάσεις θα είναι πάντα άνισες; Μήπως εδώ ήθελες να γράψεις κάτι στο στυλ: top = top + 1; Δηλαδή «δώσε νέα τιμή στη μεταβλητή top, ίση με την προηγούμενη που είχε συν 1»;

 

 

B[top]-12;

 

Άλλη μία παράσταση όπου εκτελείς μία πράξη (από την τιμή του στοιχείου του πίνακα B που βρίσκεται στη θέση top, αφαιρείς την τιμή 12), χωρίς να αποθηκεύεται κάπου το αποτέλεσμα. Μήπως ήθελες να γράψεις: B[top] = 12;

 

 

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

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...