Εργαστήριο Τεχνολογίας Λογισμικού
0 votes
389 views

Παράδειγμα:

for (i = 0; i < n; i++; u = 0; u < 2*n; u = u+2)
in progintro by (360 points)
edited by | 389 views
0

Σε μένα δεν είναι ξεκάθαρο τι θέλεις να κάνει το loop που έγραψες (το οποίο δεν είναι συντακτικά σωστό). Θέλεις οι δύο μεταβλητές να κινούνται παράλληλα; Αν ναι, πότε θέλεις να τερματίζει;

0

Θέλω να διαβάζει ένα σύμβολο και δύο (σε αυτή την περίπτωση) χαρακτήρες σε κάθε γραμμή (n) και να τα αποθηκεύει σε δύο πίνακες a[i] και b[u] αντίστοιχα. Ωστόσο, είμαι εντάξει, βρήκα πώς μπορώ να το γράψω. Ευχαριστώ
(Στην ερώτηση δεν έχω γράψει τα commands του for loop, απλά έχω ορίσει συνθήκες)

1 Answer

+8 votes

Αυτό που μάλλον θες να πεις μπορεί να γραφεί ως εξής, αλλά δεν θα το έλεγα ιδιαίτερα όμορφο:

int n = 10; 
int i, u;
for (i = 0, u = 0; i < n && u < 2 * n; i++, u += 2) {
    printf("%d %d\n", i, u); 
}   

Ένα for loop έχει ακριβώς 3 σκέλη που χωρίζονται με ;, το κάθε ένα από τα οποία έχει μία συγκεκριμένη σημασία. Στο πρώτο κάνεις τις πρώτες αναθέσεις, στο δεύτερο βάζεις τη συνθήκη σου και στο τρίτο τις προσαυξήσεις που εκτελούνται σε κάθε επανάληψη. Δεν βγάζει δηλαδή νόημα αν βάλεις παραπάνω ;.

Το τι κάνει το κόμμα εκεί πέρα είναι κάτι που θα ήθελα να μην επεκταθώ :)

Αν θες να κάνεις πολύπλοκα πράγματα, ίσως θα έπρεπε να το γράψεις με while. Τέτοιο for loop θα μου φαινόταν λογικό σε πολύ ειδικές περιπτώσεις. Ειδικά στο παράδειγμά σου, δεν έχει νόημα η δεύτερη μεταβλητή· μπορείς να βάλεις u = 2 * i σαν πρώτη εντολή του loop, οπότε θα είναι πολύ πιο καθαρός ο κώδικάς σου.

by (800 points)

301 questions

289 answers

288 comments

903 users