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

[Rozdział 30] Zadanie domowe nr 3

Ostatnio zmodyfikowano 2015-03-25 23:38
Autor Wiadomość
Gage
Temat założony przez niniejszego użytkownika
[Rozdział 30] Zadanie domowe nr 3
» 2015-03-25 23:05:15
Witam. Dziś piszę z problemem, którego chyba nie powinno być, jak obserwuję kod. Wygląda on następująco:

C/C++
#include <iostream>

using namespace std;

int main()
{
    int a = 0;
    for( int p = 1; p <= 44; p++ )
    {
        for( int d = 2; d <= 45; d++ )
        {
            if( d <= p )
            do
            {
                d++;
            }
            while( d <= p );
           
            for( int t = 3; t <= 46; t++ )
            {
                if(( t <= p ) ||( t <= d ) )
                do
                {
                    t++;
                }
                while(( t <= p ) ||( t <= d ) );
               
                for( int cz = 4; cz <= 47; cz++ )
                {
                    if(( cz <= p ) ||( cz <= d ) ||( cz <= t ) )
                    do
                    {
                        cz++;
                    }
                    while(( cz <= p ) ||( cz <= d ) ||( cz <= t ) );
                   
                    for( int pi = 5; pi <= 48; pi++ )
                    {
                        if(( pi <= p ) ||( pi <= d ) ||( pi <= t ) ||( pi <= cz ) )
                        do
                        {
                            pi++;
                        }
                        while(( pi <= p ) ||( pi <= d ) ||( pi <= t ) ||( pi <= cz ) );
                       
                        for( int s = 6; s <= 49; s++ )
                        {
                            if(( s <= p ) ||( s <= d ) ||( s <= t ) ||( s <= cz ) ||( s <= pi ) )
                            do
                            {
                                s++;
                            }
                            while(( s <= p ) ||( s <= d ) ||( s <= t ) ||( s <= cz ) ||( s <= pi ) );
                           
                            a++;
                            cout << a;
                        }
                    }
                }
            }
        }
    }
}


Jak pewnie zauważyliście - powychodziły mi dość długie warunki. Uległem sugestiom zawartym w kursie, traktującym o pisaniu możliwie najkrótszego i najmniej skomplikowanego kodu. Czy jest inna, krótsza możliwość wykonania zadania z lotkiem? Bo przy tych warunkach można się w pewnym momencie pogubić i kaplica :D
Dzięki za pomoc!
P-129181
pekfos
» 2015-03-25 23:14:32
Tak, można to zrobić używając wyłącznie 6 pętli for, bez konieczności stosowania nawiasów klamrowych przy nich.
P-129183
Gage
Temat założony przez niniejszego użytkownika
» 2015-03-25 23:24:34
C/C++
#include <iostream>

using namespace std;

int main()
{
    int a = 0;
    for( int p = 1; p <= 44; p++ )
    for( int d = p + 1; d <= 45; d++ )
    for( int t = d + 1; t <= 46; t++ )
    for( int cz = t + 1; cz <= 47; cz++ )
    for( int pi = cz + 1; pi <= 48; pi++ )
    for( int s = pi + 1; s <= 49; s++ )
         a++;
   
    cout << a;
}

Kod poprawiony. Dzięki za wskazówkę!
P-129184
pekfos
» 2015-03-25 23:38:36
Stricte estetyczna wskazówka: lepiej użyć jednoliterowych zmiennych dla iteratorów ;)
C/C++
for( int a = 1; a <= 44; a++ )
for( int b = a + 1; b <= 45; b++ )
for( int c = b + 1; c <= 46; c++ )
for( int d = c + 1; d <= 47; d++ )
for( int e = d + 1; e <= 48; e++ )
for( int f = e + 1; f <= 49; f++ )
     wynik++;
P-129185
« 1 »
  Strona 1 z 1