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

Lotek bez powtarzających się liczb

0 głosów
399 wizyt
pytanie zadane 14 czerwca 2015 w Nasze projekty przez JogiMichu Nowicjusz (180 p.)

Witam Was!

Myślę, że udało mi się poprawić program imitujący popularnego lotka z odcinka: Kurs C++ (#4) Liczby losowe (pseudolosowe). W mojej wersji żadna z wylosowanych 6 liczb się nie powtarza. Jeżeli jesteś na podobnym poziomie jak ja bądź po prostu masz ochotę poprawić moją wersję/sprawdzić ze swoją wersją to zapraszam serdecznie. Wszystkie sugestie bardzo mile widziane.

Podaje kod poniżej

#include <iostream>
#include <windows.h>//dla Sleep();
#include <time.h>//dla srand();
#include <stdio.h>//dla getchar();
using namespace std;

int liczba1, liczba2, liczba3, liczba4, liczba5, liczba6;
int main()
{
    cout << "Witaj w losowaniu! Za 3 sekundy nastapi zwolnienie blokady" << endl;
    Sleep(3000);
    cout<<endl;
    srand(time(NULL));

        liczba1 = rand()%49+1;
        Sleep(1000);
        cout<<endl<<"1-sza wylosowana liczba to: "<<liczba1<<"\a"<<endl;
    do
       {
        liczba2 = rand()%49+1;
       } while ( liczba2 == liczba1);

        Sleep(1000);
        cout<<endl<<"2-ga wylosowana liczba to: "<<liczba2<<"\a"<<endl;
    do
       {
        liczba3 = rand()%49+1;
       } while ((liczba3 == liczba1)||(liczba3 == liczba2));

        Sleep(1000);
       cout<<endl<<"3-cia wylosowana liczba to: "<<liczba3<<"\a"<<endl;
    do
       {
        liczba4 = rand()%49+1;
       } while ((liczba4 == liczba1)||(liczba4 == liczba2)||(liczba4 == liczba3));

        Sleep(1000);
       cout<<endl<<"4-ta wylosowana liczba to: "<<liczba4<<"\a"<<endl;
    do
        {
        liczba5 = rand()%49+1;
        } while ((liczba5 == liczba1)||(liczba5 == liczba2)||(liczba5 == liczba3)||(liczba5 == liczba4));

        Sleep(1000);
         cout<<endl<<"5-ta wylosowana liczba to: "<<liczba5<<"\a"<<endl;
    do
        {
        liczba6 = rand()%49+1;
        } while ((liczba6 == liczba1)||(liczba6 == liczba2)||(liczba6 == liczba3)||(liczba6 == liczba4)||(liczba6 == liczba5));

        Sleep(1000);
        cout<<endl<<"6-ta wylosowana liczba to: "<<liczba6<<"\a"<<endl;

  getchar();// czeka na nacisniecie entera
    return 0;
}

 

1 odpowiedź

0 głosów
odpowiedź 14 czerwca 2015 przez Adam Knie Mądrala (5,650 p.)
Tak na przyszłość, Jak już będziesz chciał poprawiać dalej, to polecam parę rzeczy do tego:

-> Listy, vectory - napewno lepsze zastosowanie znajdą niż tworzenie pierdyliona zmiennych.

-> Zastosowanie if/else if/else

-> Zastosowanie switch'a

-> Ograniczenie pętli

-> Zasotowanie funkcji

-> Stosowanie bilbiotek C++, zamiast starych nagłówków .h

-> Na windzie lepiej sprawdza się moim zdaniem _getch (conio.h)

To tyle chyba na razie.
komentarz 15 czerwca 2015 przez draghan VIP (106,230 p.)

Na windzie lepiej sprawdza się moim zdaniem _getch (conio.h)
 

A jeszcze lepiej sprawdza się getchar() z nagłówka <cstdio>,  który jest częścią biblioteki standardowej (conio.h nie jest). ;)

Tylko jedno pytanie: _getch() sprawdza się lepiej niż co? :)

komentarz 15 czerwca 2015 przez Adam Knie Mądrala (5,650 p.)
Powoli zaczynam CIę uwielbiać .. :D

Odnośnie pobierania znaku (rozwijając, chodzi mi o tą pauzę miedzy zakończeniem programu, a zniknięciem okna), ale coś czuję że się mylę :p
komentarz 15 czerwca 2015 przez draghan VIP (106,230 p.)
Spoooko, autografy później. ;D

Nie, w porządku jest. :) Po prostu nie wiedziałem, do czego się odnieść, więc zapytałem. :)

Tylko że getchar() działa na tej samej zasadzie i jest lepszejszy, bo istnieje nie tylko na windzie. :)
komentarz 15 czerwca 2015 przez Adam Knie Mądrala (5,650 p.)
Okey, boss.

W sumie to muszę zacząć bardziej rozwijać pewne kwestie. ;p

Tak czy owak, obie spełniają swoje zadanie, lecz mają pewne róźnice eliminujące jedną na rzecz drugiej.

Podobne pytania

+115 głosów
40 odpowiedzi 18,049 wizyt
+1 głos
4 odpowiedzi 2,559 wizyt
+2 głosów
2 odpowiedzi 943 wizyt
pytanie zadane 25 września 2022 w Nasze projekty przez Mirosław Zelent Nałogowiec (35,030 p.)

93,741 zapytań

142,677 odpowiedzi

323,294 komentarzy

63,325 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...