Samzon 15 Napisano 2 Kwietnia 2015 Udostępnij Napisano 2 Kwietnia 2015 (edytowane) Może nie problem, ale ciekawość, dlaczego w losowych momentach program prosi mnie o zwykle 2-krotne wpisanie liczby, gdyż za pierwszym razem jej nie załapał i nie zwrócił warunku z instrukcji if. Działa dobrze, ale właśnie w niektórych przypadkach olewa moje wprowadzone liczby. Coś nie tak z pętlą? Dodam, że jestem raczej świeżym samoukiem. Próbowałem wyciągnąć pierwszy warunek przed stworzoną pętle do i zawrzeć to w jeszcze jednej (bo może ponawia prośbę o wpisanie danych) pętli, ale problem się raczej potroił. [table]#include iostream>#include cstdlib>#include ctime>using namespace std;int main(){srand(time( NULL ) );int liczba = ( rand()% 1000 );cout << "Podaj liczbe od 1 do 1000: ";int strzal;int liczbastrzalow = 0;cin >> strzal;do{if ( strzal > 1000){cout << "Podaj liczbe od 1 do 1000!" << endl;cin >> strzal;}elseliczbastrzalow ++;if (liczba < strzal){cout << "Podana liczba jest wieksza od wylosowanej!" << endl;cin >> strzal;}elsecout << "Podana liczba jest mniejsza od wylosowanej!" << endl;cin >> strzal;}while ( strzal != liczba);cout << "Brawo, trafiles dana liczbê za " << liczbastrzalow << " razem." << endl;return 0;}[/table] Edytowane 2 Kwietnia 2015 przez Samzon Cytuj Link to post Share on other sites
yormundur 3 Napisano 2 Kwietnia 2015 Udostępnij Napisano 2 Kwietnia 2015 (edytowane) Wrzuciłem kod do Visual Studio i normalnie http://screenshu.com/static/uploads/temporary/75/bd/8g/3z3sd1.jpg Przy dodawaniu nagłówków i bibliotek używaj: <nazwa> lub "nazwa" Już wiem o co Ci chodzi. Jak podasz za pierwszym razem prawidłową odpowiedź to i tak zwróci błąd. Wchodzisz do pętli do...while nie sprawdzając czy trafienie jest prawidłowe od razu. Masz tam if sprawdzający czy liczba jest większa od strzału, jeżeli nie jest to piszę Ci, że jest mniejsza od wylosowanej, czyli nawet jeżeli trafisz za pierwszym razem to warunek będzie przybierał postać FALSE. Są dwa rozwiązania: Zmień to na pętle while i po problemie. Użyj elseif w Do...while Edytowane 2 Kwietnia 2015 przez yormundur Cytuj Link to post Share on other sites
Samzon 15 Napisano 7 Kwietnia 2015 Autor Udostępnij Napisano 7 Kwietnia 2015 (edytowane) Dzięki wielkie ci, już zrozumiałem i poprawiłem. Może już nie tworząc dodatkowego tematu - mógłby mi ktoś wyjaśnić do czego tak właściwie służy prototyp funkcji. Funkcja działa bez niego i z nim. Czy w późniejszych etapach programowania pomaga z rezerwacją odpowiedniej pamięci, gdy pracujemy na dużych jednostkach? Zauważyłem, że prototyp potrzebny jest jedynie, gdy zawieramy funkcje niepredefiniowane pod main. Okey, też znalazłem - kwestia wygody przy dużych programach, nic nie wpływa na pamięć. Może mnie ktoś poprawić jeśli się mylę. Edytowane 7 Kwietnia 2015 przez Samzon Cytuj Link to post Share on other sites
yormundur 3 Napisano 7 Kwietnia 2015 Udostępnij Napisano 7 Kwietnia 2015 Prototyp tworzy się w plikach naglowkowych, które później dołącza się np. w kilku plikach. Pozwala "ukryć" ciało funkcji, a także poprawia czytelność. Przy programowaniu obiektowym dosyć często wykorzystywane. Cytuj Link to post Share on other sites
Recommended Posts
Dołącz do dyskusji
Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.