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

Rozdział 30 - liczba możliwych wyników (49 po 6)

Ostatnio zmodyfikowano 2013-08-26 13:05
Autor Wiadomość
jaro98
Temat założony przez niniejszego użytkownika
Rozdział 30 - liczba możliwych wyników (49 po 6)
» 2013-08-26 12:11:57
Cześć, chodzi o zadanie "Napisz program, który zliczy liczbę możliwych kombinacji wylosowania 6 liczb ze zbioru 49 liczb". Sprowadza się to do obliczenia wartości symbolu newtona (bo to kombinacja 6 z 49) ale za pomocą zagnieżdżonych pętli. Powinno wyjść 13983816, nie wiem czemu wychodzi mi zły wynik z poniższego:
C/C++
#include <iostream>
using namespace std;
int main()
{
    int i = 0;
   
    for( int x = 1; x <= 49; x++ )
    {
       
        for( int y = 1; y <= 49; y++ )
        {
            if( y <= x )
                 continue;
           
            for( int z = 1; z <= 49; z++ )
            {
                if( z <= y )
                     continue;
               
                for( int k = 1; k <= 49; k++ )
                {
                    if( k <= z )
                         continue;
                   
                    for( int l = 1; l <= 49; l++ )
                    {
                        if( l <= k )
                             continue;
                       
                        for( int m = 1; m <= 49; m++ )
                        {
                            //cout << x << " "<< y << " " << z << " " << k << " " << l << " " << m << endl;
                            i++;
                        }
                    }
                }
               
            }
           
        }
    }
    cout << i;
   
    return 0;
}


Z analogicznego kodu dla "6 po 4" (poniżej) wychodzi mi dobry wynik (15), więc chyba jest jakiś mały błąd w powyższym.

C/C++
#include <iostream>
using namespace std;
int main()
{
    int i = 0;
   
    for( int x = 1; x <= 6; x++ )
    {
       
        for( int y = 1; y <= 6; y++ )
        {
            if( y <= x )
                 continue;
           
            for( int z = 1; z <= 6; z++ )
            {
                if( z <= y )
                     continue;
               
                for( int k = 1; k <= 6; k++ )
                {
                    if( k <= z )
                         continue;
                   
                    cout << x << " " << y << " " << z << " " << k << endl;
                    i++;
                }
               
            }
           
        }
    }
   
    cout << "6 po 4: " << i;
   
    return 0;
}
P-90902
kubawal
» 2013-08-26 12:32:36
C/C++
for( int m = 1; m <= 49; m++ )
{
    //cout << x << " "<< y << " " << z << " " << k << " " << l << " " << m << endl;
    i++;
}
W tej pętli nie powinno być czasem sprawdzania (
m <= l
)?
P-90903
jaro98
Temat założony przez niniejszego użytkownika
» 2013-08-26 13:05:37
Powinno być :P, nie wiem jak to przeoczyłem, dzięki, już działa.
C/C++
#include <iostream>
using namespace std;
int main()
{
    int i = 0;
   
    for( int x = 1; x <= 49; x++ )
    {
       
        for( int y = 1; y <= 49; y++ )
        {
            if( y <= x )
                 continue;
           
            for( int z = 1; z <= 49; z++ )
            {
                if( z <= y )
                     continue;
               
                for( int k = 1; k <= 49; k++ )
                {
                    if( k <= z )
                         continue;
                   
                    for( int l = 1; l <= 49; l++ )
                    {
                        if( l <= k )
                             continue;
                       
                        for( int m = 1; m <= 49; m++ )
                       
                        {
                            if( m <= l )
                                 continue;
                            //cout << x << " "<< y << " " << z << " " << k << " " << l << " " << m << endl;
                            i++;
                        }
                    }
                }
               
            }
           
        }
    }
    cout << i;
   
    return 0;
}
P-90906
« 1 »
  Strona 1 z 1