![]() Ласло Краус |
Програмирање - испити Четврти парцијални 1.6.1998 |
---|
Саставити интерактивни главни програм на језику C који прихвата три команде:
char[6]
), назив артикла
(char[20]
), шифру врсте артикла
(char[6]
), јединичну цену (double
) и количину
(double
). Датотека је уређена по шифрама артикала. Саставити главни програм на језику
C за табеларни приказ укупне вредности робе за поједине врсте артикала
као и исписивање укупне вредности робе у складишту. Табела треба да је
уређена по врстама артикала.
int
) и податак (char[20]
). Саставити главни
програм на језику C који ће да препише садржај те датотеке у другу уређену
бинарну секвенцијалну датотеку према вредностима шифара. Као међукорак,
потребно је од записа почетне датотеке направити уређену линеарну листу.
Имена датотека за обраду задају се у линији команде за извршавање програма.
/* stek.h */
typedef struct elem {
float broj, struct elem *sled;
} Elem;
Elem *stavi (Elem *stek, float broj);
Elem *uzmi (Elem *stek, float *broj);
int prazan (Elem *stek);
/* stek.c */
#include "stek.h"
#include <stdlib.h>
Elem *stavi (Elem *stek, float broj) {
Elem *novi = malloc (sizeof (Elem));
novi->broj = broj; novi->sled = stek;
return novi;
}
Elem *uzmi (Elem *stek, float *broj) {
if (stek) {
Elem *stari=stek; *broj=stek->broj;
stek=stek->sled; free (stari);
} return stek;
}
int prazan(Elem *stek) {return stek==0;}
/* stekt.c */
#include "stek.h"
#include <stdio.h>
void main () {
Elem *stek=0; int dalje=1;
while (dalje) {
char izb[2]; float broj;
printf ("\nIzaberite (s=stavi, u=uzmi, k=kraj): ");
scanf ("%s", izb);
switch (izb[0]) {
case 's': case 'S':
printf("Broj? "); scanf ("%f", &broj);
stek = stavi (stek, broj);
break;
case 'u': case 'U':
if (! prazan (stek)) {
stek = uzmi (stek, &broj);
printf ("Broj= %.2f\n", broj);
} else
printf ("Stek je prazan!\n");
break;
case 'k': case 'K':
dalje = 0;
break;
default:
printf ("Nedozvoljen izbor!\n");
}
}
}
#include <stdio.h>
#include <string.h>
typedef struct {
char sifra[6], naziv[20], vrsta[6];
double cena, kol;
} Zap;
typedef struct {
char vrsta[6]; double vredn;
} Stavka;
void main () {
Zap zap; Stavka tab[50];
int i, j, k, dalje, n=0;
double vr, uk=0;
FILE *dat = fopen ("magacin.dat", "rb");
/* Obrada uzastopnih zapisa */
while (! feof (dat)) {
fread (&zap, sizeof (Zap), 1, dat);
/* Nadji vrstu artikla u tabeli */
for (i=0, dalje=1; i<n && dalje; i++)
dalje = (k = strcmp(tab[i].vrsta,zap.vrsta )) <0;
if (i==n || k>0) {
/* Jos nema u tabeli, ubaci */
for (j=n++; j>i; j--) tab[j] = tab[j-1];
strcpy (tab[i].vrsta, zap.vrsta);
tab[i].vredn = 0;
}
/* Akumuliraj vrednost */
vr = zap.cena * zap.kol;
tab[i].vredn += vr; uk += vr;
}
/* Prikaz tabele */
for (i=0; i<n; i++)
printf("%s: %.2f\n", tab[i].vrsta, tab[i].vredn);
printf ("\nUKUPNO: %.2f\n", uk);
}
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int sif; char pod[20];
} Zap;
typedef struct elem {
Zap zap; struct elem *sled;
} Elem;
void main (int barg, char *varg[]) {
Zap zap;
Elem *lst=0, *preth, *tek, *novi;
FILE *ul = fopen (varg[1], "rb"),
*izl = fopen (varg[2], "rw");
while (! feof (ul)) {
fread (&zap, sizeof(Zap), 1, ul);
for (tek=lst, preth=0;
tek && tek->zap.sif < zap.sif;
preth=tek, tek=tek->sled);
novi = malloc (sizeof (Elem));
novi->zap = zap;
novi->sled = tek;
preth ? preth->sled=novi : lst=novi;
}
for (tek=lst; tek; tek=tek->sled) {
zap = tek->zap;
fwrite (&zap, sizeof(Zap), 1, izl);
}
fclose (izl); fclose (ul);
}
(садржај)
Copyright © 1998, Laslo Kraus
Последња ревизија: 2.10.1998.