ekufrin / tvz_c-2023

Zadaci za vjezbu i labosi sa gradera - 2023 god.
8 stars 6 forks source link

lab8 red letenja 2 #87

Closed PetraSenicnjak closed 9 months ago

PetraSenicnjak commented 9 months ago

/*U binarnoj datoteci cijene.dat nalaze se podaci o cijenama avionskih letova zapisanih u obliku strukture: sifra leta - string od 6+1 znakova cijena leta - realni broj (float) U tekstualnoj datoteci letovi.txt nalaze se podaci o liniji (imena gradova) i šifra leta u formatu: Polazište#Odredište#šifra leta Napišite program koji će od korisnika tražiti unos iznosa u kunama s kojim raspolaže te u posebnoj funkciji trazi_let pronaći i ispisati odakle i prema kamo može letjeti za te novce.

Primjer ulaza: 1000 Primjer izlaza: Zagreb - Paris

Primjer ulaza: 11000 Primjer izlaza: Rome - Buenos Aires Zagreb - London Zagreb - Paris Paris - Havana

*/

define _CRT_SECURE_NO_WARNINGS

include

include

include

include

typedef struct { char sifra[6 + 1]; float cijena; }cijene;

typedef struct { char pol[30 + 1]; char odr[30 + 1]; char sifraa[6 + 1]; }letovi;

int main() { FILE dat1 = fopen("cijene.dat", "rb"); FILE dat2 = fopen("letovi.txt", "r"); cijene popis[1000]; letovi niz[1000]; float ulaz; int br = 0;

scanf("%f", &ulaz);

fseek(dat1, 0, SEEK_END);
int vel = ftell(dat1) / sizeof(cijene);
fseek(dat1, 0, SEEK_SET);
fread(popis, sizeof(cijene), vel, dat1);

while (fscanf(dat2, "%[^#]#%[^#]#%[^\n]\n", niz[br].pol, niz[br].odr, niz[br].sifraa) == 3)
{
    br++;
}

for (int i = 0; i < vel; i++)
{
    if (popis[i].cijena <= ulaz)
    {
        for (int j = 0; j < br; j++)
        {
            if (strcmp(popis[i].sifra, niz[j].sifraa) == 0)
            {
                printf("%s - %s\n", niz[j].pol, niz[j].odr);
            }
        }
    }
}
fclose(dat1);
fclose(dat2);

return 0;

}

ekufrin commented 9 months ago

Dodano, zahvaljujem.