![]() Ласло Краус |
Програмирање II Други колоквијум 24. 6. 1999 |
---|
Саставити на језику C главни програм који прочита низ бројева, претвара га у скуп, испише добијени резултат и понавља претходне кораке све док за дужину низа не порчита недозвољену вредност.
Саставити на језику C главни програм који прочита један полином, врши његово табелирање (унутар опсега независне променљиве и са кораком прочитаним преко главног улаза), уништи полином и понавља претходне кораке све док не прочита "празан" полином.
Саставити на језику C главни програм који читајући низ бројева направи једноструко ланчану листу (уз очување редоследа читања), измени редослед елемената помоћу горње функције, испише добијени резултат, уништи листу и понавља претходне кораке све док за дужину низа не прочита недозвољену вредност.
#include <stdio.h>
void skup (int a[], int *n) {
int i, j, k;
for (i=j=0; i<*n; i++) {
for (k=i-1; k>=0 && a[k]!=a[i]; k--);
if (k < 0) a[j++] = a[i];
}
*n = j;
}
void main () {
while (1) {
int a[100], n, i;
printf ("n? "); scanf ("%d", &n);
if (n<0 || n>100) break;
printf ("A? "); for (i=0; i<n; scanf ("%d", a[i++]));
skup (a, &n);
printf ("A= "); for (i=0; i<n; printf("%d ",a[i++])); putchar ('\n');
}
}
/* polinom.h */
typedef struct { int n; float *a; } Poli;
Poli citaj (void);
float poli (Poli p, float x);
void brisi (Poli *p);
/* polinom.c */
#include "polinom.h"
#include <stdio.h>
#include <stdlib.h>
Poli citaj (void) {
Poli p; int i;
scanf ("%d" &p.n);
if (p.n >= 0) {
p.a = malloc ((p.n+1)*sizeof(float));
for (i=p.n; i>=0; scanf("%f",&p.a[i--]));
} else p.a = 0;
return p;
}
float poli (Poli p, float x) {
float q=p.a[p.n]; int i;
for (i=p.n-1; i>=0; q=q*x+p.a[i--]);
return q;
}
void brisi (Poli *p) {
free (p->a); p->a = 0; p->n = -1;
}
/* polinomt.c */
#include "polinom.h"
#include <stdio.h>
void main () {
while (1) {
Poli p; float xmax, xmin, dx, x;
printf ("Red i koeficijenti? ");
p = citaj ();
if (p.n < 0) break;
printf ("xmin, xmax, dx? " );
scanf ("%f%f%f", &xmin, &xmax, &dx);
putchar ('\n');
for (x=xmin; x<=xmax; x+=dx)
printf ("%5.2f %7.2f\n", x, poli(p,x));
brisi (&p);
}
}
#include <stdio.h>
#include <stdlib.h>
typedef struct elem {
int broj;
struct elem *sled;
} Elem;
Elem *obrni (Elem *lista) {
Elem *tek=lista, *preth=0;
while (tek) {
Elem *sled = tek->sled;
tek->sled = preth;
preth = tek;
tek = sled;
}
return preth;
}
void main () {
while (1) {
int n, i;
Elem *lst=0, *tek=0, *novi;
printf ("n? "); scanf ("%d", &n);
if (n < 0) break;
printf ("A? ");
for (i=0; i<n; i++) {
novi = malloc (sizeof (Elem));
scanf ("%d", &novi->broj);
novi->sled = 0;
if (tek == 0) lst = novi; else tek->sled = novi;
tek = novi;
}
lst = obrni (lst);
printf ("A= ");
for (tek=lst; lst; lst=lst->sled) printf ("%d ", lst->broj);
putchar ('\n');
while (lst) { Elem *stari = lst; lst = lst->sled; free (stari); }
}
}
(садржај)
Copyright © 2003, Laslo Kraus
Последња ревизија: 16.4.2003.