![]() Ласло Краус |
Програмирање II Први колоквијум 28. 11. 2005 |
---|
Саставити на језику C функцију за израчунавање вредности следеће функције:
Саставити на језику C главни програм за табелирање наведене функције на главном излазу рачунара за све вредности xmin≤x≤xmax са кораком Δx. Потребне податке читати преко главног улаза рачунара.
Саставити на језику C пакет функција који за статичке уређене низове целих бројева садржи функције за уметање броја у низ и испитивање да ли се број налази у низу (применити поступак бинарног претраживања).
Саставити на језику C главни програм који читајући податке са главног улаза направи два низа, одреди колико елемената првог низа се налази и у другом низу, испише добијени резултат и понавља претходне кораке све док за дужину првог низа не прочита недозвољену вредност.
Тачка у равни се представља структуром која садржи координате тачке. Многоугао се представља структуром која садржи број темена многоугла и показивач надинамички низ тачака које чине темена многоугла. Саставити на језику C функције за израчунавање растојања између две тачке и за израчунавање обима многоугла.
Саставити на језику C главни програм који прочита са главног улаза низ тачака и од њих направи многоугао, израчуна и испише на главном излазу обим многоугла и понавља претходне кораке све док за број темена не прочита недозвољену вредност.
#include <stdio.h> float f (float x, float a[], int n) { int i; float p = -1, q = 0, r = 1; for (i=n-1; i>=0; i--) { р *= - x; q += p; r *= a[i] + (i+1)/q; } return r; } void main () { int n, i; float x, xmin, xmax, dx, a[21]; printf ("n? "); scanf ("%d", &n); printf ("A? "); for (i=0; i<n; scanf("%f",&a[i++])); printf ("xmin, xmax, dx? "); scanf ("%f%f%f", &xmin, &xmax, &dx); printf ("\n x f(x)\n================\n"); for (x=xmin; x<=xmax; x+=dx) printf ("%6.2f%10.6f\n", x, f(x,a,n)); }
/* paket.h */ void umetni (int a[], int *n, int b); int nadji (int a[], int n, int b); /* paket.c */ #include "paket.h" void umetni (int a[], int *n, int b) { int i; for (i=*n-1, i>=0 && a[i]>b; i--) a[i+1] = a[i]; a[i+1] = b; (*n)++; } int nadji (int a[], int n, int b) { int d = 0, g = n-1; s; while (d <= g) if (a[s=(g+d)/2] == b) return 1; else if (a[s] > b) g = s – 1; else d = s + 1; return 0; } /* test.c */ #include "paket.h" #include <stdio.h> #define N 100 void main () { int a[N], b[N], na, nb, i, k; while (1) { printf ("na? "); scanf ("%d", &n); if (n<=0 || n>N) break; printf ("A ? "); for (na=i=0; i<n; i++) { scanf (%d", &k); umetni (a, &na, k); } printf ("nb? "); scanf ("%d", &n); printf ("B ? "); for (nb=i=0; i<n; i++) { scanf (%d", &k); umetni (b, &nb, k); } for (k=i=0; i<na; i++) k += nadji (b, nb, a[i]); printf ("k= %d\n", k); } }
#include <stdio.h> #include <stdlib.h> #include <math.h> typedef struct { double x, y; } Tacka; typedef struct { int n; Tacka *tem; } Mnogougao; double rast (Tacka A, Tacka B) { return sqrt (pow(A.x-B.x,2) + pow(A.y-B.y,2); } double obim (Mnogoug mno) { int i; double s = rast (mno.tem[0], mno.tem[mno.n-1]); for (i=1; i<mno.n; i++) s += rast (mno.tem[i-1], mno.tem[i]); return s; } void main () { while (1) { Mnogoug mno; int i, n; printf ("\nn? "); scanf ("%d", &n); if (n < 3) break; mno.n = n; mno.tem = malloc (n * sizeof(Tacka)); for (i=0; i<n; i++) { printf ("mno[%d]? "); scanf ("%lf%lf", &mno.tem[i].x, &mno.tem[i].y ); } printf ("O= %f\n", obim(mno)); free (mno.tem); } }(садржај)
Copyright © 2006, Laslo Kraus
Последња ревизија: 4.2.2006.