ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Δομημένος Προγραμματισμός Ενότητα: Δομές - προγράμματα Δ. Ε. Μετάφας Τμ. Ηλεκτρονικών Μηχ. Τ.Ε.
Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3
Πρόγραμμα D-1: Απόσταση 2 σημείων(1/2) /* apostash shmeiwn me xrhsh struct */ #include <stdio.h> #include <math.h> struct point { float x; float y; ; float dist( struct point a, struct point b); int main( void ) { struct point p1, p2; float d; scanf("%f",&p1.x); scanf("%f",&p1.y); scanf("%f",&p2.x); scanf("%f",&p2.y); d=dist( p1, p2); printf("d=%f\n", d); return 0; (συνέχεια)
Πρόγραμμα D-1: Απόσταση 2 σημείων(2/2) float dist( struct point a, struct point b) { float d; d= sqrt( (b.x-a.x)*(b.x-a.x) + (b.y-a.y)*(b.y-a.y) ); return d;
Πρόγραμμα D-2: Περίμετρος ν- γώνου (1/2) /* perimetros n-gwnou, xrhsh typedef kai struct, xrhsh pow(x,y) */ #include <stdio.h> #include <math.h> typedef struct point { float x; float y; TPoint; float dist( TPoint a, TPoint b); int main( void ) { TPoint p[20]; float d, per; int n, i; printf("plhthos pleyrwn?\n"); scanf("%d",&n); for(i=0;i<n;i++) { printf("shmeio %d (x,y)?\n",i+1); scanf("%f", &p[i].x); scanf("%f", &p[i].y); per= 0; for(i=0;i<n-1;i++) { d= dist( p[i], p[i+1]); per= per + d; d= dist( p[n-1], p[0]); per= per + d; printf("perimetros=%6.2f\n", per); return 0; (συνέχεια)
Πρόγραμμα D-2: Περίμετρος ν- γώνου (2/2) float dist( TPoint a, TPoint b) { float d; d= sqrt( pow( b.x-a.x, 2) + pow( b.y-a.y, 2) ); return d;
Πρόγραμμα D-3: Μιγαδικοί αριθμοί (1/4) /* Complex numbers, pointers se struct */ #include <stdio.h> #include <math.h> typedef struct complex { double real; double imag; TComplex; TComplex add_complex( TComplex a, TComplex b); TComplex sub_complex( TComplex a, TComplex b); TComplex mult_complex( TComplex a, TComplex b); TComplex div_complex( TComplex a, TComplex b); void print_complex( TComplex a); TComplex read_complex_v1( void); void read_complex_v2( TComplex *ptra); void read_complex_v3( TComplex *ptra); (συνέχεια)
Πρόγραμμα D-3: Μιγαδικοί αριθμοί (2/4) int main( void ) { TComplex x, y, z; x = read_complex_v1(); y = read_complex_v1(); z= add_complex( x, y); print_complex( z); /* enallaktika */ read_complex_v2( &x); read_complex_v2( &y); z= add_complex( x, y); print_complex( z); /* enallaktika */ read_complex_v3( &x); read_complex_v3( &y); z= add_complex( x, y); print_complex( z); (συνέχεια)
Πρόγραμμα D-3: Μιγαδικοί αριθμοί (3/4) TComplex add_complex( TComplex a, TComplex b) { TComplex c; c.real= a.real + b.real; c.imag= a.imag + b.imag; return c; TComplex sub_complex( TComplex a, TComplex b) { TComplex c; c.real= a.real - b.real; c.imag= a.imag - b.imag; return c; TComplex mult_complex( TComplex a, TComplex b) { TComplex c; c.real= a.real * b.real - a.imag * b.imag; c.imag= a.imag * b.real + a.real * b.imag; return c; TComplex div_complex( TComplex a, TComplex b) { TComplex c; double d; d= b.real * b.real + b.imag * b.imag; c.real= (a.real * b.real + a.imag * b.imag) / d; c.imag= (a.imag * b.real - a.real * b.imag) / d; return c; (συνέχεια)
Πρόγραμμα D-3: Μιγαδικοί αριθμοί (4/4 ) void print_complex( TComplex a) { printf("(%4.1lf, %4.1lf)\n", a.real, a.imag); TComplex read_complex_v1( void) { TComplex a; scanf("%lf", &a.real); scanf("%lf", &a.imag); return a; void read_complex_v2( TComplex *ptra) { /* prosoxh (*ptra).real giati prohgeitai o telesths "." tou telesth "*" */ scanf("%lf", &(*ptra).real); scanf("%lf", &(*ptra).imag); void read_complex_v3( TComplex *ptra) { scanf("%lf", &ptra->real); scanf("%lf", &ptra->imag);
Πρόγραμμα D-4: Πίνακας προσώπων (1/2) /* Struct me strings */ #include <stdio.h> typedef struct person { char fname[20]; char lname[20]; int age; TPerson; void read_person( TPerson *pp); int main( void ) { TPerson persons[5]; int i, s, imin; float mo; for(i=0; i<5; i++) { read_person( &persons[i]); s=0; for(i=0; i<5; i++) { s= s + persons[i].age; mo= s/5; printf("mesos oros hlikias %f\n", mo); (συνέχεια)
Πρόγραμμα D-4: Πίνακας προσώπων (2/2) imin= 0; for(i=0; i<5; i++) { if (persons[i].age < persons[imin].age) { imin= i; printf("to atomo me thn mikroterh hlikia einai o/h %s %s\n", persons[imin].fname, persons[imin].lname); return 0; void read_person( TPerson *pp) { printf("eisagwgh atomou: onoma epwnymo kai hlikia\n"); scanf("%s", pp->fname); scanf("%s", pp->lname); scanf("%d", &pp->age);
Πρόγραμμα D-5: Πίνακας μαθητών (1/3) /* Struct me strings 2 */ #include <stdio.h> #include <string.h> typedef struct student { char name[20]; int age; float grade; } TStudent; void readstudent( TStudent *pstu); void printstudent( TStudent stu); int main( void ) { TStudent a[5]; int i, imax; float max, mo, s; for(i=0; i<5; i++) { readstudent( &a[i]); } printf("oi karteles twn mathitwn einai:\n"); for(i=0; i<5; i++) { printstudent( a[i]); } (συνέχεια)
Πρόγραμμα D-5: Πίνακας μαθητών (2/3) s=0; for(i=0; i<5; i++) { s= s + a[i].grade; } mo= s/5; printf("mesos oros bathmologias %f\n", mo); imax=0; max=a[0].grade; for(i=0; i<5; i++) { if (a[i].grade > max) { max= a[i].grade; imax= i; } } printf("o mathitis me thn megalyterh bathmologia einai o/h %s\n", a[imax].name); return 0; } (συνέχεια)
Πρόγραμμα D-5: Πίνακας μαθητών (3/3) void readstudent( TStudent *pstu) { printf("eisagwgh mathiti: onoma bathmologia kai hlikia\n"); scanf("%s", pstu->name); scanf("%f", &pstu->grade); scanf("%d", &pstu->age); } void printstudent( TStudent stu) { printf("onoma: %s\n", stu.name); printf("bathmologia: %4.1f\n", stu.grade); printf("hlikia: %d\n", stu.age); }
Πρόγραμμα D-6: Παιχνίδι περιπέτειας (1/3) /* adventure game */ #include <stdio.h> #include <string.h> typedef struct { char descr[100]; int c[4]; TLoc; typedef struct { char descr[50]; int loc; TObj; void printobjloc( TObj a[], int nobjs, int cloc) { int i; for (i=0;i<nobjs;i++) { if (a[i].loc==cloc) { printf("blepeis: %s\n", a[i].descr); (συνέχεια)
Πρόγραμμα D-6: Παιχνίδι περιπέτειας (2/3) int main (void) { TLoc a[4]; TObj objs[3]; int x, xx, d; strcpy(a[0].descr, "Eisai sto dasos. Blepeis ena monopati boreia."); strcpy(a[1].descr, "Eisai sto ksefwto. Blepeis monopatia notia, anatolika kai dytika."); strcpy(a[2].descr, "Eisai sth pediada."); strcpy(a[3].descr, "Eisai sthn oxthh enos potamou. Ena monopati sta anatolika odhgei sto ksefwto."); a[0].c[0]=1; a[0].c[1]=-1; a[0].c[2]=-1; a[0].c[3]=-1; a[1].c[0]=-1; a[1].c[1]=2; a[1].c[2]=0; a[1].c[3]=3; a[2].c[0]=-1; a[2].c[1]=-1; a[2].c[2]=-1; a[2].c[3]=1; a[3].c[0]=-1; a[3].c[1]=1; a[3].c[2]=-1; a[3].c[3]=-1; strcpy(objs[0].descr, "Ena fanari."); objs[0].loc=2; strcpy(objs[1].descr, "Ena kibwtio."); objs[1].loc=2; strcpy(objs[2].descr, "Ena sako."); objs[2].loc=3; (συνέχεια)
Πρόγραμμα D-6: Παιχνίδι περιπέτειας (3/3) x=0; do { printf("%s\n",a[x].descr); printobjloc(objs, 3, x); printf("pou phgaineis? (0/1/2/3)\n"); scanf("%d",&d); if (d!=9) { xx=a[x].c[d]; if(xx==-1) printf("den mporeis!\n"); else x=xx; while( d!=9); printf("telos paixnidiou.\n"); return 0;
Τέλος Ενότητας