lszk Napisano Lipiec 7, 2005 Zgłoszenie Share Napisano Lipiec 7, 2005 Przeglądałeś sobie dzisiaj Megatutorial i postanowiłem się pobawić. Do zilustrowania pętli while jest tam przykładowy kod, a pod koniec rozdziału jest zadanie, aby obliczyć, ile iteracji tej pętli było. Więc dopisuje od siebie kod do tego obliczenia. Kod jest taki #include <iostream> #include <ctime> using namespace std; int main(int argc, char *argv[]) { cout << " ZGADYWANKA " << endl; cout << "----------------" << endl; cout << endl; srand ((int) time(NULL)); int wylosowana = rand() % 100 + 1; cout << "Wylosowano liczbe z przedzialu 1-100." << endl; int wprowadzona; cout << "Sprobuj ja odgadnac: "; cin >> wprowadzona; int x = 0; while (wprowadzona != wylosowana) { if (wprowadzona < wylosowana) cout << "Liczba jest zbyt mala."; else cout << "Za duza liczba."; cout << " Sprobuj jeszcze raz: "; cin >> wprowadzona; if (wprowadzona != wylosowana){ x++; } } cout << "Celny strzal :) Brawo!" << "Trafiles za " << x << " razem;-)" << endl; return 0; } I teraz log Wylosowano liczbe z przedzialu 1-100. Sprobuj ja odgadnac: 10 Liczba jest zbyt mala. Sprobuj jeszcze raz: 30 Za duza liczba. Sprobuj jeszcze raz: 25 Liczba jest zbyt mala. Sprobuj jeszcze raz: 27 Za duza liczba. Sprobuj jeszcze raz: 26 Celny strzal :) Brawo!Trafiles za 3 razem;-) Właśnie. Jakby na to nie patrzeć, to z byka tam nie może być 3 ;-) I właśnie pytanie czemu tak jest? Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
@Sorror Napisano Lipiec 7, 2005 Zgłoszenie Share Napisano Lipiec 7, 2005 Spieszy mi się, więc krótko: z tego co widze to chyba wina x=0, zatem jeśli zgadniesz za 4 razem wyświetla Ci 3, za 5 będzie 4 itd... Ponieważ postinkrementujesz x na koniec, powinnienneś zainicjalizować x z wartością 1... Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Dev Napisano Lipiec 10, 2005 Zgłoszenie Share Napisano Lipiec 10, 2005 #include <iostream> #include <ctime> #include <conio> using namespace std; //*************************************************************** int main() { int x = 1; int wylosowana, wprowadzona; cout << " ZGADYWANKA " << endl; cout << "----------------\n" << endl; srand ((int) time(NULL)); wylosowana = rand() % 100 + 1; cout << "Wylosowano liczbe z przedzialu 1-100." << endl; cout << "Sprobuj ja odgadnac: "; cin >> wprowadzona; while (wprowadzona != wylosowana) { if (wprowadzona < wylosowana) cout << "Liczba jest zbyt mala."; else cout << "Za duza liczba."; cout << " Sprobuj jeszcze raz: "; cin >> wprowadzona; if (wprowadzona != wylosowana){ x++; } } cout << "Celny strzal :) Brawo!\n" << "Trafiles za " << x << " razem;-)"; getch(); return 0; } Działa, rada sorror'a trafną jest. P.S: Drobne zmiany w kodzie wprowadziłem, kosmetyczne raczej Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
lszk Napisano Lipiec 10, 2005 Autor Zgłoszenie Share Napisano Lipiec 10, 2005 ... Widze, że sprawdzałeś to pod windą, bo na linuksie nie ma czegoś takiego, jak conio, czy też conio.h Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
@Sorror Napisano Lipiec 10, 2005 Zgłoszenie Share Napisano Lipiec 10, 2005 Iszk: nie żartuj -> WICEJ NA TEN TEMAT Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
lszk Napisano Lipiec 10, 2005 Autor Zgłoszenie Share Napisano Lipiec 10, 2005 Hmm ncurses Nie chce mi się teraz w to zagłębiać, bo już późno, ale po zmianie ... <conio.h> na ... <ncurses.h> można normalnie używać funkcji getch() ? Bo teraz, jak to w taki sposób skompiluje, to wywala mi Wylosowano liczbe z przedzialu 1-100. Sprobuj ja odgadnac: 50 Liczba jest zbyt mala. Sprobuj jeszcze raz: 70 Celny strzal :) Brawo! Naruszenie ochrony pamiêci Jutro się jeszcze zainteresuje tym dokładniej Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
@Sorror Napisano Lipiec 11, 2005 Zgłoszenie Share Napisano Lipiec 11, 2005 Jeśli chodzi o samo nazewnictwo to nie wiem... Sam o ncurses dowiedziałem się gdy już sam zdążyłem napisać tych kilka przydatnych funkcji z conio i wrzucić do własnej biblioteki Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Dev Napisano Lipiec 11, 2005 Zgłoszenie Share Napisano Lipiec 11, 2005 Faktycznie, pod Windowsem sporawdzalem to. Borland jakoś bardziej odpowiada mi Za zamieszanie powstałe przepraszam. P.S: Zawsze można // wstawić Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
neo_fox Napisano Lipiec 12, 2005 Zgłoszenie Share Napisano Lipiec 12, 2005 a swoją drogą dlaczego if (wprowadzona != wylosowana){ x++; } skoro warunkiem działania pętli jest wprowadzona != wylosowana ? Wystarczy x++; #include <iostream> #include <ctime> using namespace std; int main(int argc, char *argv[]) { cout << " ZGADYWANKA " << endl; cout << "----------------" << endl; cout << endl; srand ((int) time(NULL)); int wylosowana = rand() % 10 + 1; cout << "Wylosowano liczbe z przedzialu 1-10." << endl; int wprowadzona; int x = 1; cout << "Sprobuj ja odgadnac: "; cin >> wprowadzona; while (wprowadzona != wylosowana) { if (wprowadzona < wylosowana) cout << "Liczba jest zbyt mala."; else cout << "Za duza liczba."; cout << " Sprobuj jeszcze raz: "; cin >> wprowadzona; x++; } cout << "Celny strzal :) Brawo!" << "Trafiles za " << x << " razem;-)" << endl; cin.ignore();cin.ignore(); return 0; } Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
@Sorror Napisano Lipiec 12, 2005 Zgłoszenie Share Napisano Lipiec 12, 2005 Jasne W przypadku błędnego strzału x (czyli pseudolicznik) zwiększa się o jeden... Jeśli zabrać warunek o którym wspomniałeś licznik zwiększy się nawet jeśli padła właściwa liczba i na skutek tego zawsze będzie pokazywał liczbę za dużą o 1... Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
neo_fox Napisano Lipiec 12, 2005 Zgłoszenie Share Napisano Lipiec 12, 2005 nie będzie bo wprzypadku celnego strzału pętla kończy działanie. Sprwadź Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
@Sorror Napisano Lipiec 12, 2005 Zgłoszenie Share Napisano Lipiec 12, 2005 Racja, pospieszyłem się... Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
neo_fox Napisano Lipiec 12, 2005 Zgłoszenie Share Napisano Lipiec 12, 2005 Miłej nocki Spadam do łóżka. Jutro egzamin z Software Engineering'u Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się