• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Podstawowy błąd amatora... a ja dalej nie rozumiem. Liczby (pseudo)losowe

Object Storage Arubacloud
–1 głos
389 wizyt
pytanie zadane 31 stycznia 2018 w C i C++ przez robzon1916 Początkujący (310 p.)
edycja 31 stycznia 2018 przez robzon1916

Znacie ten moment kiedy uczycie się kursu, umiecie i rozumiecie "zaawansowane" mechanizmy a wykładacie się na rzeczy tłumaczonej w pierwszych odcinkach? Frustruje mnie to niesamowicie i jest to najczęściej moją ścianą przed dalszą nauką - oto mój główny problem (również w matematyce tak miałem).

Skończyłem kurs C++ wraz z solidnymi notatkami (uczylem sie systematycznie codziennie) a wywalam się BARDZO CZĘSTO na podstawach.

Myślę , że za mało zrozumiałem z kursu oraz za mało programów samodzielnie napisałem i porwałem się z motyką na słońce chcąc odrazu napisać pokera.

Oto kod zmienionej funkcji Pana Mirosława ( http://miroslawzelent.pl/kurs-c++/losowanie-bez-powtorzen-php-c++-gra-milionerzy/ ) , która ma bez powtórzeń dać 9 liczb (chce je pozniej zamienić na karty itd.). 

W mojej grze chciałem dodać ją, jako oddzielną funkcje.

#include <iostream>
#include <windows.h>
#include <time.h>

using namespace std;


int losowanie(int r)
{
        srand(time(NULL))
        int ile_kart=52;  // z ilu kart losujemy?
        int ile_wylosowac = 9;  // ile kart wylosowac?
        int ile_juz_wylosowano = 0;  // zmienna pomocnicza
        int *wylosowane = new int [ile_wylosowac+1];  // rezerwujemy tablice
        bool losowanie_ok;

        for (int i=1; i<=ile_wylosowac ;i++)
        {
            do
            {
             int liczba = rand()%ile_kart+1;   // losowanie w C++
             losowanie_ok = true;             // ustawienie bool na true

             for (int j=1; j<=ile_juz_wylosowano; j++)
             {
                 // sprawdzamy czy liczba nie zostala juz wylosowana?
                 if (liczba==wylosowane[j]) losowanie_ok=false;
             }

             if (losowanie_ok==true)
             {
                 // mamy unikatowa liczbe, zapiszmy j¹ do tablicy
                 ile_juz_wylosowano++;
                 wylosowane[ile_juz_wylosowano]=liczba;
             }
            } while (losowanie_ok!=true)
        }

Błędy :
main.cpp||In function 'int losowanie(int)':|
main.cpp|11| error: expected ';' before 'int'|
main.cpp|21| error: 'ile_kart' was not declared in this scope|
main.cpp|37| error: expected ';' before '}' token|

Dokładnie rozumiem , że to są podstawy i proste błędy ale moim problemem jest to , że ilekroć uczę się czegoś nowego, robię notatki, wszystko rozumiem to gdy idę w głąb nauki mam luki w podstawach i to mnie strasznie frustruje bo dużo czasu poświęcam na naukę. Może powinienem się w jakiejś innej formie uczyć? Za mało się skupiam? Sam niewiem. Zwyczajnie proszę o rady życiowe i na temat tego arcyproblemu.

komentarz 31 stycznia 2018 przez PreZmyK Pasjonat (21,470 p.)
Znamy :)
komentarz 31 stycznia 2018 przez niezalogowany
przywrócone 31 stycznia 2018
Przecież wystarczy przeczytać komunikat "przed intem brakuje średnika" i tak samo przed pętlą zamykającą for (pętla do {...} while() musi być zakończona średnikiem po nawiasach). Kompilator dokładnie wskazuje gdzie masz błąd i jak go naprawić.
komentarz 31 stycznia 2018 przez robzon1916 Początkujący (310 p.)
Oto efekt mojej frustracji. Before czytam jako after. Dziękuje problem z kodem rozwiązany.

Jakieś rady jeżeli chodzi o robienie podstawowych błędów i uczenie się? Domyślam się , że nie jestem pierwszym , który to pytanie zadaje. Czy jest to temat na osobny watek?
komentarz 31 stycznia 2018 przez Arkadiusz Sikorski Pasjonat (20,160 p.)
Pisać i ćwiczyć. Próbuj pisać coś sam, co Ci przyjdzie do głowy, a następnie sprawdzaj, czy działa jak należy oraz czy dało się to napisać lepiej i sprytniej.
komentarz 1 lutego 2018 przez Pac Plus Mądrala (5,560 p.)

@robzon1916, najlepiej uczeć się na błędach. Zacznij zwracać uwagę na to co mówi ci kompilator i zapamiętywać błędy. Gdy zaczniesz pisać większe programy będziesz zmuszony używać jakiegoś debugera, (może gdb) i własnoręcznie robić tracing algorytmów.

1 odpowiedź

0 głosów
odpowiedź 4 lutego 2018 przez NiCKo Początkujący (490 p.)
Jeżeli sam uważasz, że piszesz za mało programów, to zmień to. Wywalanie się na podstawach, to brak ich opanowania. Dodatkowo zauważyłem, że masz problemy z koncentracją - "czytam before, zamiast after". Spróbuj się wyciszyć przed nauką, wyłączyć wszelkie rozpraszacze i do dzieła! I przede wszystkim się nie poddawaj! Jesteś w stanie zmienić aktualny stan.

Podobne pytania

0 głosów
3 odpowiedzi 858 wizyt
0 głosów
13 odpowiedzi 5,541 wizyt
pytanie zadane 9 grudnia 2015 w C i C++ przez Avernis Nałogowiec (27,400 p.)
0 głosów
0 odpowiedzi 206 wizyt
pytanie zadane 1 kwietnia 2017 w Offtop przez WireNess Stary wyjadacz (11,240 p.)

92,572 zapytań

141,422 odpowiedzi

319,644 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...