Jaki to dzien tygodnia?
Ostatnio zmodyfikowano 2015-04-21 15:00
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%99pny5. 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.htmlnie jest budująca dla Ciebie :( |
|
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 :) |
|
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/66http://anaturb.net/C/string_exapm.htm3. 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 :) |
|
1 « 2 » |