Jestem nowa, to moje pierwsze pytanie. I z góry przepraszam, jeżeli dałam do złego wątku, jednak nie widzę za dużej różnicy pomiędzy kategorią 'nasze projekty', a 'programowanie'. Ja chcę się tutaj pochwalić, ale i zapytać, więc wybrałam kategorię 'programowanie'.
O co ogólnie chodzi? A więc po obejrzeniu 5 (i pół 6) odcinków z kanału na youtubie postanowiłam stworzyć samodzielny projekt. Nie do końca ogarnęłam tablice, więc nie użyłam ich w tym programie. Jego zadaniem było pokazanie i liczenie aktualnej godziny, po podaniu przez użytkownika czasu. No i prezentuje się tak:
cout << "Ktora jest godzina?" << endl;
cout << "Najpierw wpisz godzine, nastepnie minuty, a potem sekundy" << endl;
cout << "Przyklad 13, 22 i 49" << endl;
cout << "Napisz godzine w formacie 24 godzinnym" << endl;
cout << "Godzina: ";
cin >> h;
cout << "Minuta: ";
cin >> minu;
cout << "Sekunda: ";
cin >> s;
Sleep(1000);
system("cls");
for (;;)
{
if (s<60)
{
if (minu<60)
{
if (h<24)
{
if (h<10)
cout << "0";
cout << h << ":";
if (minu<10)
cout << "0";
cout << minu << ":";
if (s<10)
cout << "0";
cout << s << endl;
s++;
Sleep(1000);
system("cls");
}
else
{h=0;}
}
else
{h++; minu=0;}
}
else
{minu++; s=0;}
}
(Oczywiście zmienne i reszta są, ale to za chwilę) Program działa perfekcyjnie. I tu pojawia się moje pierwsze pytanie dotyczące programowania, czy można ten kod skrócić? Wystarczy mi odpowiedź, że można np. używając tablic (Da mi to do zrozumienia, żebym kiedyś wróciła i skróciła ten program)
Teraz dalsza część. Pokazałam program bratu, który postanowił podnieść mi poprzeczkę i poprosił o zrobienie programu pokazującego datę i godzinę. Myślę sobie "Dobra, zrobię to ze switch case". Wszystko jest ok, do momentu kiedy zabieram się za programowanie daty. Chciałam zrobić kopiuj, wklej, ale szybko się zorientowałam, że muszę napisać od początku. Problem natrafiam już z ustaleniem roku. A mianowicie czy jest on przestępny czy nie. Wiem, że do obliczenia jego przestępności jest potrzebny warunek podzielności przez 4. Jednak jest pewien podstęp, jeżeli rok dzieli się przez 100, to nie jest przestępny. A jeżeli dzieli się przez 400, to jednak znowu jest. Moje pytanie to jak stworzyć warunek, który sprawdza, czy rok jest przestępny. Jeżeli ktoś zna jakiegoś linka do dobrego tłumaczenia jak to zrobić albo potrafi to wytłumaczyć to będę bardzo wdzięczna. I prosiłabym tłumaczyć na język ludzki, z drobnym użyciem słów będących w odcinkach 1-6.
No i mój aktualny kod, nad którym zaczęłam pracować wygląda tak:
#include <iostream>
#include <windows.h>
using namespace std;
int h;
int minu;
int s;
int d;
int mie;
int r;
char wybor;
int main()
{
cout << "=====================" << endl;
cout << "1. Godzina" << endl;
cout << "2. Data" << endl;
cout << "3. Data i godzina" << endl;
cout << "=====================" << endl;
cin >> wybor;
wybor=getch();
switch(wybor)
{
case '1':
{
cout << "Ktora jest godzina?" << endl;
cout << "Najpierw wpisz godzine, nastepnie minuty, a potem sekundy" << endl;
cout << "Przyklad 13, 22 i 49" << endl;
cout << "Napisz godzine w formacie 24 godzinnym" << endl;
cout << "Godzina: ";
cin >> h;
cout << "Minuta: ";
cin >> minu;
cout << "Sekunda: ";
cin >> s;
Sleep(1000);
system("cls");
for (;;)
{
if (s<60)
{
if (minu<60)
{
if (h<24)
{
if (h<10)
cout << "0";
cout << h << ":";
if (minu<10)
cout << "0";
cout << minu << ":";
if (s<10)
cout << "0";
cout << s << endl;
s++;
Sleep(1000);
system("cls");
}
else
{h=0;}
}
else
{h++; minu=0;}
}
else
{minu++; s=0;}
}
}
case '2':
{
cout << "Jaka jest dzisiaj data?" << endl;
cout << "Najpierw wpisz dzien, nastepnie miesiac, a potem rok" << endl;
cout << "Przyklad 13, 9 i 2016" << endl;
cout << "Napisz godzine w formacie 24 godzinnym" << endl;
cout << "Dzien: ";
cin >> d;
cout << "Miesiac: ";
cin >> mie;
cout << "Rok: ";
cin >> r;
Sleep(1000);
system("cls");
for (;;)
{
if (???)
}
}
Jak widać nie zrobiłam za dużo z poprzednim kodem :v
Pozdrawiam,
Wirla
Trochę lat minęło i w międzyczasie ten program napisałam, więc wkleję go tutaj jeżeli ktoś jest zainteresowany :D
#include <iostream>
#include <ctime>
using namespace std;
int czas, dni, month;
int main(){
czas = time(0);
dni = (czas % 31557600) / 86400;
for (month = 1; dni > 27; month++) {
if(month == 11 || month == 9 || month == 6 || month == 4) dni -= 30;
else if(month == 2)
if(((czas / 31557600 + 1970) % 4 == 0 && (czas / 31557600 + 1970) % 100 != 0) || (czas / 31557600 + 1970) % 400 == 0) dni -= 29;
else dni -= 28;
else dni -= 31;
}
if(dni < 10) cout << "0";
cout << dni << ":";
if(month < 10) cout << "0";
cout << month << ":";
cout << (czas / 31557600) + 1970 << " ";
if((czas / 3600) % 24 + 2 < 10) cout << "0";
cout << (czas / 3600) % 24 + 2 << ":";
if((czas / 60) % 60 < 10) cout << "0";
cout << (czas / 60) % 60;
return 0;
}