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

Lekcja 30 - Ostatnie zadanie domowe (Lotto i te sprawy)

Ostatnio zmodyfikowano 2014-08-21 17:24
Autor Wiadomość
Sorbet
Temat założony przez niniejszego użytkownika
» 2014-08-21 15:49:02
Po przespaniu się z problemem i ponownej analizie prostszego przykładu, zrozumiałem od czego zależy, czy możliwości się powtarzają, tylko w innych ustawieniach(chyba). W twoim przykładzie(pekfosa) każda z kombinacji jest posortowana rosnąco, czyli kiedy mam już 1 2 3 to nie mogę mieć 1 3 2. A im wyższa liczba tym mniej obiegów bo w zbiorze <1..5> jest mniej liczb większych od 3 niż od 1. Ale nadal nie wiem jak to zrobić bez warunku if.
Mój aktualny kod:
C/C++
#include <iostream>

int main( int argc, char * argv[] )
{
    for( int a = 1; a < 6; a++ )
    {
        for( int b = 1; b < 6; b++ )
        {
            for( int c = 1; c < 6; c++ )
            {
                if( a < b && b < c )
                     std::cout << a << " " << b << " " << c << std::endl;
               
            }
        }
    }
   
    std::cin.get();
    return 0;
}
Swoją drogą, jeśli zacząłbym for z b od 2 a for z c od 3 to przyspieszyło by to program, prawda?
P-115867
Sorbet
Temat założony przez niniejszego użytkownika
» 2014-08-21 16:04:09
Zrobiłem ostatnie zadanie (lotto), ale nie jestem wystarczająco sprytny, żeby zrobić to bez
if
.
Mój kod:
C/C++
#include <iostream>

int main( int argc, char * argv[] )
{
    int mozliwosci = 0;
    for( int a = 0; a <= 43; ++a )
    {
        for( int b = 1; b <= 44; ++b )
        {
            for( int c = 2; c <= 45; ++c )
            {
                for( int d = 3; d <= 46; ++d )
                {
                    for( int e = 4; e <= 47; ++e )
                    {
                        for( int f = 5; f <= 48; ++f )
                        {
                            if( a < b && b < c && c < d && d < e && e < f )
                                 mozliwosci++;
                           
                        }
                    }
                }
            }
        }
    }
    std::cout << "Ilosc mozliwosci: " << mozliwosci << std::endl;
    std::cin.get();
    return 0;
}
I wyjście w kosnoli:
Ilosc mozliwosci: 13983816

Bardzo bym prosił pekfosa o udzielenie mi informacji, jak to zrobić bez
if
.
I mam kilka pytań trochę związanych z tematem, trochę nie:
>Czy da się sprawdzić czas w jakim program się wykonuje?
>Czy
for( int i = 0; i < 6; i++ )
 różni się czymś od
for( int i = 0; i <= 5; i++ )
 czy to tylko kwestia gustu?
>Czy
++i
 ma inny wpływ na przebieg for'ów od
i++
?
P-115868
pekfos
» 2014-08-21 17:06:28
C/C++
for( int a = 1; a < 6; ++a )
for( int b = a + 1; b < 6; ++b )
for( int c = b + 1; c < 6; ++c )
     std::cout << a << ' ' << b << ' ' << c << std::endl;

Co do offtopu: tak, nie, na ogół nie.
P-115869
Mateus.
» 2014-08-21 17:12:02
1. Tak,
2. Nie,
3. Zależy co robisz, ale na razie nie ma to dla ciebie chyba znaczenia.
Aby zobrazować różnicę skompiluj sobie taki program:
C/C++
#include <iostream>

using namespace std;
int main()
{
    int a = 0, b = 0, c = 0, d = 0;
    cout << "Wartosci WYRAZEN:\n"
    << ++a << endl
    << b++ << endl
    << --c << endl
    << d-- << endl;
   
    cout << "Wartosci ZMIENNYCH:\n"
    << a << endl
    << b << endl
    << c << endl
    << d << endl;
    return 0;
}
P-115870
Sorbet
Temat założony przez niniejszego użytkownika
» 2014-08-21 17:14:10
Wow, dzięki. Nie pomyślałbym, żeby aż tak uzależnić od siebie te zmienne. A ten zapis for'ów jest taki skrócony, żeby mi pokazać  i się nie rozpisywać, czy faktycznie można tak robić?
P-115871
pekfos
» 2014-08-21 17:16:14
A ten zapis for'ów jest taki skrócony, żeby mi pokazać  i się nie rozpisywać, czy faktycznie można tak robić?
Można tak zrobić.
P-115872
Sorbet
Temat założony przez niniejszego użytkownika
» 2014-08-21 17:18:46
@pekfos
Może jestem jeszcze za mało wtajemniczony i za mało praktyki mam za sobą, ale taki zapis mi się nie podoba estetycznie i w kwestii cztelności.

@Mateus.
Dzięki, chyba rozumiem już, o co chodzi.
P-115873
Sorbet
Temat założony przez niniejszego użytkownika
» 2014-08-21 17:24:26
Skoro już dostałem odpowiedzi na wszystkie pytania i nikt nic więcej nie pisze, zamykam temat. Dzięki wszystkim.
P-115874
1 « 2 »
Poprzednia strona Strona 2 z 2