Program obliczający ilosc mozliwych losowan Lotka - prośba o sprawdzenie.

0

Program właściwie udało mi się napisać i zwraca właściwy wynik, chociaż wydaje mi sie, że zrobiłem go trochę łopatologicznie.

#include<iostream>

using namespace std;

int main()
{
    int slots[6];
    int slots2[6];
    int licznik =0;
    for(int i = 1; i<=49; i+=1)
    {
        slots[0] = i;

        for(int j = 1; j<=49; j+=1)
        {
        if(j>i)
        slots[1] = j;
        else
        continue;
        for(int k = 1; k<=49; k+=1)
        {if(k>j&&k>i)
        slots[2] = k;
        else
        continue;
        for(int l = 1; l<=49; l+=1)
        {if(l>k&&l>j&&l>i)
        slots[3] = l;
        else
        continue;
        for(int m = 1; m<=49; m+=1)
        {if(m>l&&m>k&&m>j&&m>i)
        slots[4] = m;
        else
        continue;
        for(int n = 1; n<=49; n+=1)
        {if(n>m&&n>l&&n>k&&n>j&&n>i)
        {slots[5] = n;
        licznik++;}
        else
        continue;
        }
        }
        }
        }
        }
        }
        cout<<licznik;
    } 

Chciałem zamienić operacje logiczne w warunku if na funkcje sprawdzającą czy liczba już nie wystąpiła

 #include<iostream>

using namespace std;

bool check(int tab[], int liczba, int ile)
{
    int i = 0;
    do
    {
        if(tab[i]==liczba)
        return false;

        i++;
    }while(i<ile);
    return true;
}



int main()
{
    int slots[6];
    int licznik =0;
    for(int i = 1; i<=49; i+=1)
    {
        slots[0] = i;

        for(int j = 1; j<=49; j+=1)
        {
        if(check(slots, j, 1)==true)
        slots[1] = j;
        else
        continue;
        for(int k = 1; k<49; k+=1)
        {if(check(slots, k, 2)==true)
        slots[2] = k;
        else
        continue;
        for(int l = 1; l<=49; l+=1)
        {if(check(slots, l, 3)==true)
        slots[3] = l;
        else
        continue;
        for(int m = 1; m<=49; m+=1)
        {if(check(slots, m, 4)==true)
        slots[4] = m;
        else
        continue;
        for(int n = 1; n<=49; n+=1)
        {if(check(slots, n, 5)==true)
        {slots[5] = n;
        licznik++;}
        else
        continue;
        }
        }
        }
        }

        }
        }
        cout<<licznik;
    }

ale teraz program sie kompiluje ale nic się nie wyświetla:(

0

Ok zmieniłem funkcje sprawdzającą na

bool check(int tab[], int liczba, int ile)
{
    int i = 0;
    do
    {
        if(tab[i]>=liczba)
        return false;

        i++;
    }while(i<ile);
    return true;
}
 

i działa:D

2
bool check(int tab[], int liczba, int ile)
  {
   for(int i=0;i<ile;++i) if(tab[i]>=liczba) return false;
   return true;
  }

Niektórzy wolą to:

bool check(int tab[], int liczba, int ile)
  {
   return find_if(tab,tab+ile,binder2nd<greater<int> >(greater<int>(),liczba-1))>=tab+ile;
  }

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