Losowość, Od zera do gier kodera

Losowość, Od zera do gier kodera
IS
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 9 lat
  • Postów:3
0
Kopiuj
// While - druga pętla warunkowa
#include <iostream>
#include <ctime>
#include <conio.h>
void main()
{
// wylosowanie liczby
srand ((int) time(NULL));
int nWylosowana = rand() % 100 + 1;
std::cout << "Wylosowano liczbe z przedzialu 1-100." << std::endl;
// pierwsza próba odgadnięcia liczby
int nWprowadzona;
std::cout << "Sprobuj ja odgadnac: ";
std::cin >> nWprowadzona;
// kolejne próby, aż do skutku - przy użyciu pętli while
while (nWprowadzona != nWylosowana)
{
if (nWprowadzona < nWylosowana)
std::cout << "Liczba jest zbyt mala.";
else
std::cout << "Za duza liczba.";
std::cout << " Sprobuj jeszcze raz: ";
std::cin >> nWprowadzona;
}
std::cout << "Celny strzal :) Brawo!" << std::endl;
getch();
}

Pierwszy błąd wykrywa już w 5 linijce, jest napisane tylko - In function 'int main()':
Udało mi się to obejść zamieniając void na int w 5-tej linijce kodu (nie mam pojęcia o co może chodzić - podobno void i int są zamienne).
Po zamianie void na int kompilacja zatrzymuje się na ósmej linijce kodu

Kopiuj
srand ((int) time(NULL));

8 24 C:\Users\as\Documents\C++\BezNazwy1.cpp [Error] 'srand' was not declared in this scope - tak twierdzi kompilator.

Nie zdziwiło by mnie to gdybym pisał ten program sam, najdziwniejsze jest właśnie to, że kod ten jest skopiowany kropka w kropkę z tutorialu "Od zera do gier kodera" i nie mam pojęcia co z tym fantem zrobić.

Dodatkowo załączam error z linijki 9-tej, może będzie przydatny

  • 9 24 C:\Users\as\Documents\C++\BezNazwy1.cpp [Error] 'rand' was not declared in this scope **
    Proszę o pomoc i z góry dziękuję.
HI
  • Rejestracja:prawie 13 lat
  • Ostatnio:około godziny
  • Postów:1855
2
  1. Coś oszukujesz. Jeżeli miałeś void main() to kompilator nie zwrócił by błędu In function 'int main()':
  2. main musi zwracać int (dlatego program nie działał jak miałeś void main())
  3. srand należy do biblioteki cstdlib - musisz ją includować.

podobno void i int są zamienne

Nie wiem gdzie to wyczytałeś, ale źle to zrozumiałeś.

edytowany 1x, ostatnio: hipekk
Patryk27
Hurr durr, cstdlib to header, nie biblioteka.
IS
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 9 lat
  • Postów:3
0

Ad.1. Patrz do załącznika, jeżeli faktycznie coś przeinaczyłem to raczej ze względu na moje nie rozgarnięcie ale wydaje mi się że nic nie pomyliłem
Ad.2. Mógłbyś to jakoś jaśniej napisać, bo dalej nie rozumiem (chodzi o to że main ma zwracać typ wartości int, tak?)
Ad.3. Faktycznie teraz wszystko śmiga, wielkie dzięki!

Nie wiem gdzie to wyczytałeś, ale źle to zrozumiałeś.

W tym samym tutorialu, z którego skopiowałem ten kod - musiało mi się coś pomieszać.

Na swoją obronę dodam tylko, że w tutorialu nie było wzmianki o tym aby includować bibliotekę z punktu trzeciego.

HI
  • Rejestracja:prawie 13 lat
  • Ostatnio:około godziny
  • Postów:1855
0
  1. A czemu nie przeczytałeś treści pierwszego błędu w którym masz jasno napisane o co chodzi ;)?
  2. Tak (masz to napisane we wspomnianym wcześniej błędzie).

Jeszcze jedno, specem od C++ nie jestem ale nie bardzo widzę sens tego rzutowania na int w

Kopiuj
srand ((int) time(NULL));

wystarczy

Kopiuj
srand(time(NULL));

www.cpp0x.pl/dokumentacja/standard-C/srand/587

edytowany 2x, ostatnio: hipekk
Reinicke
  • Rejestracja:ponad 9 lat
  • Ostatnio:9 miesięcy
  • Postów:18
0

Tak to wlasnie jest jak sie uczysz z dziesiecioletniego kursu(jak nie starszego) void main by przeszlo przed standaryzacja c++ ale nie teraz.


Si non confectus, non reficiat.
IS
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 9 lat
  • Postów:3
0
hipekk napisał(a):
  1. A czemu nie przeczytałeś treści pierwszego błędu w którym masz jasno napisane o co chodzi ;)?

Przeczytałem, ale nie rozumiałem jeszcze wtedy :)

Jeszcze jedno, specem od C++ nie jestem ale nie bardzo widzę sens tego rzutowania na int w
srand ((int) time(NULL));

wystarczy
srand(time(NULL));

Od tej pory będę się stosować.
Dzięki za link i za poświęcony czas.

Reinicke napisał(a):

Tak to wlasnie jest jak sie uczysz z dziesiecioletniego kursu(jak nie starszego) void main by przeszlo przed standaryzacja c++ ale nie teraz.

To już tyle lat ma? Nie miałem pojęcia, znasz może jakieś nowsze i dobre kursy c++?

Reinicke
  • Rejestracja:ponad 9 lat
  • Ostatnio:9 miesięcy
  • Postów:18
0

Kursy jak kursy ale polecam symfonie Grebosza, tylko 2 tomowa wersje standard. Ksiazka, ktorej nie da sie nie zrozumiec.


Si non confectus, non reficiat.
twonek
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 2 lata
  • Postów:2500
4
Reinicke napisał(a):

Kursy jak kursy ale polecam symfonie Grebosza, tylko 2 tomowa wersje standard.
Mówisz, że nie należy się uczyć z prehistorycznego kursu (słusznie), a potem polecasz przedpotopową książkę.

@issuel jak już masz się uczyć, to ucz się np. ze "Szkoły programowania" Praty (najnowsze wydanie z C++11). Ja ją tylko pobieżnie przeglądałem, ale sporo doświadczonych osób z forum ją chwali.
Generalnie ucz się najnowszego C++ (C++11/C++14), w którym używanie rand/srand jest już niezalecane.

edytowany 1x, ostatnio: twonek
Reinicke
  • Rejestracja:ponad 9 lat
  • Ostatnio:9 miesięcy
  • Postów:18
0

Najnowsze wydanie symfonii nie jest bardzo stare, najwazniejsze ze jest po standaryzacji. Na start ta ksiazka jest najlepsza moim zdaniem, wyjasnia podstawy w bardzo przystepny sposob, reszty mozna sie douczyc z internetu.


Si non confectus, non reficiat.
edytowany 1x, ostatnio: Reinicke
twonek
C++03, czyli starym standardzie.
Reinicke
Wiec po symfonii trzeba sie douczyc miedzy innymi tego co doszlo w nowych standardach.
twonek
Można też od razu uczyć się najnowszego standardu z innej przystępnej książki.
Reinicke
Tu masz racje, kwestia podejscia, ja wolalem uczyc sie zaczynajac od C++03. Malo jest ksiazek dla poczatkujacych rownie przystepnych co symfonia.
spartanPAGE
Prata jest bardzo przystepna
0

Witam.

Czy "najnowsze" Wydanie Symfoni c++ również jest już podobnie nieaktualne jak przypadek powyżej ??
Warto ją jeszcze ruszać ?

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)