Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- typedef struct node {
- char naziv[20];
- int kapacitet;
- int godinaOsnivanja;
- char tip[20];
- int pretrazen;
- struct node *sl;
- } cvor;
- cvor *maxKapacitet(cvor *gl) {
- int max = 0;
- cvor *maxc = NULL;
- while(gl != NULL){
- if(gl->kapacitet>max && gl->pretrazen == 0){
- max = gl->kapacitet;
- maxc = gl;
- }
- gl = gl->sl;
- }
- if(maxc != NULL)
- maxc->pretrazen = 1;
- return maxc;
- }
- void dodaj(char *naziv, char *tip, int kapacitet, int godinaOsnivanja, cvor **gl){
- cvor *novi = (cvor*)malloc(sizeof(cvor));
- strcpy(novi->naziv, naziv);
- strcpy(novi->tip, tip);
- novi->godinaOsnivanja = godinaOsnivanja;
- novi->kapacitet = kapacitet;
- novi->pretrazen = 0;
- novi->sl = *gl;
- *gl = novi;
- }
- void deleteList(cvor **gl){
- cvor *pr, *tek = *gl;
- while(tek != NULL){
- pr = tek->sl;
- tek = tek->sl;
- free(pr);
- }
- *gl = NULL;
- }
- void ucitavanje(FILE *ulaz, cvor **gl){
- char naziv[20], tip[20];
- int kapacitet, godinaOsnivanja;
- cvor *novi;
- while(fscanf(ulaz, "%s %d %d %s", naziv, &kapacitet, &godinaOsnivanja, tip) != EOF)
- dodaj(naziv, tip, kapacitet, godinaOsnivanja, gl);
- }
- void ispisPodataka(cvor *a, char *pref){
- printf("%s\"%s\"(%s), kapacitet: %d, osnovan %d\n", pref, a->naziv, a->tip, a->kapacitet, a->godinaOsnivanja);
- }
- void prVrKap(cvor *gl, char *tip){
- if(gl == NULL)
- return printf("Lista je prazna.\n");
- int ukObj = 0, ukKap = 0;
- while(gl != NULL) {
- if(strcmp(gl->tip, tip) == 0) {
- ukObj++;
- ukKap += gl->kapacitet;
- }
- gl = gl->sl;
- }
- char s[50];
- strcpy(s, "");
- strcat(s, "kapacitet_");
- strcat(s, tip);
- strcat(s, ".txt");
- FILE *f;
- f = fopen(s, "w");
- fprintf(f, "Prosecna vrednost kapaciteta za tip %s iznosi %.2f", tip, (float)ukKap/ukObj);
- fclose(f);
- }
- void proslava(cvor *gl, int brojLjudi){
- int n;
- cvor *max;
- FILE *proslava = fopen("proslava.txt", "w");
- while(brojLjudi>0 && ((max=maxKapacitet(gl)) != NULL)){
- n = (max->kapacitet > brojLjudi) ? brojLjudi : max->kapacitet;
- brojLjudi -= n;
- fprintf(proslava, "\"%s\"(%s), ljudi: %d\n", max->naziv, max->tip, n);
- }
- fclose(proslava);
- }
- void najstarijiNajmladji(cvor *gl){
- if(gl == NULL)
- return printf("Lista je prazna.\n");
- int minGodOsn = 3000, maxGodOsn = 0;
- cvor *min = NULL, *max = NULL;
- while(gl != NULL){
- if(gl->godinaOsnivanja < minGodOsn){
- minGodOsn = gl->godinaOsnivanja;
- min = gl;
- }
- if(gl->godinaOsnivanja > maxGodOsn){
- maxGodOsn = gl->godinaOsnivanja;
- max = gl;
- }
- gl = gl->sl;
- }
- ispisPodataka(max, "Najmladji objekat: ");
- ispisPodataka(min, "Najstariji objekat: ");
- }
- cvor *glava = NULL;
- int main()
- {
- FILE *ulaz;
- if((ulaz = fopen("namirnice.txt", "r")) == NULL)
- return printf("Fajl namirnice.txt ne postoji!");
- ucitavanje(ulaz, &glava);
- fclose(ulaz);
- /* a) */ najstarijiNajmladji(glava);
- /* b) */ prVrKap(glava, "restoran");
- /* c) */ proslava(glava, 1000);
- // KRAJ PROGRAMA
- deleteList(&glava);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement