Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

[Zadatak] Funkcija za odredjivanje broja dana izmedju dva zadata datuma

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] Funkcija za odredjivanje broja dana izmedju dva zadata datuma

[ Pregleda: 3368 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

lola1989

Član broj: 208362
Poruke: 2
*.matf.bg.ac.yu.



Profil

icon [Zadatak] Funkcija za odredjivanje broja dana izmedju dva zadata datuma14.01.2009. u 12:27 - pre 166 meseci
Napisati funkciju za odredjivanje broja dana izmedju dva zadata
datuma. Pomocu posebne funkcije proveriti da li je datum korektno zadat. Koristeci napisane
funkcije, za niz ulaza od kojih svaki sadrzi redni broj osobe i datum rodjenja, odrediti redni broj prve
najstarije osobe. Takodje, za svaku osobu odrediti i stampati njen horoskopski znak.

da li mi neko moze pomoci oko provere korektnosti datuma? s obzirom da svaki mesec ima razlicit br.dana, a tu su i prestupne god..... :-)

HVALA UNAPRED!
 
Odgovor na temu

emranonline
Emran Bajrami
Tu i tamo

Član broj: 105825
Poruke: 179
*.sa.hs-hkb.ba.



+1 Profil

icon Re: [Zadatak] Funkcija za odredjivanje broja dana izmedju dva zadata datuma19.01.2009. u 23:22 - pre 166 meseci
mozda moze i jednostavnije ali ovako sam ja to uradio.

Code:

#include <stdio.h>
#include <math.h>

int prestupnost(int godina) {
    if (godina%4==0 && (godina%100!=0 || godina%4==0))
        return 1; 
    else
        return 0; 

}

int provjera_datuma(int dan, int mjesec, int godina) {
    if (mjesec>12 || mjesec <1)
        return 0;

    if( mjesec==1 || mjesec==3 || mjesec==5 || mjesec==7 || mjesec==8 || mjesec==10 || mjesec==12) {
        if (dan>31 || dan <1)
            return 0;
    }
    if (mjesec==2) {
        if (prestupnost(godina)==1) {
            if (dan>29 || dan<1)
                return 0;
        }


        else {
            if (prestupnost(godina)==0)
                if (dan >28 || dan<1)
                    return 0;
        }
       }



    if (mjesec==4 || mjesec==6 || mjesec==9 || mjesec==1) {
        if (dan>30 || dan <1)
            return 0;

    }
    return 1;
}

int dani(int mjesec, int godina) {
    int ukupno=0,i;
    for (i=1; i<mjesec; i++) {
        if (i==2) {
            if (prestupnost(godina)==1)
                ukupno+=29;
            else
                ukupno+=28;
        }
        else if  (i==1 || i==3 || i==5 || i==7 || i==8 || i==10 || i==12) {
            ukupno+=31;
        }
        else {
            ukupno+=30;
        }
    }
    return (ukupno);

}


int period(int dan1, int dan2, int mjesec1, int mjesec2, int godina1, int godina2) {
    int i, ukupno=0;
    if (godina1>godina2) {
        for (i=godina2; i<godina1; i++) {
            if (prestupnost(i)==1)
                ukupno+=366;
            else
                ukupno+=365;

       }
        ukupno=ukupno + dani(mjesec1,godina1) - dani(mjesec2,godina2);
        ukupno=ukupno+dan1-dan2;

  }
  else if (godina1<godina2) {
    for (i=godina1; i<godina2; i++) {
        if (prestupnost(i)==1)
            ukupno+=366;
        else
            ukupno+=365;

    }
    ukupno= ukupno + dani(mjesec2, godina2) - dani(mjesec1,godina1);
    ukupno= ukupno+dan2-dan1;

  }
   else  if (godina1==godina2) {
        if (mjesec1>mjesec2) {
            ukupno= ukupno + dani(mjesec1,godina1) - dani(mjesec2,godina2);
            ukupno= ukupno +dan1-dan2;


        }
        else if (mjesec1<mjesec2){
            ukupno =ukupno + dani(mjesec2,godina2) - dani(mjesec1,godina1);
            ukupno=ukupno + dan2-dan1;


        }
        else if (mjesec1==mjesec2) {
            ukupno=ukupno+ dan1-dan2;

        }

    }
    return fabs(ukupno);


}


int main()
{
    int dan_prvi, mjesec_prvi, godina_prva,dan_drugi,mjesec_drugi,godina_druga,funkcija;
    do {
        printf("\n Unesite prvi datum (d,m,g): ");
        scanf("%d,%d,%d", &dan_prvi,&mjesec_prvi,&godina_prva);
        funkcija = provjera_datuma(dan_prvi,mjesec_prvi,godina_prva);
        if (funkcija==0)
            printf("\n Neispravan datum!");
    }while (funkcija!=1);
    do {
        printf("\n Unesite drugi datum (d,m,g): ");
        scanf("%d,%d,%d", &dan_drugi,&mjesec_drugi,&godina_druga);
        funkcija = provjera_datuma(dan_drugi,mjesec_drugi,godina_druga);
        if (funkcija==0)
            printf("\n Neispravan datum!");
    }while (funkcija!=1);
    printf("\n Izmedju datuma je proteklo %d dana. \n",period(dan_prvi, dan_drugi, mjesec_prvi,mjesec_drugi,godina_prva,godina_druga));
return 0;
}


 
Odgovor na temu

lola1989

Član broj: 208362
Poruke: 2
*.matf.bg.ac.yu.



Profil

icon Re: [Zadatak] Funkcija za odredjivanje broja dana izmedju dva zadata datuma21.01.2009. u 11:38 - pre 166 meseci
Hvala na pomoci,puno mi je znacilo!
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] Funkcija za odredjivanje broja dana izmedju dva zadata datuma

[ Pregleda: 3368 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.