![]() Ласло Краус |
Програмирање II Дурги колоквијум 6. 6. 2000 |
---|
Саставити на језику C главни програм који прочита два низа бројева, нађе њихову фузију, испише добијени резултат, уништи све низове и понавља претходне кораке све док за дужину једног од низова не порчита недозвољену вредност.
Саставити на језику C главни програм који читајући низ неуређени бројева направи уређену листу, испише добијени резултат, уништи листу и понавља претходне кораке све док за дужину низа не прочита недозвољену вредност.
/* dinniz.h */
typedef struct {int n; float *niz} DNiz;
DNiz citaj (void);
void pisi (DNiz dn);
DNiz fuzija (DNiz dn1, DNiz dn2);
void brisi (DNiz *dn);
/* dinniz.c */
#include "dinniz.h"
#include <stdio.h>
#include <stdlib.h>
DNiz citaj (void) {
int i;
DNiz dn; scanf ("%d", &dn.n);
dn.niz = malloc (n*sizeof(float));
for (i=0; i<dn.n; scanf("%f",&dn.niz[i++]));
}
void pisi (DNiz dn) {
int i;
for (i=0; i<dn.n; printf("%.2f ", dn.niz[i++]));
}
DNiz fuzija (DNiz dn1, DNiz dn2) {
int i = 0, j = 0, k = 0;
DNiz dn; dn.n = dn1.n + dn2.n;
dn.niz = malloc (dn.n*sizeof(float));
while (i < dn1.n && j < dn2.n)
dn.niz[k++] = dn1.niz[i]<dn2.niz[j] ? dn1.niz[i++] : dn2.niz[j++];
while(i < dn1.n) dn.niz[k++] = dn1.niz[i++];
while(j < dn2.n) dn.niz[k++] = dn2.niz[j++];
return dn;
}
void brisi (DNiz *dn)
{ free(dn->niz); dn->niz = 0; dn->n = 0; }
/* dinnizt.c */
#include "dinniz.h"
#include <stdio.h>
void main () {
while (1) {
DNiz dn1, dn2, dn3;
printf ("niz1? ") dn1 = citaj ();
if (dn1.n < 0) break;
printf ("niz2? ") dn2 = citaj ();
if (dn2.n < 0) break;
dn3 = fuzija (dn1, dn2);
printf ("niz3= ") pisi (dn3); printf ("\n\n");
brisi (&dn1); brisi (&dn2); brisi (&dn3);
}
}
typedef struct elem
{ int br; struct elem *sl; } Elem;
Elem *umetni (Elem *lst; int br) {
Elem *tek=lst, *preth=0, *novi;
while (tek && br > tek->br)
{ preth = tek; tek = tek->sl; }
novi = malloc (sizeof (Elem));
novi->br = br; novi->sl = tek;
if (!preth) lst = novi;
else preth->sl = novi;
return lst;
}
void main () {
while (1) {
int n, i, br;
Elem *lst=0, *tek;
printf ("n? "); scanf ("%d", &n);
if (n < 0) break;
printf ("A? ");
for (i=0; i<n; i++) {
scanf ("%d", &br);
lst = umetni (lst, br);
}
printf ("A= ");
for (tek=lst; tek; tek=tek->sl)
printf ("%d ", tek->br);
putchar ('\n');
while (lst) {
Elem *stari = lst;
lst = lst->sl;
free (stari);
}
}
}
#include <stdio.h>
typedef struct {
char sif[9]; long dat; float cen, kol;
} Zap;
void main () {
Zap zap;
float vredn[12];
int i, g;
FILE *dat = fopen("nabavke.dat", "rb");
printf ("God? "); scanf ("%d", &g);
for (i=0; i<12; vredn[i++]=0);
while (! feof (dat)) {
fread (&zap, sizeof(Zap), 1, dat);
if (zap.dat/10000 == g)
uk[(zap.dat/100)%100-1] += zap.cen * zap.kol;
}
fclose (dat);
dat = fopen ("rezult.txt", "w");
for (i=0; i<12; i++)
fprintf (dat, "%2d %10.2f\n", i+1, uk[i]);
}
(садржај)
Copyright © 2001, Laslo Kraus
Последња ревизија: 10.5.2001.