Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ZADATAK
- a) (5 bodova) Napišite definiciju tipa podataka datum koji se sastoji od integer komponenti dan, mjesec i godina. Nadalje,
- napišite definiciju tipa podataka element za elemente vezane liste koji sadrže ime, prezime (stringovi od najviše 20
- znakova) i datum rođenja osobe (tip datum). Varijable treba biti moguće deklarirati u obliku datum x i element y.
- b) (5 bodova) Napišite funkciju dodaj() koja na početak liste dodaje element koji sadrži zadano ime, prezime i datum
- rođenja osobe. Argumente i povratni tip te funkcije odredite sami.
- c) (5 bodova) Napišite funkciju void ispis(element *prvi, datum d, int g) koja uzima pokazivač na zaglavlje liste
- i ispisuje imena i prezimena svih osoba koji su na zadani datum mlađe od g godina.
- d) (10 bodova) Napišite glavni program koji iz tekstualne datoteke osobe.in učitava podatke o osobama i ubacuje ih u
- vezanu listu koristeći funkciju dodaj. Datoteka u svakom retku sadrži podatke u formatu
- ime prezime dan.mjesec.godina
- Program zatim poziva funkciju ispis i ispisuje imena i prezimena osoba koje su 9.9.2014. mlađe od 30 godina.
- RJESENJE:
- //a) dio zadatka
- typedef struct _datum{
- int dan;
- int mjesec;
- int godina;
- }datum;
- typedef struct _element{
- char ime[21];
- char prezime[21];
- datum rođenje;
- struct _element *next;
- }
- // b dio zadatka
- element* dodaj(element *first, char ime,char prezime,datum datumm){
- element *rje;
- rje->ime=ime;
- rje->prezime=pezime;
- rje->rođenje.dan=datumm.dan;
- rje->rođenje.mjesec=datumm.mjesec;
- rje->rođenje.godina=datumm.godina;
- rje->next=first;
- return rje;
- }
- // c dio zadatka
- void ispis(element *prvi,const datum d, const int g){
- element *pom=*first;
- while(pom){ //dal mozda nemora ic pom->datum->dan, nee jer datum nije s *
- if(d.dan==pom->rođenje.dan && d.godina==pom->rođenje.godina && d.mjesec==pom->rođenje.mjesec)
- if((d.godina-pom->rođenje.godina)<9) //trebalo bi jos to malo vise razradit za mjesece i dane
- printf("%s %s",pom->ime, pom->prezime);
- pom=pom->next;
- }
- }
- // d dio zadatka
- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- int main(void){
- FILE *in;
- if((in=fopen("osobe.in", "rt"))==NULL){
- printf("Greska");
- exit(1);
- }
- char ime,prezime;
- int dan,mjesec, godina;
- element *first=NULL;
- datum datumm;
- while(fscanf(in, "%s %s %d.&d.%d", &ime, &prezime, &datumm.dan, &datumm.mjesec, &datumm.godina)>0){
- dodaj(first, ime, prezime, datumm) // jesam li dobro poslala listu u funkciju? je li potrebna inicijalizacija na nulu??
- }
- datumm.dan=9;
- datumm.mjesec=9;
- datumm.godina=2014;
- ispis(first, datum,30);
- fclose(in);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement