[Rozdział 30] Zadanie domowe nr 3
Ostatnio zmodyfikowano 2015-03-25 23:38
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: #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! |
|
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. |
|
Gage Temat założony przez niniejszego użytkownika |
» 2015-03-25 23:24:34 #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ę! |
|
pekfos |
» 2015-03-25 23:38:36 Stricte estetyczna wskazówka: lepiej użyć jednoliterowych zmiennych dla iteratorów ;) 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++; |
|
« 1 » |