ΕΡΓΑΣΤΗΡΙΟ ΜΕΘΟ ΟΛΟΓΙΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Ι ΕΡΓΑΣΤΗΡΙΟ

Σχετικά έγγραφα
B1. Σειρά :

5. ΣΥΝΑΡΤΗΣΕΙΣ. (Πρόχειρο σχέδιο - Μαθήµατος 3) p Συναρτήσεις, που δεν επιστρέφουν κάποια τιµή

0 SOLID_LINE 1 DOTTED_LINE 2 CENTER_LINE 3 DASHED_LINE 4 USERBIT_LINE

Graphics.h Διασύνδεση με τη Βιβλιοθήκη Γραφικών

> μεγαλύτερο <= μικρότερο ή ίσο < μικρότερο == ισότητα >= μεγαλύτερο ή ίσο!= διαφορετικό

Μεθόδων Επίλυσης Προβλημάτων

Κεφάλαιο , 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Απάντηση. // We write in a header file named my_header.h #ifndef my_header_h #define my_header_h #define divides(x,y) (((y)%(x)==0)?

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12)

Εισαγωγή στον Προγραμματισμό

3 ο Εργαστήριο Μεταβλητές, Τελεστές

Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις. Επανάληψη για την ενδιάμεση εξέταση. (Διάλεξη 13)

Εισαγωγή στον Προγραμματισμό

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 19/5/2007

Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( )

ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ

12. Συναρτήσεις (Μέρος ΙI)

1 ο Εργαστήριο Συντεταγμένες, Χρώματα, Σχήματα

Συναρτήσεις και διαδικασίες

Εισαγωγή στον Προγραμματισμό

Cascading Style Sheets (CSS)

Δομημένος Προγραμματισμός (ΤΛ1006)

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

5 ο Εργαστήριο Δομές Επανάληψης (συνέχεια)

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

Προγραμματισμός Η/Υ (ΤΛ2007 )

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τμήμα Πληροφορικής

Προγραμματιστικές Ασκήσεις, Φυλλάδιο 1

Μεθόδων Επίλυσης Προβλημάτων

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα.

Κεφάλαιο 2.6: Είσοδος / Έξοδος εδοµένων, Μορφοποίηση εδοµένων Εξόδου. ( ιάλεξη 7) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #5

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΑΣΚΗΣΗ 1 Συμβολοσειρές, Πίνακες, Δείκτες

Διάλεξη 2η Εισαγωγή στο CSS

4 ο Εργαστήριο Τυχαίοι Αριθμοί, Μεταβλητές Συστήματος

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 8 η : Συναρτήσεις Χειµερινό Εξάµηνο 2011

Η Βίβλος των CSS - Μέρος 3 Το Box Model, τα Περιθώρια και τα Περιγράμματα

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 131 Αρχές Προγραµµατισµού I 3-2

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Προγραμματισμός Η/Υ (ΤΛ2007 )

Κεφάλαιο : Εισαγωγή στην C: (Διαλέξεις 3-4)

Προγραμματισμός Η/Υ (ΤΛ2007 )

Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 131 Αρχές Προγραµµατισµού I 4-2

Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου. (Διάλεξη 7) Είσοδος/ Έξοδος

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπερφόρτωση Αντικείμενα σαν ορίσματα

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Δομημένος Προγραμματισμός (ΤΛ1006)

Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου. (Διάλεξη 7)

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

Ενώσεις δεδομένων Απαριθμητές Ψηφιακοί τελεστές Αναδρομικές συναρτήσεις

Προγραμματισμός Η/Υ (ΤΛ2007 )

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

CSS 3. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Π. Αγγελάτος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΕΠΛ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Συναρτήσεις. Κατασκευαστικά Τεµάχια για τη ηµιουργία Αρθρωτών Προγραµµάτων

Κεφάλαιο 4: Συνθήκες Έλεγχου (if-else, switch) και Λογικοί τελεστές / παραστάσεις. (Διάλεξη 8)

Διδάσκων: Παναγιώτης Ανδρέου

Εισαγωγή στο Gnuplot. Σφυράκης Χρυσοβαλάντης

Συμβολοσειρές ΣΥΜΒΟΛΟΣΕΙΡΕΣ. Γεώργιος Παπαϊωάννου ( )

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES

Αντικειμενοστραφείς Γλώσσες Προγραμματισμού C++ / ROOT

C: Από τη Θεωρία στην Εφαρμογή

Εργαστήριο 5 Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ με αλφαβητική σειρά

Προγραµµατιστικές Τεχνικές

ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ A.7.M21 Προγραμματίζοντας με το App Inventor Εισαγωγή

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

Συναρτήσεις διαχείρισης αλφαριθμητικών

HY-252 Αντικειµενοστραφής Προγραµµατισµός. Χειµερινό Εξάµηνο 2010 ιδάσκων: Χριστοφίδης Βασίλης. Ηµεροµηνία Παράδοσης: 15/10/2010

Παίρνοντας Αποφάσεις 1

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II

ΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

#define, 70, 575 #elif, 580 #else, 580 #endif, 580 #error, 584 #if, 580 #ifdef, 583 #ifndef, 580, 583 #include, 70, 227, 574 #undef, 579

Συναρτήσεις και Πίνακες

Εισαγωγή στον Προγραμματισμό (με. τη C)

Προγραμματισμό για ΗΜΥ

Προγραμματισμός σε C. Πράξεις με bits (bitwise operators)

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Αντικειµενοστρεφής Προγραµµατισµός

Γ7.2 Συμβολοσειρές (Strings) Γ Λυκείου Κατεύθυνσης

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός. Παναγιώτης Σφέτσος

double sum(double a, double b) { return(a+b); } double my_avg(double a, double b) { return(sum(a, b)/2.0); }

Προγραμματισμός Συστημάτων

Η γλώσσα προγραμματισμού C

Προγραμματισμός Υπολογιστών με C++

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ & ΠΛΗΡΟΦΟΡΙΚΗΣ

Προγραμματισμός Ι. Προεπεξεργαστής. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Γλώσσα Προγραμματισμού C

Συστήματα Αναμονής (Queuing Systems)

Συναρτήσεις (Functions) Εισαγωγή στη C++

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΕΞΕΤΑΣΗ IOYNIOY 2018 ΘΕΜΑΤΑ Α ΟΝΟΜΑΤΕΠΩΝΥΜΟ:... ΑΕΜ: ΕΞΑΜΗΝΟ:

Transcript:

3401 - ΜΕΘΟ ΟΛΟΓΙΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Ι ΕΡΓΑΣΤΗΡΙΟ ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ 2009 2010 ΕΡΓΑΣΤΗΡΙΟ 3 7. ΧΡΩΜΑΤΑ ΚΑΙ ΑΡΙΘΜΟΙ ηµιουργείστε πρόγραµµα 07 NUMCOLOR.cpp και συµπεριλάβετε σαν header file το αρχείο gconsole.h (αρχείο δηλώσεων - πρωτοτύπων), στο οποίο εµπεριέχεται το gconsole.cpp (αρχείο ανάπτυξης των συναρτήσεων που δηλώθηκαν στο gconsole.h). Και τα δυο αυτά αρχεία θα πρέπει να σωθούν στο κατάλογο της εργασίας σας. Kλήση συνάρτησης Παρατηρείστε ότι στο αρχείο gconcole.h, δηλώνεται µια συνάρτηση void init_graphics(void) χωρίς παραµέτρους, και µία void set_color(color foreground,color background) µε δυο παραµέτρους, που παίρνουν τιµές από την απαρίθµηση enum color =cblack=0, cwhite=15 Καλέστε τις -στην σειρά- από το κυρίως πρόγραµµά σας. ηµιουργία συνάρτησης f() ηµιουργείστε µια συνάρτηση void drawcarre(), η οποία τυπώνει ένα χαρακτήρα 150 φορές, σε 10 στήλες και σε 15 γραµµές -συνεχόµενα. Καλέστε την από το πρόγραµµά σας. Ο προτεινόµενος χαρακτήρας που θα τυπώνεται είναι ο unsigned char carre = 219, που είναι ένα συµπαγές τετράγωνο ( ) και το προτεινόµενο χρώµα το κόκκινο. /* Στόχος είναι, όταν έχουµε µια σειρά αριθµών µέχρι το 150 (π.χ. 0,1,2,3,5,8,..) να το αποτυπώνουµε στην οθόνη µε άλλο χρώµα όπως βλέπετε στην εικόνα. Ετσι αν αριθµός ανήκει στη σειρά, το εκτυπώµενο τετράγωνο ( ) είναι γαλάζιο, αν δεν ανήκει το εκτυπώµενο τετράγωνο ( ) είναι κόκκινο. Για να επιτύχουµε το στόχο θα φτιαχτεί µια νέα συνάρτηση drawserie() ανάλογα µε την επιλεχθείσα σειρά. Αρχικά θα αποφασίσετε ποια σειρά θέλετε (βλ. και άσκηση 5) να αποτυπώσετε µία µόνο θα κάνετε που έχει ή Παραγοντικό αριθµού 1,1,2,6,24,120 (επίπεδο δυσκολίας: µέτριο) ή Αριθµό Fibonnacci 0,1,1,2,3,5,8,13,21,.. (επίπεδο δυσκολίας: δύσκολο) ή Πρώτο αριθµό 1, 2, 3, 5,7,11, (επίπεδο δυσκολίας : εύκολο) ή Πολλαπλάσιο αριθµού (π.χ. του 5) 0,5,10,15,20,25 (απλό & προτεινόµενο) */ ηµιουργία συνάρτησης f(n) Θα δηµιουργείστε συνάρτηση π.χ. fibonnacci, που θα έχει σαν παράµετρο τον αριθµό n, και θα επιστρέφει το αποτέλεσµα, καλέστε την από το κυρίως πρόγραµµά σας. ηµιουργία παρόµοιας συνάρτησης f(n) Θα δηµιουργείστε την ίδια συνάρτηση µε πριν, αλλά µε άλλο αλγόριθµο Για το παραγοντικό µε τον αλγόριθµο n!=n*(n-1) //recursive Για το fibonnacci, µε τον αλγόριθµο f(n)=f(n-1)+f(n-2) //recursive Για το πρώτο αριθµό, µε τον αλγόριθµο Wilson αν ((n-1)! + 1 ) % n)== 0, ο αριθµός n είναι πρώτος, και καλέστε την από το κυρίως πρόγραµµά σας. Σελ. 1/6

Αποτύπωση της σειράς ηµιουργείστε συνάρτηση void drawserie(), η οποία τυπώνει ένα χαρακτήρα 150 φορές, σε 10 στήλες και σε 15 γραµµές -συνεχόµενα- αλλά αν ο αριθµός ανήκει στη σειρά ο εκτυπωµένος χαρακτήρας π.χ. το τετράγωνο ( ), είναι γαλάζιος ( ) αν δεν ανήκει στη σειρά είναι κόκκινος ( ). Ηomework (προαιρετικά): Να αποτυπωθούν και οι υπολειπόµενες σειρές. Tips: Προσέξτε στην αποτύπωση της σειράς, τις αρχικές συνθήκες, τον έλεγχο και την κλήση της σειράς. 8. ΧΡΩΜΑΤΑ ΚΑΙ ΣΧΗΜΑΤΑ ηµιουργείστε πρόγραµµα 08 SHAPECOLOR.cpp και συµπεριλάβετε σαν header file το αρχείο gconsole.h, του οποίου το listing σας δίνεται µετά τις ασκήσεις, Ορισµός δοµής Ορίστε µια δοµή µε όνοµα circle και 5 µέλη, τρεις ακεραίους Χ,Υ, r (X,Y οι συντεταγµένες για το κέντρο του κύκλου και r η ακτίνα του κύκλου), ένα µέλος fc τύπου color (για το foreground χρώµα) και ένα µέλος fs τύπου fstyle (για το στυλ γεµίσµατος fillstyle- του κύκλου). Οι τύποι color και fstyle καθορίζονται µέσα στο gconsole.h. ήλωση συνάρτησης f(c) ηλώστε µια void συνάρτηση ColFillDraw µε µια παράµετρο τύπου circle (η δοµή που ορίσατε πριν). Ανάπτυξη συνάρτησης f(c) Αναπτύξτε την συνάρτηση ColFillDraw που δηλώσατε µόλις πριν, ώστε να βάζει χρώµα, στυλ και να σχεδιάζει τον κύκλο. Για το χρώµα θα χρησιµοποιήσετε την void set_color(color fg, color bg = cblack); για το στυλ την void set_fill_style(fstyle) και για τον σχεδιασµό του κύκλου θα χρησιµοποιήσετε την συνάρτηση void draw_circle(int x, int y, int rad);που δέχεται σαν παραµέτρους συντεταγµένες και ακτίνα του κύκλου - βρίσκονται όλες στο 08 ΗCOLOR. Μεταβλητές δοµής Θα δηλώσετε 3 µεταβλητές C1,C2,C3 τύπου circle και θα δώσετε ταυτόχρονα αρχικές τιµές στα πέντε µέλη τους. Τo χρώµα και το στυλ των 3 κύκλων σας, επιλέξτε τα όπως σας αρέσει (π.χ. BLUE,RED,GREEN και Ο_FILL,SOLID_FILL,LIGHT_FILL ). Όσον αφορά τα Χ,Υ,r, υποθέσατε ότι έχετε µια κονσόλα µε 80 στήλες και 25 γραµµές και αν επιλέξετε π.χ. για το Χ το 15 και το Υ το 7 αυτό σηµαίνει ότι το κέντρο του κύκλου σας θα είναι στην 15 η κολόνα και στην 7 η σειρά (το 0,0 είναι η αριστερή πάνω γωνία). Κλήση συνάρτησης Καλέστε τρείς φορές την συνάρτησή σας ColFillDraw, µια φορά για κάθε κύκλο. Συνάρτηση µέλος της δοµής Τροποποιήστε την δοµή σας circle προσθέτοντάς της 6 ο µέλος, µια συνάρτηση float E() που επιστρέφει το εµβαδόν του κύκλου πr 2 ( Ε(r)=pi x r x r, όπου #define pi 3.14159265359 ) και υπολογίστε τα εµβαδά των 3 κύκλων. Homework (προαιρετικά): Τροποποιείστε το πρόγραµµα έτσι ώστε το σχήµα να είναι το τετράγωνο. Tips: Αντικείµενα και κλάσεις έχουν µεγάλη συγγένεια και οµοιότητα µε τις δοµές Σελ. 2/6

// gconsole.h // declarations for Lafore's console graphics functions // uses Window's console functions #ifndef _INC_WCONSOLE #define _INC_WCONSOLE #include <windows.h> #include <conio.h> #include <math.h> //don't let this file be included //twice in the same source file //for Windows console functions //for kbhit(), getche() //for sin, cos enum fstyle SOLID_FILL, X_FILL, O_FILL, LIGHT_FILL, MEDIUM_FILL, DARK_FILL ; enum color cblack=0, cdark_blue=1, cdark_green=2, cdark_cyan=3, cdark_red=4, cdark_magenta=5, cbrown=6, cdark_gray=8, cblue=9, cgreen=10, ccyan=11, cred=12, cmagenta=13, cyellow=14, cwhite=15 clight_gray=7, ; void init_graphics(); void set_color(color fg, color bg = cblack); void set_cursor_pos(int x, int y); void clear_screen(); void wait(int milliseconds); void clear_line(); void draw_rectangle(int left, int top, int right, int bottom); void draw_circle(int x, int y, int rad); void draw_line(int x1, int y1, int x2, int y2); void draw_pyramid(int x1, int y1, int height); void set_fill_style(fstyle); #include "gconsole.cpp" #endif /* _INC_WCONSOLE */ //gconsole.cpp //provides routines to access Windows console functions //compiler needs to be able to find this file in MCV++, // /Tools/Options/Directories/Include/type path name HANDLE hconsole; // console handle char fill_char; // character used for fill color currbgcolor = cblack; color currcolor = clight_gray; fstyle currfillstyle = X_FILL; color get_color(void) return currcolor; color get_bgcolor(void) return currbgcolor; Σελ. 3/6

fstyle get_fill_style(void) return currfillstyle; void init_graphics(void) COORD console_size = 80, 25; //open i/o channel to console screen hconsole = CreateFile("CONOUT$", GENERIC_WRITE GENERIC_READ, FILE_SHARE_READ FILE_SHARE_WRITE, 0L, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0L); //set to 80x25 screen size SetConsoleScreenBufferSize(hConsole, console_size); //set text to white on black //SetConsoleTextAttribute( hconsole, (WORD)((0 << 4) 15) ); fill_char = '\xdb'; //default fill is solid block clear_screen(); void set_color ( color foreground, color background ) currbgcolor = background; currcolor = foreground; SetConsoleTextAttribute ( hconsole, (WORD) ( (background << 4) foreground) ); /* 0 Black 8 Dark gray 1 Dark blue 9 Blue 2 Dark green 10 Green 3 Dark cyan 11 Cyan 4 Dark red 12 Red 5 Dark magenta 13 Magenta 6 Brown 14 Yellow 7 Light gray 15 White */ void set_cursor_pos(int x, int y) COORD cursor_pos; //origin in upper left corner cursor_pos.x = x - 1; //Windows starts at (0, 0) cursor_pos.y = y - 1; //we start at (1, 1) SetConsoleCursorPosition(hConsole, cursor_pos); void clear_screen() set_cursor_pos(1, 25); Σελ. 4/6

for(int j=0; j<25; j++) putch('\n'); set_cursor_pos(1, 1); void wait(int milliseconds) Sleep(milliseconds); void clear_line() //clear to end of line //80 spaces //...1234567890123456789012345678901234567890 //...0...1...2...3...4 _cputs(" "); _cputs(" "); void draw_rectangle(int left, int top, int right, int bottom) char temp[80]; int width = right - left + 1; int j; for(j=0; j<width; j++) //string of squares temp[j] = fill_char; temp[j] = 0; //null for(int y=top; y<=bottom; y++) //stack of strings set_cursor_pos(left, y); _cputs(temp); void draw_circle(int xc=10, int yc=3, int radius=2) double theta, increment, xf, pi=3.14159; int x, xn, yn; increment = 0.8 / static_cast<double>(radius); for(theta=0; theta<=pi/2; theta+=increment) //quarter circle xf = radius * cos(theta); xn = static_cast<int>(xf * 2 / 1); //pixels not square yn = static_cast<int>(radius * sin(theta) + 0.5); x = xc-xn; while(x <= xc+xn) //fill two horizontal lines //one for each half circle set_cursor_pos(x, yc-yn); putch(fill_char); //top set_cursor_pos(x++, yc+yn); putch(fill_char); //bottom //end for void draw_line(int x1=4, int y1=4, int x2=4, int y2=4) int w, z, t, w1, w2, z1, z2; double xdelta=x1-x2, ydelta=y1-y2, slope; bool ismorehoriz; Σελ. 5/6

if( fabs(xdelta) > fabs(ydelta) ) //more horizontal ismorehoriz = true; slope = ydelta / xdelta; w1=x1; z1=y1; w2=x2, z2=y2; //w=x, z=y else ismorehoriz = false; slope = xdelta / ydelta; w1=y1; z1=x1; w2=y2, z2=x2; //more vertical //w=y, z=x if(w1 > w2) //if backwards w t=w1; w1=w2; w2=t; // swap (w1,z1) t=z1; z1=z2; z2=t; // with (w2,z2) for(w=w1; w<=w2; w++) z = static_cast<int>(z1 + slope * (w-w1)); if(!(w==80 && z==25) ) //avoid scroll at 80,25 if(ismorehoriz) set_cursor_pos(w, z); else set_cursor_pos(z, w); putch(fill_char); void draw_pyramid(int x1, int y1, int height) int x, y; for(y=y1; y<y1+height; y++) int incr = y - y1; for(x=x1-incr; x<=x1+incr; x++) set_cursor_pos(x, y); putch(fill_char); void set_fill_style(fstyle fs) currfillstyle = fs; switch(fs) case SOLID_FILL: fill_char = '\xdb'; break; case DARK_FILL: fill_char = '\xb0'; break; case MEDIUM_FILL: fill_char = '\xb1'; break; case LIGHT_FILL: fill_char = '\xb2'; break; case X_FILL: fill_char = 'X'; break; case O_FILL: fill_char = 'O'; break; Σελ. 6/6