Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Lotto

Ostatnio zmodyfikowano 2011-03-18 20:26
Autor Wiadomość
zabik
Temat założony przez niniejszego użytkownika
Lotto
» 2011-03-16 21:33:07
No więc zaczełem powtarzać sobie cpp za pomocą kursu Xiona "Od zera do gier kodera". Tam w jednej z lekcji "lekcji" omawia on tablice i na przykład pokazuje on kod takiej prostej gry lotto. No po około 4 min może nawet mniej wykodziłem dokładnie taki sam kod jaki był w tutorialu i zamiast wyświetlenia 6 losowych liczb wyświetliły mi się liczby od 0 do 5. Bo około 20 min sprawdzania doszłem do wniosku że lepiej sprawdzić czy owy kod działa i przekopiowałem go a pomimo to wciąż zamiast zamierzonego efektu otrzymuje program w który wyświetla mi liczby od 0 do 5. Chciałbym się dowiedzieć czy w kursie zawarty jest jakiś błąd itp. Oto kod:

C/C++
const unsigned ILOSC_LICZB = 6;

const int MAKSYMALNA_LICZBA = 49;



void main()

{
   
    // deklaracja i wyzerowanie tablicy liczb
   
    unsigned aLiczby[ ILOSC_LICZB ];
   
    for( int i = 0; i < ILOSC_LICZB; ++i )
   
         aLiczby[ i ] = 0;
   
   
   
    // losowanie liczb
   
    srand( static_cast < int >( time( NULL ) ) );
   
    for( int i = 0; i < ILOSC_LICZB; )
   
    {
       
        // wylosowanie liczby
       
        aLiczby[ i ] = rand() % MAKSYMALNA_LICZBA + 1;
       
       
       
        // sprawdzenie, czy się ona nie powtarza
       
        bool bPowtarzaSie = false;
       
        for( int j = 0; j < i; ++j )
       
        {
           
            if( aLiczby[ j ] == aLiczby[ i ] )
           
            {
               
                bPowtarzaSie = true;
               
                break;
               
            }
           
        }
       
       
       
        // jeżeli się nie powtarza, przechodzimy do następnej liczby
       
        if( !bPowtarzaSie ) ++i;
       
    }
   
   
   
    // wyświetlamy wylosowane liczby
   
    std::cout << "Wyniki losowania:" << std::endl;
   
    for( int i = 0; i < ILOSC_LICZB; ++i )
   
         std::cout << aLiczby[ i ] << " ";
   
   
   
    // czekamy na dowolny klawisz
   
    getch();
   
}
P-29243
BlackDante
» 2011-03-16 21:39:43
nie powinno być:
C/C++
for( int i = 0; i < ILOSC_LICZB; ++i )

     std::cout << aLiczby[ i ] << " ";

?
P-29244
zabik
Temat założony przez niniejszego użytkownika
» 2011-03-16 21:40:38
Ok zaraz sprawdzę. Prawie bym zapomniał używam Microsoft Visual C++ Express 2010 czy jakoś tak ;p
P-29245
ThudPoland
» 2011-03-16 21:41:25
SOA#1

U mnie działa (po przeróbkach).

Jednak zastanawiam się nad jednym - jak ty to człowieku skompilowałeś?!?
Przecież masz podstawowy błąd:
C/C++
aLiczba // co to jest? Bez indeksu?
//
aLiczba[ Indeks ]
P-29246
zabik
Temat założony przez niniejszego użytkownika
» 2011-03-16 21:42:55
Wciąż wyświetla się to samo. @ThudPoland Normalnie?
P-29247
ThudPoland
» 2011-03-16 21:44:42
Dziwne. Mam losowy output:
48 28 21 41 36 16
39 10 33 17 41 1

Wszystko działa.
P-29248
zabik
Temat założony przez niniejszego użytkownika
» 2011-03-16 21:47:41
Kurde jestem nowy na tym serwisie i nie wiem jak pisać tak aby wyświetlił się kod normalnie mam takie coś
aLiczba xix = 0; tam gdzie umieściłem x  znajduje się [ albo ] ;p tylko nie wiem dlaczegu tu niechce się wyświetlić.
P-29249
ThudPoland
» 2011-03-16 21:52:49
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <conio.h>
using namespace std;
const unsigned ILOSC_LICZB = 6;

const int MAKSYMALNA_LICZBA = 49;
void main()

{
   
    // deklaracja i wyzerowanie tablicy liczb
   
    unsigned aLiczby[ ILOSC_LICZB ];
   
    for( int i = 0; i < ILOSC_LICZB; ++i )
   
         aLiczby[ i ] = 0;
   
   
   
    // losowanie liczb
   
    srand( static_cast < int >( time( NULL ) ) );
   
    for( int i = 0; i < ILOSC_LICZB; )
   
    {
       
        // wylosowanie liczby
       
        aLiczby[ i ] = rand() % MAKSYMALNA_LICZBA + 1;
       
       
       
        // sprawdzenie, czy się ona nie powtarza
       
        bool bPowtarzaSie = false;
       
        for( int j = 0; j < i; ++j )
       
        {
           
            if( aLiczby[ j ] == aLiczby[ i ] )
           
            {
               
                bPowtarzaSie = true;
               
                break;
               
            }
           
        }
       
       
       
        // jeżeli się nie powtarza, przechodzimy do następnej liczby
       
        if( !bPowtarzaSie ) ++i;
       
    }
   
   
   
    // wyświetlamy wylosowane liczby
   
    std::cout << "Wyniki losowania:" << std::endl;
   
    for( int i = 0; i < ILOSC_LICZB; ++i )
   
         std::cout << aLiczby[ i ] << " ";
   
   
   
    // czekamy na dowolny klawisz
   
    getch();
   
}

Nie wiem czy to coś poprawi ale skompiluj mój poprawiony kod. Także mam Viżula.

Aha. Następnym razem użyj znaczników serwisu:
[code src="C + +"] kod [/code]
P-29250
« 1 » 2
  Strona 1 z 2 Następna strona