takis_tz Δημοσ. 13 Μαΐου 2008 Δημοσ. 13 Μαΐου 2008 Μπορεί κάποιος να μου πει τι θα εμφανιστεί από την εκτέλεση του παρακάτω κώδικα στην οθόνη; int cnt = 0; for (i = 0; i < 10; i++) for (j = 0; j < 10; j++) for (k = 0; k < 10; k++) if (2*i + j >= 3*k) cnt++; printf("%d\n", cnt);
FrAcTaL-gR Δημοσ. 13 Μαΐου 2008 Δημοσ. 13 Μαΐου 2008 Υπάρχουν 2 τρόποι για να βρεις την απάντηση. 1ος τρόπος, να γράψεις τον κώδικα και να τρέξεις το πρόγραμμα, και να δει τι αποτέλεσμα βγάζει. 2ος τρόπος, να μελετήσεις τα παλιά θέματα εξετάσεων, που έχουν και τις λύσεις τους, και νε δείς εκεί την απάντηση. Και με τους 2 τρόπους βρίσκεις την σωστή απάντηση που είναι 517 χάρηκα που βοήθησα
msl` Δημοσ. 13 Μαΐου 2008 Δημοσ. 13 Μαΐου 2008 Ουσιαστικά αυτό που κάνει αυτός ο κώδικας είναι να ελέγχει για ποιές τιμές του συνόλου (i, j, k), όπου και οι τρεις μεταβλητές παίρνουν ακέραιες τιμές απο 0 εως 9, ισχύει η ανισότητα (2*i + j >= 3*k). Όταν είναι αληθής αυτή η πρόταση (δηλαδή για τις δεδομένες τιμές i, j, k ισχύει η παραπάνω ανισότητα), τότε η ποσότητα cnt, που έχεις αρχικοποιήσει με την τιμή 0, αυξάνει κατά μια μονάδα. Το αποτέλεσμα στη δεδομένη μορφή είναι ενας ακέραιος (το 517 απο τρέξιμο που έκανα σε Java), καθώς το printf βρίσκεται έξω απο κάθε loop και συνεπώς εκτελείται μια και μόνο φορά. Ανάλογα με το που τον τρέχεις τον κώδικα, θα υπάρχουν και ανάλογες εντολές για να συμπεριλάβεις το printf μέσα σε loop, αν θέλεις. Η μόνη διαφορά θα είναι ότι θα έχεις αποτέλεσμα της μορφής 1 2 3 ... 517. Btw, δεν είμαι σίγουρη για το "%d\n" μόνο .. Υποθέτω έχει να κάνει με την μορφοποίηση του αποτελέσματος (τον τρόπο παρουσίασης του).
ippo00 Δημοσ. 13 Μαΐου 2008 Δημοσ. 13 Μαΐου 2008 το %d του λεεί ότι το cnt θα διαβαστεί ως int και το \n αλλάζει σειρά
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.