![]() Ласло Краус |
Програмирање II Допунски други колоквијум 15. 7. 1999 |
---|
Саставити на језику C главни програм који прочита два велика цела броја, налази њихов збир, испише добијени резултат и понавља претходне кораке све док за број цифара не порчита недозвољену вредност. Приликом уношеља бројева, уместо водећих нула уносе се знакови размака. Приликом исписивања водеће нуле се исписују.
Саставити на језику C главни програм који прочита један динамички низ реалних бројева, редукује поднизове узастопних вредности на по једну вредност, испише добијени резултат, уништи динамички низ и понавља претходне кораке све док не прочита "празан" низ (низ без иједног елемента).
Саставити на језику C главни програм који читајући неуређени низ бројева направи једноструко ланчану листу (уз очување редоследа читања), уреди тај низ (листу) помоћу горње функције, испише добијени резултат, уништи листу и понавља претходне кораке све док за дужину низа не прочита недозвољену вредност.
#include <stdio.h>
void zbir (char a[], char b[], char c[], int n ) {
int i; char p=0;
for (i=n-1; i>=0; i--) {
c[i] = a[i] + b[i] + p;
if (a[i] > 9) {
a[i] -= 10; p = 1;
} else p = 0;
}
}
void citaj (char a[], int n) {
int i, zn;
for (i=0; i<n; i++) {
zn = getchar ();
a[i] = (zn == ' ') ? 0 : zn-'0';
}
}
# define N 40
void main () {
while (1) {
char a[N], b[N], c[N]; int n, i;
printf ("n? "); scanf ("%d", &n);
if (n<0 || n>N) break;
printf ("A? "); citaj (a, n);
printf ("B? "); citaj (b, n);
zbir (a, b, c, n);
printf ("C= ");
for (i=0; i<n; printf("%1d",c[i++])); putchar ('\n');
}
}
/* dinniz.h */
typedef struct { int n; float *a; } DNiz;
DNiz citaj (void);
void reduk (DNiz *dn);
void brisi (DNiz *dn);
/* dinniz.c */
#include "dinniz.h"
#include <stdio.h>
#include <stdlib.h>
DNiz citaj (void) { DNiz dn; int i;
scanf ("%d" &dn.n);
dn.a = malloc (n*sizeof(float));
for (i=0; i<dn.n; scanf("%f",&dn.a[i++]));
return dn;
}
void brisi (DNiz *dn) {
free (dn->a); dn->a = 0; dn->n = 0;
}
void reduk (DNiz *dn) {
int i, j=-1;
if (dn->n > 0)
for (i=1, j=0; i<dn->n; i++)
if (a[i] <> a[j]) a[++j] = a[i];
dn->a = realloc (dn->a, (dn->n=j+1)*sizeof*float));
}
/* dinnizt.c */
#include "dinniz.h"
#include <stdio.h>
void main () {
while (1) { DNiz dn;
printf ("Duzina i elementi niza? ");
dn = citaj ();
if (dn.n <= 0) break;
reduk (&dn); printf ("Redukovano:");
for (i=0; i<dn.n; printf (" %d", dn.a[i++]);
putchar ('\n'); brisi (&dn);
}
}
#include <stdio.h>
#include <stdlib.h>
typedef struct elem {
int broj;
struct elem *sled;
} Elem;
Elem *uredi (Elem *lista) {
Elem *tek=lista, *prvi=0;
while (tek) {
Elem *sled = tek->sled;
Elem *ovaj = prvi, *preth = 0;
while (ovaj && ovaj->broj <= tek->broj) {
preth = ovaj;
ovaj = ovaj->sled;
}
if (preth == 0) prvi = tek;
else preth->sled = tek;
tek->sled = ovaj;
tek = sled;
}
return prvi;
}
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 = uredi (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 © 1999, Laslo Kraus
Последња ревизија: 12.7.1999.