Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Jaki to dzien tygodnia?

Ostatnio zmodyfikowano 2015-04-21 15:00
Autor Wiadomość
darko202
» 2015-04-14 15:09:48
1. to jest Twój algorytm !!
możesz to zrobić na różne sposoby, ale to Ty masz go napisać :)



2.
założyłem że piszesz to do szkoły
a tam najczęściej trzeba to napisać w prosty sposób bez wodotrysków ( użycie metod <ctime> )

3.
przyjąłem, że założyłeś
>>Najpierw bym ustalił jaki to dzień 01.01.1900

czyli jesteś w stanie ustalić jaki to dzień 1.01.1901
itd.
tworzysz funkcję która ustala jaki dzień  tygodnia jest np. 1.01.1996.
przyda się w tym
 
4.
funkcja na rok przestępny
http://pl.wikipedia.org/wiki​/Rok_przest%C4%99pny

5.
a potem liczysz ile jest dni w ostatnim roku
itd.


to jest Twój algorytm !!
spróbuj zbudować własny algorytm,
bo np. rada - którą chyba oczekujesz - przeczytaj  
http://www.algorytm.org​/przetwarzanie-dat​/wyznaczanie-dnia-tygodnia.html
nie jest budująca dla Ciebie :(






P-130880
wojtek.997
Temat założony przez niniejszego użytkownika
» 2015-04-20 20:06:00
a wiec wymyslilem takie cos:

#include <iostream>

using namespace std;
string dni (char znak)
    {
        switch (znak)
        {
            case '1' : return 0; break;
            case '2' : return 31; break;
            case '3' : return 59; break;
            case '4' : return 90; break;
            case '5' : return 120 ; break;
            case '6' : return 151; break;
            case '7' : return 181; break;
            case '8' : return 212; break;
            case '9' : return 243; break;
            case '10' : return 273 break;
            case '11' : return 304; break;
            case '12' : return 334; break;
        }
    }
string miesiac (char znak1)
    {
            switch(znak1)
            {
            case '1' : return "styczen"; break;
            case '2' : return "luty"; break;
            case '3' : return "marzec"; break;
            case '4' : return "kwiecien"; break;
            case '5' : return "maj" ; break;
            case '6' : return "czerwiec"; break;
            case '7' : return "lipiec"; break;
            case '8' : return "sierpien"; break;
            case '9' : return "wrzesien"; break;
            case '10' : return "pazdziernik"; break;
            case '11' : return "listopad"; break;
            case '12' : return "grudzien"; break;
            }
    }
int main()
{
    int rok;
    cout<<"Podaj rok"<<endl;
    cin>>rok;
    if (rok>=1900 && rok<=2100)
        {
        if (rok%4==0 && rok%100!=0 || rok%400==0)
            cout<<"przestepny"<<endl;
        else
            cout<<" nie przestepny"<<endl;
        }
    else
        {
            cout <<" Rok nie zawiera sie w przedziale 1900-2100"<<endl;
        }

    cout<<"podaj miesiac"<<endl;
    char a;
    cin>>a;
    cout<<miesiac(a)<<" " <<rok<<endl;
    cout<<"podaj dzien miesiaca"<<endl;
    char x;
    cin>>x;
    x=(x+dni(a))%7;
    cout<<x;

    return 0;
}


wylicza on miedzy innymi dzien tygodnia dla dowolnego dnia roku "zerowego" (w ktorym wiem ze 1.1.1900 to jest poniedzialek)
ale jak to uogólnić by wyliczal dzien tygodnia np dla daty 25.2.1953?

poza tym, przy probie kompilacji wyskakuja dziwne bledy...
co zrobic? jak zmienic??
prosze o pomoc darko202 :)
P-131225
darko202
» 2015-04-21 15:00:45
w Visual Studio widać błędy kompilacji :

1.
string dni (char znak)
    {
        switch (znak)
        {
            case '1' : return 0; break; //zwracasz typ liczbowy np. int
...
            case '10' : return 273 break; //brak ;
...
//zwracasz typ liczbowy np. int
dlatego musisz to jakoś zmienić np.
int dni (char znak)

//brak ;

2.

string miesiac (char znak1)
    {
            switch(znak1)
            {
            case '1' : return "styczen"; break;
...

//jest błąd w wywołaniu
cout<<miesiac(a)<<" " <<rok<<endl;

* rozwiązaniem jest dodanie nagłówka
#include <string>

lub zamienić na
cout<<miesiac(a).c_str()<<" " << rok <<endl;

poczytaj np. http://cpp0x.pl/dokumentacja​/standard-C++/string/c_str/66
http://anaturb.net/C​/string_exapm.htm

3.
namierz błąd w algorytmie bo 
29.12.1998  pokazuje jako  styczeń
 
4.
funkcja dzien nie uwzględnia roku przestępnego

5.
masz już dzień na 1.01 kolejnego roku
teraz musisz policzyć
a)
( dzień(12) + 29  )  - którym dniem w roku jest badany dzień np. 29.12.1998 
b)
( dzień(12) + 29  )%7  mamy zmianę od 1 stycznia  np. 5
c)
mając 1.01.1998 czwartek
 wiemy którym dniem tygodnia jest badany dzień

powodzenia :)
P-131248
1 « 2 »
Poprzednia strona Strona 2 z 2