Pokaż wyniki 1 do 8 z 8

Temat: [C++]Biblioteka <ctime>

  1. #1
    Zarejestrowany
    Jan 2009
    Postów
    19

    Domyślnie [C++]Biblioteka <ctime>

    Witaam całe forumhack. Postaram się w tym artykule zaprezentować biblioteke ctime oraz jej operatorów. A więc może zacznijmy od ich wymienienia:
    - rand()
    - srand()
    - time()
    To są te najważniejsze z nich . Zacznę od podania wam kodu programu a w zasadzie mini mini gry . kod:
    Kod:
    #include <iostream>
    #include <conio.h>
    #include <ctime>
    using namespace std;
    
    int random(int nMin, int nMax) 
    {
      return rand() % nMax + nMin
    }
    
    int main()
    {
      int nLiczba1;
      cout <<"Wpisz liczbe aby kulnac kostka: ";
      cin >>nLiczba1;
      
      srand (static_cast<unsigned int>(time(NULL)));
      
      cout <<"Wylosowana liczba to "<< random(1, 6) <<endl;
      
      getch();
      return 0;
    }
    Tutaj mamy kod gry. Możemy ją nazwać ZgadujZgadula ponieważ to my zgadujemy liczbę a komputer ją wybiera, ale nie o tym mowa. Przejdźmy do opisu kodu. Postaram się wam go opisać krok po kroku a mianowicie zacznijmy od includowania wszystkiego co nam będzie potrzebne oraz dodanie std przy każdym "cout" a mianowicie ten kodzik:
    Kod:
    ]#include <iostream>
    #include <conio.h>
    #include <ctime>
    using namespace std;
    Następnym fragmentem kodu będzie już jeden z operatorów ctime'a a dokładnie funkcja random (ang. losowy) i obok zmienne oraz ich wartości.
    Kod:
    int random(int nMin, int nMax) 
    {
      return rand() % nMax + nMin
    }
    Nie będę opisywał operatora random ponieważ jak już wiadomo znaczy losowy i każdy powinien się domyślić co to jest tym bardziej że podałem na czym będzie polegać ta gra,aplikacja. Obok funkcji w nawiasach które oznaczają funkcję mamy podane jak widać zmienne "int" oraz ich wartości czyli nMin oraz nMax. W funkcji znajduje się operator rand(). Jego zadaniem jest zwrócenie nam losowej liczby która losuje nasz komputer zaś i wywołuje srand.Skoro już jesteśmy przy srand przejdźmy do daleszej części kodu. I ZAPAMIĘTAJCIE TO:

    rand oraz srand są bliskoznaczne dlatego nie będę ich opisywał. Jeszcze jedna rada dla was co do tych 2 operatorów że jeden nie poradzi sobie bez drugiego więc jeżeli piszemy to od razu 2 bo to co chcemy się nie wykona lub wykona się źle !.

    Jeżeli już wszystko gotowe przejdźmy do ostatniej już części kodu a dokładnie:
    Kod:
    int main()
    {
      int nLiczba1;
      cout <<"Wpisz liczbe aby kulnac kostka: ";
      cin >>nLiczba1;
      
      srand (static_cast<unsigned int>(time(NULL)));
      
      cout <<"Wylosowana liczba to "<< random(1, 6) <<endl;
      
      getch();
      return 0;
    }
    Teraz podajemy liczbę aby rzucić kostką i wykulać liczbę oczywiście mogło by się odbyć to bez tego ale tak jest bardziej przejżyście. Funkcje srand już umiecie więc przejdźmy do dalszego etapu. static_cast jest to niezbędne narzędzie do rzutowania a wygląda to następująco "static_cast<typ>(wyrażenie)" natomiast u nas odbywa się to już na gotowym przykładzie a dokladniej <unsigned int> - typ (time(NULL)) - wyrażenie. Więc już wiecie mniej więcej teraz dokładniej wam troche opisze operatora time() bo nie było o nim ani słowa. W time jest NULL co nazywamy wskaźnikiem zerowym. W tym przypadku go używamy ponieważ nie mamy czegoś ważnego do napisania w tym miejscu. Natomiast samo time() oznacza "ziarno" jak piszą to w kursach więc posłuże się tym samym dla funkcji srand(). Teraz widzicie jak ważna jest ta budowa funkcji całej biblioteki ctime. Jeżeli naruszycie jedną rzecz to reszta nie wyjdzie. Po podaniu liczby i zapisaniu najważniejszej linijki następuje losowanie liczby przez nasz komputer. Podziele to na jeszcze jeden kawałek kodu ponieważ w jednym się nie zmieściłem i wam będzie wygodniej. :
    Kod:
    cout <<"Wylosowana liczba to "<< random(1, 6) <<endl;
      
      getch();
      return 0;
    Teraz jak widzimy jest tutaj funkcja random w której znajdują się przypadkowe liczby które oczywiście można zmienić. Liczby są potrzebne do losowania. Tak samo mogliśmy poprosić o 2 liczby wtedy byłoby to nLiczba1 oraz nLiczba2. i wpisać to w miejsce gdzię są cyfry. Wtedy wasze podane liczby komputer będzie mieszał i losował. No to tyle. Za wszelkie niejasności w kodzie najmocniej przepraszam !!! i proszę o komentarz co jest źle to zaraz poprawie.

    Pozdrawiam RoN
    Może jestem balasem może jestem pedałem ale jedno jest pewne: Nigdy nie lamie

  2. #2
    Zarejestrowany
    Jan 2007
    Postów
    97

    Domyślnie

    Myslalem ze cos badziej zaawansowanego zaprezentujesz, ogolnie ok ,
    brak srednika: return rand() % nMax + nMin ;
    Człekowstret tryska z moich ust, parszywy kraj...

    perl -e 's^^i6([email protected]*^+s;\*; Wo\$_\;~;.s![(_\!]!l!g+y"i\[email protected]"Hro"+tr-6;~-ed\012-;print'
    --------------------------------------------------------------
    Most Intelligent Customers Realize Our Software Only Fools Teenagers

  3. #3
    Avatar GSG-9
    GSG-9 jest offline Shapeshifter
    Zarejestrowany
    Jul 2007
    Skąd
    C:\Perl\bin
    Postów
    1,578

    Domyślnie

    Natomiast samo time() oznacza "ziarno"
    ja mam wstret do c, ale imho powinno byc seed.
    War, war never changes.

  4. #4
    Zarejestrowany
    Jan 2009
    Postów
    19

    Domyślnie

    tak zmienie to dziękuje za podpowiedzi. i następnym artykułem was zaskocze ponieważ mam już go gotowego i obiecuje że nie będziecie zawiedzeni. !!!

    pozdro
    Może jestem balasem może jestem pedałem ale jedno jest pewne: Nigdy nie lamie

  5. #5
    Zarejestrowany
    Jan 2009
    Postów
    836

    Domyślnie

    RoN:
    rand oraz srand są bliskoznaczne dlatego nie będę ich opisywał. Jeszcze jedna rada dla was co do tych 2 operatorów że jeden nie poradzi sobie bez drugiego więc jeżeli piszemy to od razu 2 bo to co chcemy się nie wykona lub wykona się źle !.


    Jak dla mnie to przykładziki są już na mniej l2p-owkim poziomie ale nadal popełniasz jeden błąd - komentarze i opisy są dla osób które C++ już umieją. Nie objaśniasz w przystępny sposób jak to działa i dlaczego. Jak l2p ma się nauczyć co oznacza rand i srand?

    srand to wnioskuję odpowiednik starego randomize() - czyli inicjalizatora rand.

    albo:
    int random(int nMin, int nMax)
    {
    return rand() % nMax + nMin
    }

    Podałeś że inicjujemy min i max typu int. To wiadomo. A jak to się ma z % ?
    Funkcja jest fajnie napisana - tylko mówię - przykłady i opisy które podajesz są czytelne tylko dla ludzi znających C++ - a przecież nie dla nich piszesz - choć muszę przyznać, że i ja się nauczyłem nowego RANDA:P bo z % nie znałem i podoba mi się

  6. #6
    Zarejestrowany
    Jan 2009
    Postów
    8

    Domyślnie

    Funkcja jest napisana BŁĘDNIE. Nie działa tak jak powinna.
    W tym momencie jest tak:
    Kod:
    ...
    return rand() % nMax + nMin;
    ...
    Jak powinno być? Dokładnie tak:
    Kod:
    ...
    return rand() % (nMax - nMin + 1) + nMin;
    ...
    Pozdrawiam

  7. #7
    Zarejestrowany
    Dec 2008
    Postów
    91

    Domyślnie

    Jak dla mnie od razu powinno lecieć do /dev/null. Nie chcę wiedzieć kto cię C++ uczył, bo to co reprezentujesz to jest żałosne. Ale do rzeczy. Co to do cholery ma do biblioteki ctime? Biblioteka ctime służy do wykonywania różnych operacji z czasem, jak zresztą sama nazwa wskazuje. Oto lista funkcji jakie zawiera: http://www.cplusplus.com/reference/clibrary/ctime/ Widzisz tu gdzieś rand i srand? Bo ja nie. Ale podpowiem ci. Obie te funkcje znajdują się w bibliotece cstdlib. Stwierdzenie że funkcja time oznacza ziarno jest co najmniej śmieszne. Time oznacza czas. Polecam kurna lekturę słownika polsko-angielskiego. Już nie mówiąc o kompletnym braku zrozumienia jakichkolwiek pojęć związanych z programowaniem. Używasz słowa operator jako synonimu słowa funkcja (chyba, bo to ciężko wyczaić ocb). Weźmy np. na warsztat takie stwierdzenie:
    Obok funkcji w nawiasach które oznaczają funkcję mamy podane jak widać zmienne "int" oraz ich wartości czyli nMin oraz nMax.
    Po pierwsze, cała ta linia do definicja funkcji. To co ty nazywasz funkcją to jest w rzeczywistości jej nazwa! Nawiasy nie oznaczają funkcji. W nawiasach tych nie znajdują się zmienne, tylko argumenty funkcji, a int to ich typy, co więcej nMin i nMax to nie są wartości tych zmiennych (czyli poprawnie argumentów) tylko ich nazwy.

    Nie wyciągam tu wszystkiego, ale takie coś powinno zostać usunięte. Lepiej czegoś się nie dowiedzieć, niż dowiedzieć się źle - a takie efekty będzie wywoływać ten "tutorial" - będzie wprowadzać ludzi w błąd.

    Podsumowując, wnioskuję o przesunięcie postu do /dev/null.

    Ps. Przepraszam innych userów, że się tak zbulwersowałem, ale nienawidzę jak ktoś tak kaleczy C++ ;-)

  8. #8
    Zarejestrowany
    Jan 2009
    Postów
    8

    Domyślnie

    Cytat Napisał Sayane Zobacz post
    Jak dla mnie od razu powinno lecieć do /dev/null. Nie chcę wiedzieć kto cię C++ uczył, bo to co reprezentujesz to jest żałosne. Ale do rzeczy. Co to do cholery ma do biblioteki ctime? Biblioteka ctime służy do wykonywania różnych operacji z czasem, jak zresztą sama nazwa wskazuje. Oto lista funkcji jakie zawiera: http://www.cplusplus.com/reference/clibrary/ctime/ Widzisz tu gdzieś rand i srand? Bo ja nie. Ale podpowiem ci. Obie te funkcje znajdują się w bibliotece cstdlib. Stwierdzenie że funkcja time oznacza ziarno jest co najmniej śmieszne. Time oznacza czas. Polecam kurna lekturę słownika polsko-angielskiego. Już nie mówiąc o kompletnym braku zrozumienia jakichkolwiek pojęć związanych z programowaniem. Używasz słowa operator jako synonimu słowa funkcja (chyba, bo to ciężko wyczaić ocb). Weźmy np. na warsztat takie stwierdzenie:
    Po pierwsze, cała ta linia do definicja funkcji. To co ty nazywasz funkcją to jest w rzeczywistości jej nazwa! Nawiasy nie oznaczają funkcji. W nawiasach tych nie znajdują się zmienne, tylko argumenty funkcji, a int to ich typy, co więcej nMin i nMax to nie są wartości tych zmiennych (czyli poprawnie argumentów) tylko ich nazwy.

    Nie wyciągam tu wszystkiego, ale takie coś powinno zostać usunięte. Lepiej czegoś się nie dowiedzieć, niż dowiedzieć się źle - a takie efekty będzie wywoływać ten "tutorial" - będzie wprowadzać ludzi w błąd.

    Podsumowując, wnioskuję o przesunięcie postu do /dev/null.

    Ps. Przepraszam innych userów, że się tak zbulwersowałem, ale nienawidzę jak ktoś tak kaleczy C++ ;-)
    Zgadzam się w 100%! Ten gość w ogóle nie wie co wypisuje.

Podobne wątki

  1. Odpowiedzi: 2
    Autor: 10-14-2007, 13:21
  2. Odpowiedzi: 7
    Autor: 09-26-2007, 00:08
  3. Biblioteka libnet
    By Aniolek in forum Linux
    Odpowiedzi: 2
    Autor: 05-02-2007, 10:05
  4. Wykres - Biblioteka
    By Szyba in forum C/C++
    Odpowiedzi: 0
    Autor: 01-25-2007, 20:59
  5. Biblioteka Do nauki c++
    By TouchThis in forum C/C++
    Odpowiedzi: 5
    Autor: 06-29-2006, 05:20

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52