Created
April 16, 2020 10:44
-
-
Save riemass/c52d9f0e78a21ba6359972c4c7d327c9 to your computer and use it in GitHub Desktop.
LV OP FET
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #include <stdio.h> | |
| // Napisati program koji treba da korisniku ispise koliko je dana proslo | |
| // od pocetka nove ere do unesenog dan. | |
| // Ispisati koji je dan u sedmici! | |
| // 1. 1. 1900. je bio ponedeljak | |
| // Deklaracija | |
| int da_li_je_prestupna(int godina); | |
| long broj_dana_do_godine(int godina); | |
| long broj_dana_do_mjeseca(int mjesec, int godina); | |
| long broj_dana_do_datuma(int dan, int mjesec, int godina); | |
| int main() { | |
| int dan = 0, mjesec, godina; | |
| long broj_dana = 0; | |
| long broj_dana_1900; | |
| printf("Unesite datun: "); | |
| scanf("%d %d %d", &dan, &mjesec, &godina); | |
| printf("Unijesi ste datum %d. %d. %d.\n", dan, mjesec, godina); | |
| // broj dana od 1. 1. 1. do 16. 4. 2020. | |
| broj_dana = broj_dana_do_datuma(dan, mjesec, godina); | |
| printf("Proslo je %ld dana.\n", broj_dana); | |
| broj_dana_1900 = broj_dana_do_datuma(1, 1, 1900); | |
| int dan_u_sedmici = (broj_dana - broj_dana_1900) % 7; | |
| printf("Taj dan je bio "); | |
| switch (dan_u_sedmici) { | |
| case 0: | |
| puts("ponedeljak"); | |
| break; | |
| case 1: | |
| puts("utorak"); | |
| break; | |
| case 2: | |
| puts("srijeda"); | |
| break; | |
| case 3: | |
| puts("cetvrtak"); | |
| break; | |
| case 4: | |
| puts("petak"); | |
| break; | |
| case 5: | |
| puts("subota"); | |
| break; | |
| case 6: | |
| puts("nedelja"); | |
| break; | |
| } | |
| // zadatak 2 | |
| // koliko nedelja padne na prvi u mjesecu od 1.1.1901. do 31.12.2000. | |
| for (godina = 1901; godina <= 2000; godina++) { | |
| for (mjesec = 1; mjesec <= 12; mjesec++) { | |
| if ((broj_dana_do_datuma(1, mjesec, godina) - broj_dana_1900) % 7 == 6) { | |
| printf("Dana 1. %d. %d. je bila nedelja\n", mjesec, godina); | |
| } | |
| } | |
| } | |
| return 0; | |
| } | |
| // Definicija | |
| long broj_dana_do_datuma(int dan, int mjesec, int godina) { | |
| // broj dana od 1. 1. 1. | |
| long broj_dana = broj_dana_do_godine(godina); | |
| broj_dana += broj_dana_do_mjeseca(mjesec, godina); | |
| broj_dana += dan - 1; | |
| return broj_dana; | |
| } | |
| long broj_dana_do_mjeseca(int mjesec, int godina) { | |
| long broj_dana = 0; | |
| // ako je mjesec 1, broj_dana += 0; | |
| // mjesec 2, broj_dana += 31; | |
| // mjesec 3, broj_dana += 31; broj_dana += 29; | |
| switch (mjesec) { | |
| case 12: | |
| broj_dana += 30; | |
| case 11: | |
| broj_dana += 31; | |
| case 10: | |
| broj_dana += 30; | |
| case 9: | |
| broj_dana += 31; | |
| case 8: | |
| broj_dana += 31; | |
| case 7: | |
| broj_dana += 30; | |
| case 6: | |
| broj_dana += 31; | |
| case 5: | |
| broj_dana += 30; | |
| case 4: | |
| broj_dana += 31; | |
| case 3: | |
| broj_dana += 28 + da_li_je_prestupna(godina); | |
| case 2: | |
| broj_dana += 31; | |
| } | |
| return broj_dana; | |
| } | |
| int da_li_je_prestupna(int godina) { | |
| return (godina % 4 == 0 && godina % 100 != 0) || (godina % 400 == 0); | |
| } | |
| long broj_dana_do_godine(int godina) { | |
| long broj_dana = 0; | |
| int i; | |
| // prvi dio - koliko je dana proslo do te godine | |
| for (i = 1; i < godina; i++) { | |
| if (da_li_je_prestupna(i)) { | |
| broj_dana += 366; // ako je prestupna | |
| } else { | |
| broj_dana += 365; // ako nije prestupna | |
| } | |
| } | |
| return broj_dana; | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment