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

Ograniczenie liczb z danego zakresu oraz dziwny bład

Object Storage Arubacloud
0 głosów
214 wizyt
pytanie zadane 18 marca 2022 w C i C++ przez M1KS0N Nowicjusz (240 p.)

Cześć. Mam dwa  problemy pierwszy ze zrobieniem w tym kodzie ograniczenia aby nie można było wpisać przez użytkownika liczby z poza wybranego zakresu. Drugi problem który znalazłem to jeżeli podaje niektóre liczby to  tworzy się tylko tablica z podanymi liczbami a brakuje jeszcze tablicy z liczbami pseudolosowymi. 

#include <iostream>
#include <cstdlib>
#include <time.h>

using namespace std;

int liczbyg[6];
int z;
int i;


 int compare( int liczbyg[], int wylosowane[] ) {
    int punkty = 0;
    for( int i = 0; i <= 6; i++ ) {
        for( int k = 0; k <= 6; k++ ) {
            if( liczbyg[ i ] == wylosowane[ k ] ) punkty++;

        }

    }
    return punkty;
}



int main()

{
cout <<"Podaj zakres liczbowy";
cin >>z;




for(int i=1;i<=6;i++)
{

cout <<"Podaj"<<" "<<i<<" "<< "liczbe"<<endl;

        cin >> liczbyg[i];


}

cout <<"Wybrane numery";
for(int i=1;i<=6;i++)
{
    cout <<" "<<liczbyg[i];
}

srand(time(NULL));

int ile_pytan = z;
int ile_wylosowac= 6;
int ile_juz_wylosowano=0;
int*wylosowane= new int[ile_wylosowac+1];
bool losowanie_ok;

for (int i=1; i<=ile_wylosowac; i++)
{
    do
    {
        int liczba=rand()%ile_pytan+1;
        losowanie_ok=true;

        for (int j=1; j<=ile_juz_wylosowano;j++)
        {

        if(liczba==wylosowane[j])losowanie_ok=false;
        }
        if(losowanie_ok==true)
        {

         ile_juz_wylosowano++;
         wylosowane[ile_juz_wylosowano]=liczba;
        }
    }while(losowanie_ok!=true);
}


    cout<<endl<<"Wylosowane numery:";
    for(int i=1; i<=ile_wylosowac;i++)
    {
        cout<<wylosowane[i]<<" ";

    }



    cout <<endl<<"Tralies"<<" "<<compare( liczbyg, wylosowane )<<" ""liczb" << endl;

   return 0;
}

 

komentarz 18 marca 2022 przez adrian17 Ekspert (344,860 p.)

Nie patrzyłem na resztę kodu (formatowanie nie pomaga :/ ), ale praktycznie za każdym razem źle indeksujesz:

int liczbyg[6];
...
    for( int i = 0; i <= 6; i++ ) {
        for( int k = 0; k <= 6; k++ ) {
            if( liczbyg[ i ] == wylosowane[ k ] ) punkty++;
...
for(int i=1;i<=6;i++)

Jak masz tablicę z 6 elementami to indeksuje się od 0 do 5, używając `i < rozmiar`, a nie <=.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
2 odpowiedzi 1,718 wizyt
pytanie zadane 26 maja 2020 w C i C++ przez saju13013 Nowicjusz (230 p.)
0 głosów
1 odpowiedź 1,826 wizyt

92,555 zapytań

141,403 odpowiedzi

319,555 komentarzy

61,940 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...