![]() Ласло Краус |
Програмирање II Први колоквијум 9. 12. 2004 |
---|
Саставити на језику C функцију за израчунавање вредности следеће функције:
Саставити на језику C главни програм за табелирање наведене функције на главном излазу рачунара за све вредности xmin≤x≤xmax са кораком Δx. Потребне податке читати преко главног улаза рачунара.
Саставити на језику C пакет функција који за динамичке низове целих бројева који садржи функције за читање низа задате дужине са главног улаза, писање низа на главни излаз и обртање редоследа елемената низа.
Саставити на језику C главни програм који прочита низ, обрне редослед елемената низа, испише добијени резултат и понавља претходне кораке све док за дужину низа не прочита недозвољену вредност.
Датум се представља у облику структуре која садржи целобројни дан, месец и годину. Саставити на језику C функције за испитивање да ли је датум исправан и за упоређивање два датума (резултат је <0, =0 или >0). Узети да је година преступна ако је без остатка дељив са четири.
Саставити на језику C главни програм који прочита динамички низ исправних датума са главног улаза (ако прочитани датум није исправан, понови читање датума), уреди низ по нерастућем редоследу, испише на главном излазу добијени резултат и понавља претходне кораке све док за дужину низа не прочита недозвољену вредност.
#include <stdio.h> float f (float x, float a[], int n) { int i; float p = 1, q = 1; for (i=1; i<=n; i++) { р *= - x / i; q *= (a[n-i] + p); } return q; } 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.2f10.6f\n", x, f(x,a,n)); }
/* paket.h */ int *citaj (int n); void pisi (const int *a, int n); void obrni (int *a, int n); /* paket.c */ #include "paket.h" #include <stdlib.h> int *citaj (int n) { int i, *a = malloc (n * sizeof(int)); for (i=0; i<n; scanf("%d",&a[i++])); return a; } void pisi (const int *a, int n) { int i; for (i=0; i<n; printf("%d ",a[i++]); } void obrni (int *a, int n) { int i = 0, j = n-1; while (i < j) { int b = a[i]; a[i++] = a[j]; a[j--] = b; } } /* test.c */ #include "paket.h" #include <stdio.h> #include <stdlib.h> void main () { int *a, n, i; while (1) { printf ("n? "); scanf ("%d", &n); if (n<=0) break; printf ("A? "); a = citaj (n); obrni (a, n); printf ("A= "); pisi (a, n); printf ("\n\n"); free (a); } }
typedef struct { short dan, mes, god; } Datum; int ispravan (Datum d) { short dani[2][12] = {{31,28,31,30,31,30,31,31,30,31,30,31}, {31,29,31,30,31,30,31,31,30,31,30,31} }; return d.god>0 && d.mes>0 && d.mes<=12 && d.dan>0 && d.dan<=dani[d.god%4==0][d.mes-1]; } int uporedi (Datum d1, Datum d2) { return (d1.god!=d2.god) ? d1.god - d2.god : (d1.mes!=d2.mes) ? d1.mes - d2.mes : d1.dan - d2.dan; } #include <stdio.h> #include <stdlib.h> void main () { while (1) { Datum *a; int i, n; printf ("\nn? "); scanf ("%d", &n); if (n < 0) break; a = malloc (n * sizeof (Datum)); for (i=0; i<n; i++) { do { printf ("datum[%d]? ", i) scanf("%hd%hd%hd", &a[i].dan, &a[i].mes, &a[i].god); } while (! ispravan (a[i])); } for (i=0; i<n-1; i++) for (j=i+1; j<n; j++) if (uporedi(a[j],a[i])>0) { Datum d = a[i]; a[i] = a[j]; a[j] = d; } printf ("\nUredjeno:\n\n") for (i=0; i<n; i++) printf ("(%d.%d.%d)\n", a[i].dan, a[i].mes, a[i].god); free (a); } }(садржај)
Copyright © 2005, Laslo Kraus
Последња ревизија: 11.1.2005.