Jel netko možda zna kako bi najlakše izračunao razliku između dva datuma koja unosi korisnik, moram uzeti u obzir koliko dana ima mjesec i moram paziti na prijestupne godine...
Racunjanje razlike datuma u c-u?
- poruka: 8
- |
- čitano: 5.197
- |
- moderatori:
Lazarus Long, XXX-Man, vincimus
- +/- sve poruke
- ravni prikaz
- starije poruke gore
slični zadatak imam za napravit, ali u javi...
Najlaksi nacin (po meni) je izracunati ukupan broj dana jednoga i drugoga i oduzeti ih.
Ovaj dole kod (c++) racuna ukupan broj dana za zadani datum
my_time.ukupno_dana=my_time.dan+my_time.godina*365;
int n=0;
for(int i=0;i<my_time.godina;i++)
{
if (i%4==0 && i%100>0)
my_time.ukupno_dana+=1;
else if (i%400==0)
my_time.ukupno_dana+=1;
else if (my_time.godina==0)
my_time.ukupno_dana+=1;
}
if (my_time.mjesec>2)
{
if (my_time.godina%4==0 && my_time.godina%100>0)
my_time.ukupno_dana+=29;
else if (my_time.godina%400==0)
my_time.ukupno_dana+=29;
else if (my_time.godina==0)
my_time.ukupno_dana+=29;
else my_time.ukupno_dana+=28;
}
for(int i=1;i<my_time.mjesec;i++)
{
if(i==1 ||i==3 ||i==5 ||i==7 ||i==8 ||i==10 ||i==12)
my_time.ukupno_dana+=31;
else if (i==2);
else my_time.ukupno_dana+=30;
}
Javu neznam pa kod nemogu prepisati ali mislim da ti nebi terbao biti problem, sto se tice c-a samo ovaj kod ubaci u funkciju i posalji joj podatke o danu mjesecu i godini i nakraju dodaj return. (nemoj zaboravit imena u kodu promjenit na ona koja stavis u funkciji)
najmanji problem je konvertirat u javu, sintaksa je skoro pa ista
thx, uspio sam rješit
Ovo bi bilo nešto jednostavno, samo se iskoriste ugrađene funkcije u time.h biblioteci:
#include<stdio.h>
#include <time.h>
int main()
{
int dan1, mjesec1, godina1, dan2, mjesec2, godina2, razlika;
time_t p, k;
printf("Unesi prvi datum:\n");
printf("Unesi dan: ");
scanf("%d", &dan1);
printf("Unesi mjesec: ");
scanf("%d", &mjesec1);
printf("Unesi godinu: ");
scanf("%d", &godina1);
struct tm v1 = {0, 0, 0, dan1, mjesec1-1, godina1-1900};
printf("Unesi drugi datum:\n");
printf("Unesi dan: ");
scanf("%d", &dan2);
printf("Unesi mjesec: ");
scanf("%d", &mjesec2);
printf("Unesi godinu: ");
scanf("%d", &godina2);
struct tm v2 = {0, 0, 0, dan2, mjesec2-1, godina2-1900};
p = mktime(&v1);
k = mktime(&v2);
razlika = difftime(p, k) / (60 * 60 * 24);
printf("Razlika iznosi: %d dana", razlika);
return 0;
}
Za objašnjenja rada funkcija pogledaj ovdje.
U C# ima zgodna timespan klasa za takve stvari...
U C# ima zgodna timespan klasa za takve stvari...
To i jest bit stvari, čemu računati broj dana u mjesecu i prijestupne godine kad već imaju ugrađene klase za to.
Ja u c++ koristim ctime biblioteku za takve stvari, a u čistom c to bi bilo ovako
java isto ima klasu calendar, ali nesmijem koristit...
moram baš ovak sa forom.... glupo, al jbg kad profesor tak kaže....