ΕΠΛ 034 ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΓΙΑ ΗΜΥ Εργαστήριο #5 Μέρος Α Κατεβάστε τα προγράμματα loop-for.c και loop-while.c από την ιστοσελίδα του μαθήματος κάτω από τα Εργαστήρια. (http://www.cs.ucy.ac.cy/courses/epl034/labs.php). 1. Το πρόγραμμα loop-for.c υπολογίζει το άθροισμα και το μέγιστο ανάμεσα σε 10 θετικούς αριθμούς που δίνει ο χρήστης από το πληκτρολόγιο. Συμπληρώστε τη δομή for() {} ώστε το πρόγραμμα να εκπληρώσει το σκοπό του. Πρέπει να χρησιμοποιήσετε μόνο τις μεταβλητές που είναι ήδη ορισμένες στο πρόγραμμα. Θεωρήστε ότι ο χρήστης δίνει πάντοτε θετικούς αριθμούς (το πρόγραμμα δε χρειάζεται να κάνει τον έλεγχο). Παράδειγμα εκτέλεσης: Tha dwseis 10 thetikoys akeraious arithmous, ena-ena tin fora Dwse arithmo 1: 3 Dwse arithmo 2: 45 Dwse arithmo 3: 12 Dwse arithmo 4: 6 Dwse arithmo 5: 9 Dwse arithmo 6: 14 Dwse arithmo 7: 2 Dwse arithmo 8: 34 Dwse arithmo 9: 7 Dwse arithmo 10: 8 To athroisma einai 140, kai o megalyteros arithmos einai o 45 Αρχικός Κώδικας: /* ensomatosi vivliothikwn */ #include <stdio.h> /* Dilosi statheras */ #define MAX_NUM 10 int main() { /* Dilosi metavlitwn */ int num, max, sum, count; sum = 0; max = 0; printf("tha dwseis %d thetikoys akeraious arithmous, ena-ena tin 1
fora\n\n", MAX_NUM); /* SIMPLIRWSTE ANALOGWS */ /* for() {} */ /* Ektypwsh apotelesmatos */ printf("\nto athroisma einai %d, kai o megalyteros arithmos einai o %d\n", sum, max); } return(0); 2. Το πρόγραμμα αυτό υπολογίζει το μέγιστο αριθμό και τη θέση του σε μια λίστα θετικών ακέραιων αριθμών απροσδιορίστου μεγέθους που δίνει ο χρήστης από το πληκτρολόγιο καθώς επίσης και το μέγεθος που έχει τελικά η λίστα. Η εισαγωγή ακεραίων αριθμών τελειώνει όταν ο χρήστης δώσει 0 ή οποιονδήποτε αρνητικό ακέραιο αριθμό (ο αριθμός αυτός δεν πρέπει να θεωρηθεί μέλος της λίστας). Συμπληρώστε τη δομή while() {} ώστε το πρόγραμμα να εκπληρώσει το σκοπό του. Πρέπει να χρησιμοποιήσετε μόνο τις μεταβλητές που είναι ήδη ορισμένες στο πρόγραμμα. Θεωρήστε ότι ο χρήστης δίνει πάντοτε θετικούς αριθμούς (το πρόγραμμα δε χρειάζεται να κάνει τον έλεγχο). Παράδειγμα εκτέλεσης: Tha dineis thetikoys akeraious arithmous, ena-ena tin fora. Gia na stamatiseis dwse to 0 h arnitiko arithmo. Dwse arithmo 1: 3 Dwse arithmo 2: 45 Dwse arithmo 3: 12 Dwse arithmo 4: 6 Dwse arithmo 5: 9 Dwse arithmo 6: 14 Dwse arithmo 7: 2 Dwse arithmo 8: 34 Dwse arithmo 9: 7 Dwse arithmo 10: 8 Dwse arithmo 11: 0 O megistos einai o 45 kai einai o 2os arithmos mias listas megethous 10 2
Αρχικός Κώδικας: /* ensomatosi vivliothikwn */ #include <stdio.h> int main() { /* Dilosi metavlitwn */ int num, max, position, count; max = 0; position = 0; count = 1; printf("tha dineis thetikoys akeraious arithmous, ena-ena tin fora.\n"); 3 printf("gia na stamatiseis dwse to 0 h arnitiko arithmo.\n\n"); /* SIMPLHRWSTE ANALOGWS*/ /* while() {} */ /* Ektypwsh apotelesmatos*/ printf("\no megistos einai o %d kai einai o %dos arithmos", max, position); printf("\nmias listas megethous %d\n", count-1); return(0); } 3
Μέρος Β Γράψετε προγράμματα στη C που υλοποιούν το καθένα από τα πιο κάτω προβλήματα (Στο εργαστήριο, γράψετε στο χαρτί μόνο τους βρόγχους που πρέπει να υλοποιηθούν). Για κάθε πρόβλημα σας δίνετε ο αριθμός και τύπος των βρόγχων (loops) που είναι αρκετά για να λύσετε το συγκεκριμένο πρόβλημα. Προσπαθήστε να μην χρησιμοποιήσετε περισσότερα. Παράδειγμα: Γράψετε τμήμα προγράμματος με loop(s) που τυπώνουν τους αριθμούς από το 10 μέχρι και το 20 (χρησιμοποιείστε 1 for loop) Απάντηση: for (i=10; i<=20; i++) printf("%d\n", i); 4
Προβλήματα: 1. Γράψετε κώδικα που τυπώνει τις πρώτες δέκα δυνάμεις του 2. (δηλ. 2, 4, 8,..., 1024). (χρησιμοποιείστε 1 for loop) 5
2. Γράψετε κώδικα που βρίσκει το γινόμενο μιας απροσδιόριστου μεγέθους σειράς μη αρνητικών πραγματικών αριθμών που δίνει ο χρήστης. Ο χρήστης θα εισάγει ένα αρνητικό αριθμό για να δείξει ότι τελειώνει η σειρά. (χρησιμοποιείστε 1 while loop) 6
3. Γράψετε κώδικα που τυπώνει τα πιο κάτω βάση της τιμής του n. Εάν το n είναι 4 ooooo ^^^^ Εάν το n είναι 10 ooooooooooo ^^^^^^^^^^ Ο κώδικας να ζητάει από τον χρήστη την τιμή του n και μετά να παράγει το πιο πάνω σαν έξοδο. Το πρόγραμμα θα πρέπει να συνεχίζει εφόσον ο χρήστης δίνει μη αρνητικές τιμές. (χρησιμοποιείστε 1 while loop, 2 for loops) 7
4. Γράψετε κώδικα που παράγει το πιο κάτω σχήμα: Μπορείτε να βρείτε χρήσιμη την πιο κάτω συνάρτηση, η οποία επιστρέφει την απόλυτη τιμή ενός αριθμού: int absolute_value(int number); (χρησιμοποιείστε 2 for loops φωλιασμένα) 8
5. Τυπώστε ένα δισδιάστατο γράφημα από το -5 μέχρι το 5 στους άξονες X και Y ώστε να υπάρχει * στο γράφημα μόνο εάν το X*X + Y*Y είναι μεγαλύτερο του 16. ιαδοχικές συντεταγμένες απέχουν κατά 0.5. Η έξοδος πρέπει να είναι ως εξής: (χρησιμοποιείστε 2 for loops φωλιασμένα) 9