Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- struct Datum {
- int dan, mjesec, godina;
- };
- struct Student {
- char ime[20], prezime[20];
- struct Datum datum_rodjenja;
- };
- void unesi(char niz[], int velicina)
- {
- char znak = getchar();
- if(znak =='\n') znak=getchar();
- int i = 0;
- while(i<velicina-1 && znak !='\n') {
- niz[i] = znak;
- i++;
- znak = getchar();
- }
- niz[i] ='\0';
- }
- void zapisi(struct Student studenti[], int n)
- {
- int i;
- FILE *ulaz=fopen("studenti.dat", "ab");
- if(ulaz==NULL) {
- printf("Greska pri otvaranju datoteke studenti.dat!");
- }
- for(i=0; i<n; i++) {
- fwrite(studenti[i].ime, 1, 20, ulaz);
- fwrite(studenti[i].prezime, 1, 20, ulaz);
- fwrite(&studenti[i].datum_rodjenja.dan, 1, 1, ulaz);
- fwrite(&studenti[i].datum_rodjenja.mjesec, 1, 1,ulaz);
- fwrite(&studenti[i].datum_rodjenja.godina, 2, 1, ulaz);
- if(ferror(ulaz)) {
- printf("Greska prilikom pisanja datoteke.\n");
- }
- }
- fclose(ulaz);
- }
- void promijeni(struct Student student, int n)
- {
- struct Student studenti[100];
- FILE *ulaz=fopen("studenti.dat", "r+b");
- if(ferror(ulaz)) {
- printf("Greska pri otvaranju datoteke studenti.dat!");
- }
- strcpy(studenti[n].ime, student.ime);
- strcpy(studenti[n].prezime, student.prezime);
- fread(studenti[n].ime, 1, 20, ulaz);
- fread(studenti[n].prezime, 1, 20, ulaz);
- fread(&studenti[n].datum_rodjenja.dan, 1, 1, ulaz);
- fread(&studenti[n].datum_rodjenja.mjesec, 1, 1, ulaz);
- fread(&studenti[n].datum_rodjenja.godina, 2, 1, ulaz);
- strcpy(studenti[n].ime, student.ime);
- strcpy(studenti[n].prezime, student.prezime);
- studenti[n].datum_rodjenja.dan=student.datum_rodjenja.dan;
- studenti[n].datum_rodjenja.mjesec=student.datum_rodjenja.mjesec;
- studenti[n].datum_rodjenja.godina=student.datum_rodjenja.godina;
- fwrite(studenti[n].ime, 1, 20, ulaz);
- fwrite(studenti[n].prezime, 1, 20, ulaz);
- fwrite(&studenti[n].datum_rodjenja.dan, 1, 1, ulaz);
- fwrite(&studenti[n].datum_rodjenja.mjesec, 1, 1, ulaz);
- fwrite(&studenti[n].datum_rodjenja.godina, 2, 1, ulaz);
- if(ferror(ulaz)) {
- printf("Greska prilikom pisanja datoteke.\n");
- }
- fclose(ulaz);
- }
- int dani(struct Student studenti[], int n)
- {
- int indeksmjeseca, sumaDanaKrozMjesece, mjesec_u_danima, ukupniDani, j, brojdana;
- indeksmjeseca=studenti[n].datum_rodjenja.mjesec;
- sumaDanaKrozMjesece=0;
- do {
- switch(indeksmjeseca-1) {
- case 1:
- mjesec_u_danima=31;
- break;
- case 3:
- mjesec_u_danima=31;
- break;
- case 2:
- if((studenti[n].datum_rodjenja.godina%4==0 && studenti[n].datum_rodjenja.godina%100!=0) || studenti[n].datum_rodjenja.godina%400==0) {
- mjesec_u_danima=29;
- } else {
- mjesec_u_danima=28;
- }
- break;
- case 4:
- mjesec_u_danima=30;
- break;
- case 5:
- mjesec_u_danima=31;
- break;
- case 6:
- mjesec_u_danima=30;
- break;
- case 7:
- mjesec_u_danima=31;
- break;
- case 8:
- mjesec_u_danima=31;
- break;
- case 9:
- mjesec_u_danima=30;
- break;
- case 10:
- mjesec_u_danima=31;
- break;
- case 11:
- mjesec_u_danima=30;
- break;
- case 12:
- mjesec_u_danima=31;
- break;
- default:
- mjesec_u_danima=0;
- break;
- }
- if(indeksmjeseca==1) {
- indeksmjeseca+=1;
- }
- sumaDanaKrozMjesece+=mjesec_u_danima;
- indeksmjeseca--;
- } while(indeksmjeseca!=1);
- ukupniDani=sumaDanaKrozMjesece+studenti[n].datum_rodjenja.dan;
- brojdana=0;
- for(j=1000; j<studenti[n].datum_rodjenja.godina; j++) {
- if((j%4==0 && j%100!=0) || j%400==0) {
- //printf("%d", brojdana);
- brojdana+=366;
- // printf("%d prestupna\n", j);
- } else {
- brojdana+=365;
- // printf("%d ne\n", j);
- }
- }
- return brojdana+ukupniDani-1;
- }
- void period(struct Student studenti[], int n, int D)
- {
- int broj_D, temp=0, tempindeks, i, k;
- broj_D=abs(D);
- for(k=0; k<n; k++) {
- temp=dani(studenti, k);
- tempindeks=k;
- for(i=k+1; i<n; i++) {
- if(temp==dani(studenti, i)+broj_D || temp==dani(studenti, i)-broj_D) {
- printf("%s %s - %s %s\n", studenti[tempindeks].ime, studenti[tempindeks].prezime, studenti[i].ime, studenti[i].prezime);
- }
- }
- }
- }
- int main()
- {
- int D, opcija;
- struct Student studenti[100];
- printf("Unesite broj D: ");
- scanf("%d", &D);
- int i=0, vel=0;
- do {
- printf("Unesite 1 za unos, 2 za ispis, 0 za izlaz: ");
- scanf("%d", &opcija);
- if(opcija==0) {
- return 0;
- } else if(opcija==1) {
- printf("Unesite ime: ");
- unesi(studenti[i].ime, 20);
- printf("Unesite prezime: ");
- unesi(studenti[i].prezime, 20);
- printf("Unesite datum rodjenja: ");
- scanf("%d %d %d", &studenti[i].datum_rodjenja.dan, &studenti[i].datum_rodjenja.mjesec, &studenti[i].datum_rodjenja.godina);
- i++;
- vel=i;
- } else if(opcija==2) {
- for(i=0; i<vel; i++) {
- printf("%d. %s %s %d %d %d\n", i+1, studenti[i].ime, studenti[i].prezime, studenti[i].datum_rodjenja.dan, studenti[i].datum_rodjenja.mjesec, studenti[i].datum_rodjenja.godina);
- }
- } else if(opcija==3) {
- period(studenti, vel, D);
- zapisi(studenti, vel);
- }
- } while(opcija!=0);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement