Program "Lotek", proszę o znalezienie błędu

0

Witam wszystkich forumowiczów,

bawiłem się dzisiaj w pisanie prostych programików, które zawierają jakiś rodzaj losowania i postanowiłem napisać coś w stylu totka, kod jest jak dla mnie OK, ale niestety program nie działa poprawnie, chodzi o to, że na końcu wyskakuje zawsze zły wynik, jak ktoś nie trafi ani jednej liczby to program i tak pokazuje jakoby trafił 1-ke.., w innych przypadkach też nie pokazuje dobrego wyniku. Mógłby mi ktoś pomóc i znaleźć błąd?

 #include <iostream>
#include <time.h>
#include <conio.h>
#include <windows.h>
using namespace std;

int main()
{

    cout << "WIELKI TOTEK!";
    getch();
    system("cls");

    int strzal[5]; int cel=0;
        for (int s=0; s<6; s++)
        {
            cout << "podaj swoj " << s+1 << " strzal ";
            cin >> strzal[s];
        }

    int liczba[5];

    srand(time(NULL));

    for (int i=0;i<6; i++)
    {
       Sleep(1000);
    liczba[i]=rand()%49+1;
    cout << "\aliczba " << i+1 << " to " << liczba[i] << endl;

    }

    for (int s=0 ;s<6;s++)
    {
        if ((liczba[s]==strzal[0])||(liczba[s]==strzal[1])||(liczba[s]==strzal[2])||(liczba[s]==strzal[3])||(liczba[s]==strzal[4])||(liczba[s]==strzal[5]))
          {
             cel++;
          }

    }
        if (cel==0)
            {
                cout << "Nie trafiles nic!";
            }


        else
        {
            cout << "\n twoj wynik to " <<cel <<"-ka \n";
        }
    return 0;
}
2

Tablica strzal ma pięć elementów (o indeksach 0, 1, 2, 3, 4), a Ty indeksujesz ją, jakby miała ich sześć.

0

Rzeczywiście! Wielkie dzięki :). Nie mam jeszcze wprawy z tablicami :D . Wygląda na to, że kod u mnie już działa jak powinien. Ale dla pewności, chciałbym spytać czy nie ma tutaj jakiegokolwiek błędu?

 #include <iostream>
#include <time.h>
#include <conio.h>
#include <windows.h>
using namespace std;

int main()
{

    cout << "WIELKI TOTEK!";
    getch();
    system("cls");

    int strzal[5]; int cel=0;
        for (int s=0; s<5; s++)
        {
            cout << "podaj swoj " << s+1 << " strzal ";
            cin >> strzal[s];
        }

    int liczba[5];

    srand(time(NULL));

    for (int i=0;i<5; i++)
    {
       Sleep(1000);
    liczba[i]=rand()%49+1;
    cout << "\aliczba " << i+1 << " to " << liczba[i] << endl;

    }

    for (int s=0 ;s<5;s++)
    {
        if ((liczba[s]==strzal[0])||(liczba[s]==strzal[1])||(liczba[s]==strzal[2])||(liczba[s]==strzal[3])||(liczba[s]==strzal[4]))
          {
             cel++;
          }

    }
        if (cel==0)
            {
                cout << "Nie trafiles nic!";
            }


        else
        {
            cout << "\n twoj wynik to " <<cel <<"-ka \n";
        }
    return 0;
}
1

Błędu nie, ale to wygląda nieładnie: if ((liczba[s]==strzal[0])||(liczba[s]==strzal[1])||(liczba[s]==strzal[2])||(liczba[s]==strzal[3])||(liczba[s]==strzal[4]))
Najlepiej byłoby rozdzielić to do osobnej funkcji w stylu bool in_array(int element, int* array).

0

Ok, wszystko jasne. Dzięki jeszcze raz. :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1