Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Generowanie niepowtarzalnych liczb w tablicy.


Gość CapthaPL 4Ever

Rekomendowane odpowiedzi

Opublikowano

Witam mam problem z kodem gdyż nie mam pojęcia jak zrobić liczby randomowe które się nie powtarzają z użyciem pętli while.

 

Moj kod (ogólny zarys jak to ma wyglądać) :

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <conio.h>
#pragma warning(disable : 4996)
using namespace std;
bool sprawdz(int tablica,int i, int czy)
{




return true;


}

int main()




{
srand(time(NULL));
int tablica[15];
int czy;
int i = 0;


do{
  tablica[i] = rand() % 15 + 1;
  int czy = tablica[i];
  sprawdz(tablica[i],i,czy);
  if (sprawdz(tablica[15],i,czy) == true)
  {

  }
  i++;
} while (i < 15);


getch();



}

Czy mógłby ktoś mi pomóc a dokładnie wytłumaczyć co ma być w "bool sprawdz()" aby to działało ?

nie chodzi mi o to by ktoś mi podał kod tylko co ta funkcja ma robić dokładnie.

Opublikowano

musisz przeleciec przez liczby w tablicy, jezeli dana liczba z tablicy jest rowna tej ktora wylosowales to zwracany jest falsz. jezeli nie to na samym koncu funkcji jest zwracana prawda - takiej liczby nie ma w tablicy

Opublikowano

Zrób dwie pętle zagnieżdżone i sprawdzaj w drugiej ifem czy tablica[j] == tablica wtedy nie inkrementuj a else'a aby inkrementowało i.

nostaleh.png
Opublikowano

Zrób dwie pętle zagnieżdżone i sprawdzaj w drugiej ifem czy tablica[j] == tablica wtedy nie inkrementuj a else'a aby inkrementowało i.

Nie, nie rób tak.

Opublikowano

Mógł by ktoś zrobić mi tą funkcje bool to bym to przeanalizował jak to się robi bo nie rozgarniam.

Opublikowano
#include <iostream>
#include <cstdlib>
#include <ctime>

bool czyJestWTablicy(int tablica[], int ile, int wylosowana)
{
    int index = 0;
    do
    {
        if(tablica[index++] == wylosowana) return true;
    }while(index < ile);
    return false;
}



int main()
{
    srand(time(0));
    int tablica[15];
    int i = 0;
    do
    {
        int wylosowana = std::rand()%15 + 1;
        if(!czyJestWTablicy(tablica, i, wylosowana))
        {
            tablica[i] = wylosowana;
            ++i;
        }
    }while(i < 15);

    return 0;
}

no chyba, że musisz użyć pętli do-while

@Edit podałem sformatowany kod... rip kopiowanie //to tak do postu nizej

Opublikowano

Dzięki wielkie, musiałem troszke kod zedytować bo nie losowało liczba ale wyjaśniłeś mi o co chodzi.

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <conio.h>
#pragma warning (disable : 4820 4619 4668 4996)
using namespace std;
bool czyJestWTablicy(int tablica[], int ile, int wylosowana)
{
int index = 0;
do
{
  if (tablica[index++] == wylosowana) return true;
} while (index < ile);
return false;
}
 
int main()
{
srand(time(NULL));
int tablica[15];
int i = 0;
do
{
  int wylosowana = rand() % 15 + 1;
  if (czyJestWTablicy(tablica, i, wylosowana) == false)
  {
   tablica[i] = wylosowana;
   i++;
   cout << "Liczba to " << wylosowana<<"\n";
  }
} while (i < 15);
getch();
}

 

 

 

 

 

 

 

 

/CLS

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...