ania653 Temat założony przez niniejszego użytkownika |
Wyszukiwanie piątków trzynastego » 2011-12-19 23:47:14 Witam! Mam ogromny problem :/ Jestem na pierwszym roku budownictwa i mam napisać program ,który wypisze mi trzy piątki trzynastego od podanej wcześniej daty , a ja jestem blondynką(w programowaniu)!!Pomimo przeczytania kursu ,ale gubię się w pierwszym stopniu :/ Znalazłam w internecie jakiś programik co wypisuje na podstawie daty podanej , dzien tygodnia,czyli jeszcze brakuje mi jakiejś pętli czy czegoś podobnego .Poza tym wydaje mi się ,że trzeba usunąć z tego programu poniżej jakieś nie potrzebne rzeczy aaaaa... i ten program poniżej coś się sypie przy string Pomożecie :-) #include "stdio.h" string * tydzien[] = { "poniedzialek", "wtorek", "sroda", "czwartek", "piatek", "sobota", "niedziela" }; int liczbaDni[] = { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 }; int przestepny( int rok ) { return(( rok % 4 == 0 && rok % 100 != 0 ) || rok % 400 == 0 ); } int dzienTygodnia( int dzien, int miesiac, int rok ) { int dzienRoku; int yy, c, g; int wynik; dzienRoku = dzien + liczbaDni[ miesiac - 1 ]; if(( miesiac > 2 ) &&( przestepny( rok ) == 1 ) ) dzienRoku++; yy =( rok - 1 ) % 100; c =( rok - 1 ) - yy; g = yy +( yy / 4 ); wynik =((((( c / 100 ) % 4 ) * 5 ) + g ) % 7 ); wynik += dzienRoku - 1; wynik %= 7; return wynik; } int main() { int m, r, d, wynik; printf( "Podaj od jakiej daty znajsc trzy nasptepne piatki trzynastego.\n" ); printf( "Podaj dzien:\n" ); scanf( "%d", & d ); printf( "Podaj miesiac:\n" ); scanf( "%d", & m ); printf( "Podaj rok:\n" ); scanf( "%d", & r ); wynik = dzienTygodnia( d, m, r ); printf( "Dzien tygodnia dla podanej daty to %s.\n", tydzien[ wynik ] ); getch(); return 0; } |
|
DejaVu |
» 2011-12-20 07:42:01 Za dużo by tłumaczyć...
#include <cstring> #include <clocale> #include <cstdio> #include <ctime>
time_t dajCzas( int dzien, int miesiac, int rok ) { tm czas; ::memset( & czas, 0, sizeof( czas ) ); czas.tm_year = rok - 1900; czas.tm_mon = miesiac - 1; czas.tm_mday = dzien; czas.tm_hour = 12; return::mktime( & czas ); }
void wyswietlDate( const tm & dane ) { char bufor[ 64 ]; strftime( bufor, sizeof( bufor ), "%#x (%A)", & dane ); printf( "%s\n", bufor ); }
#define DLUGOSC_DNIA 3600*24
int main() { ::setlocale( LC_ALL, "Polish" ); time_t czas = dajCzas( 13, 10, 2011 ); for( long znaleziono = 0; znaleziono < 3; czas += DLUGOSC_DNIA ) { tm data = *::localtime( & czas ); if( data.tm_wday == 5 && data.tm_mday == 13 ) { wyswietlDate( data ); znaleziono++; } } return 0; }
Dokumentacja |
---|
mktime | Konwertuje strukturę tm do time_t. (funkcja) |
---|
localtime | Konwertuje time_t na strukturę tm wyrażoną w czasie lokalnym. (funkcja) |
---|
tm | Przechowuje składowe daty i czasu w postaci liczb. (struktura) |
---|
time_t | Liczba całkowita, reprezentująca czas wyrażony w sekundach. (alias) |
---|
memset | Wypełnia pamięć bajtem. (funkcja) |
---|
strftime | Konwertuje strukturę tm na dowolnie sformatowaną datę lub czas. (funkcja) |
---|
|
|
ania653 Temat założony przez niniejszego użytkownika |
» 2011-12-20 14:07:55 Wielkie dzięki ,ale nie chodziło mi o to .Ten program powyżej odczytuje datę z systemu , a ja mam wpisać mu sama ,:( |
|
DejaVu |
» 2011-12-20 14:13:18 Cóż... udam, że Twojego posta nie czytałem... |
|
malan |
» 2011-12-20 14:13:50 |
|
ania653 Temat założony przez niniejszego użytkownika |
» 2011-12-20 15:53:03 Yyyyy... nie wiem jak wyrzucić zbytnio mam z kodu, kod odczytujący z systemu datę ;( |
|
DejaVu |
» 2011-12-20 17:18:39 W zasadzie to tracisz nasz czas. Nie znasz nawet podstaw programowania co oznacza, że czekasz na gotowca. Temat zamykam. Dostałaś szeroką lekturę i rozwiązanie praktycznie rzecz biorąc też. Jak się nie wie nic to najlepiej zacząć od początku, a początek znajdziesz tu: Kurs C++. |
|
« 1 » |