ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Δομημένος Προγραμματισμός Ενότητα: Συναρτήσεις - προγράμματα - Μέρος Α Δ. Ε. Μετάφας Τμ. Ηλεκτρονικών Μηχ. Τ.Ε.
Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3
Πρόγραμμα C-1: Άθροισμα κλασμάτων, ανάγωγο κλάσμα (1/2) /* athroisma klasmatwn kai aplopoihsh se anagwgo klasma p.x. 1 / 3 + 4 / 6 = 1 / 1 */ #include <stdio.h> int MKD( int a, int b); int main( void ) { int a, b, c, d, e, f, k; scanf("%d",&a); scanf("%d",&b); scanf("%d",&c); scanf("%d",&d); e= a*d + b*c; f= b*d; k= MKD( e, f); e= e / k; f= f / k; printf("%d / %d + %d / %d = %d / %d\n", a, b, c, d, e, f); return 0; (συνέχεια)
Πρόγραμμα C-1: Άθροισμα κλασμάτων, ανάγωγο κλάσμα (1/2) /* synarthsh MKD (a, b) */ int MKD( int a, int b) { int i, y1, y2, m; for( i=1; i<=a; i++) { y1= a%i; y2= b%i; if ( (y1==0) && (y2 == 0) ) { m= i; return m;
Πρόγραμμα C-2: Εύρεση των πρώτων αριθμών (1/2) /* eyresh twn prwtwn arithmwn metaksy 1 kai 100 kai apothikeysh aytwn se ena pinaka */ #include <stdio.h> int checkprwtos( int a); int main( void ) { int i, r, c; int p[50]; c= 0; for(i=1; i<=100; i++) { r= checkprwtos( i); if (r==1) { p[c]= i; c= c + 1; printf("brethikan %d prwtoi arithmoi:\n", c); for(i=0; i<c; i++) { printf("%d\n", p[i]); return 0; (συνέχεια)
Πρόγραμμα C-2: Εύρεση των πρώτων αριθμών (2/2) /* synarthsh checkprwtos, epistrefei 1 an einai prwtos kai 0 an den einai */ int checkprwtos( int a) { int y, i, c; c = 0; for( i=1; i<=a; i++) { y= a%i; if (y == 0) { c= c+1; if (c == 2) { return 1; else { return 0;
Πρόγραμμα C-3: Ανάλυση αριθμού σε γινόμενο πρώτων αριθμών (1/3) /* analysh aritmnou se ginomeno prwtwn arithmwn */ #include <stdio.h> int checkprwtos( int a); int ypolpinakasprwtwn( int p[50]); int main( void ) { int a, np, i, y; int p[50]; np= ypolpinakasprwtwn( p ); /* ypologismos plhthous np prwtwn ston pinaka p*/ printf("eishgage arithmo metaksi 1 kai 100\n"); scanf("%d", &a); i= 0; do { do { y = a%p[i]; if (y==0) { printf("%d ",p[i]); a= a/p[i]; while (y==0); i= i + 1; while (a!=1);
Πρόγραμμα C-3: Ανάλυση αριθμού σε γινόμενο πρώτων αριθμών (2/3) /* synarthsh ypologismou tou pinaka twn prwtwn 1..100 */ int ypolpinakasprwtwn( int p[50]) { int i, r, c; c= 0; for(i=1; i<=100; i++) { r= checkprwtos( i); if (r==1) { p[c]= i; c= c + 1; return c;
Πρόγραμμα C-3: Ανάλυση αριθμού σε γινόμενο πρώτων αριθμών (3/3) /* synarthsh checkprotos, epistrefei 1 an einai prwtos kai 0 an den einai */ int checkprwtos( int a) { int y, i, c; c = 0; for( i=1; i<=a; i++) { y= a%i; if (y == 0) { c= c+1; if (c == 2) { return 1; else { return 0;
Πρόγραμμα C-4: Λύση συστήματος 2x2 (1/2) /* lysh grammikou systhmatos 2 x 2 a1*x + b1*y = c1 a2*x + b2*y = c2 p.x. x + y = 5 x - y = 3 opou x=4, y=1 */ #include <stdio.h> float oriz( float a, float b, float c, float d); int main( void) { float a1, b1, c1; float a2, b2, c2; float dx, dy, d; float x, y; printf("eishgage prwth ejiswsh a1, b1, c1\n"); scanf("%f", &a1); scanf("%f", &b1); scanf("%f", &c1); printf("eishgage deyterh ejiswsh a2, b2, c2\n"); scanf("%f", &a2); scanf("%f", &b2); scanf("%f", &c2); (συνέχεια)
Πρόγραμμα C-4: Λύση συστήματος 2x2 (2/2) d= oriz(a1, b1, a2, b2); if (d==0) { printf("d=0, systhma adynato h aoristo\n"); else { dx= oriz(c1, b1, c2, b2); dy= oriz(a1, c1, a2, c2); x= dx/d; y= dy/d; printf("lyseis x=%.2f, y=%.2f\n",x,y); return 0; /* synarthsh ypologismou orizousas */ float oriz( float a, float b, float c, float d) { float p; p= a*d - b*c; return p;
Πρόγραμμα C-5: Εύρεση min, max συνάρτησης (1/2) /* eyresh elaxistou, megistou synarthshs */ #include <stdio.h> #include <math.h> float f(float x); int main(void) { int n=1000; int i; float x1, x2, stepx, ymin, ymax, x, y; scanf("%f", &x1); scanf("%f", &x2); stepx=(x2-x1)/n; ymin=ymax=f(x1); for(i=0; i<=n; i++) { x=x1+i*stepx; y=f(x); if (y>ymax) { ymax=y; if (y<ymin) { ymin=y; printf("ymin= %f, ymax=%f\n", ymin, ymax); return 0; (συνέχεια)
Πρόγραμμα C-5: Εύρεση min, max συνάρτησης (2/2) /* synarthsh f(x) */ float f(float x) { return x*x-cos(x)+8; }
Πρόγραμμα C-6: Εύρεση ρίζας εξίσωσης f(x)=0 (1/2) /* eyresh rizas ejiswshs f(x)=0 me methodo dixotomhshs*/ #include <stdio.h> #include <math.h> float f(float x); int main(void) { float x1, x2, xm; scanf("%f", &x1); scanf("%f", &x2); if ( f(x1)*f(x2) <=0 ) { do { xm=(x1+x2)/2; if ( f(x1)*f(xm) <=0 ) { x2= xm; else { x1= xm; while ( x2-x1 > 0.001); printf("riza metaksi twn x1 kai x2, x= %f\n",xm); else { printf("f(x1)*f(x2) > 0 Den mporei na brethei riza.\n"); return 0;
Πρόγραμμα C-6: Εύρεση ρίζας εξίσωσης f(x)=0 (2/2) /* synarthsh f(x) */ float f(float x) { return cos(x)*x;
Πρόγραμμα C-7: Εύρεση idx στοιχείου πίνακα /* Pinakes kwdikos, timh, eyresh timhs apo kwdiko */ #include <stdio.h> int findcode( int a[], int n, int v); int main( void ) { int codes[10]={123, 124, 201, 202, 440, 441, 101, 102, 103, 800}; float values[10]={2.4, 3.5, 6, 6, 12, 4, 2, 2.4, 5, 1.3}; int idx, ucode; scanf("%d", &ucode); idx= findcode( codes, 10, ucode); if (idx!= -1) { printf("code= %d value= %f\n", codes[idx], values[idx]); else { printf("code= %d den brethhke\n", ucode); return 0; int findcode( int a[], int n, int v) { int i; for(i=0; i<n; i++) { if ( a[i] == v ) { return i; return -1;
Πρόγραμμα C-8: Ολοκλήρωμα συνάρτησης /* Oloklhrwma synarthshs */ #include <stdio.h> #include <math.h> double fu( double x) { double y; y=x*x-cos(x); return y; int main (void) { double x1,x2,s,e,dx,y1,y2,x; int i,n; n=1000; scanf("%lf",&x1); scanf("%lf",&x2); dx=((x2-x1)/n); s=0; for(i=0;i<n;i++) { x=x1+i*dx; y1=fu(x); y2=fu(x+dx); e=(y1+y2)*dx/2; s=s+e; printf("%lf\n",s); return 0;
Πρόγραμμα C-9: Υπολογισμός R ενός συγκεκριμένου κυκλώματος /* Xrhsh synarthsewn gia ypologismo thw R-olikhs enos sygkekrimenou kyklwmatos p.x. (R1 - R2//R3 - R4 ) // (R5 - R6) */ #include <stdio.h> float sei( float r1, float r2) { float r; r=r1+r2; return r; float par( float r1, float r2) { float r; r=(r1*r2)/(r1+r2); return r; int main( void) { float r1, r2, r3, r4, r5, r6; float r23, r123, r1234, r56, r; scanf("%f", &r1); scanf("%f", &r2); scanf("%f", &r3); scanf("%f", &r4); scanf("%f", &r5); scanf("%f", &r6); r23=par(r2,r3); r123=sei(r1,r23); r1234=sei(r123,r4); r56=sei(r5,r6); r=par(r1234,r56); printf("%f\n", r); return 0;
Τέλος Ενότητας