endl, którego nie ma
Ostatnio zmodyfikowano 2017-10-22 18:27
Corvette653 Temat założony przez niniejszego użytkownika |
endl, którego nie ma » 2017-10-22 17:54:27 mimo poprawności kodu ( przynajmniej według mnie ) wyjście programu jest złe oto cały kod i początek wyjścia programu: #include <iostream> #include <cstdlib> #include <ctime> using namespace std; int main() { for( int d = 1; d < 243; d++ ) { if( d < 81 ) { cout << 1; } if( d > 81 && d <= 162 ) { cout << 2; } if( d > 162 ) { cout << 3; } if( d <= 27 || d > 81 && d <= 108 || d > 162 && d <= 189 ) { cout << 1; } if( d > 27 && d <= 54 || d > 108 && d <= 135 || d > 189 && d <= 216 ) { cout << 2; } if( d > 54 && d <= 81 || d > 135 && d <= 162 || d > 216 ) { cout << 3; } if( d <= 9 || d > 27 && d <= 36 || d > 54 && d <= 63 || d > 81 && d <= 90 || d > 108 && d <= 117 || d > 135 && d <= 144 || d > 162 && d <= 171 || d > 189 && d <= 198 || d > 216 && d <= 225 ) { cout << 1; } if( d > 9 && d <= 18 || d > 36 && d <= 45 || d > 63 && d <= 72 || d > 90 && d <= 99 || d > 117 && d <= 126 || d > 144 && d <= 153 || d > 171 && d <= 180 || d > 198 && d <= 207 || d > 225 && d <= 234 ) { cout << 2; } if( d > 18 && d <= 27 || d > 45 && d <= 54 || d > 72 && d <= 81 || d > 99 && d <= 108 || d > 126 && d <= 135 || d > 153 && d <= 162 || d > 180 && d <= 189 || d > 207 && d <= 216 || d > 234 ) { cout << 3; } if( d % 9 == 1 || d % 9 == 2 || d % 9 == 3 ) { cout << 1; } if( d % 9 == 4 || d % 9 == 5 || d % 9 == 6 ) { cout << 2; } if( d % 9 == 7 || d % 9 == 8 || d % 9 == 0 ) { cout << 3; } if( d % 3 == 1 ) { cout << 1 << endl; } if( d % 3 == 2 ) { cout << endl << 2 << endl; } if( d % 3 == 0 ) { cout << 3 << endl; } } return 0; }
Oto program natomiast tutaj początek jego wyjścia: 11313 11321 1132 2 11323 11331 1133 2 11333 12111 1211 2... wyjście !!!miało!!! wyglądać tak: 11111 11112 11113 11121 11122 11123 11131 11132 11133 11211 ... Pytanie jest oczywiste : dlaczego program jest "zły" widać tutaj dwa błędy: 1. jak pewnie zauważyliście program zaczyna się od 11313 zamiast od 11111 2. Co 3 liczbę pisze się enter którego w kodzie nie ma ( chyba ) |
|
pekfos |
» 2017-10-22 18:15:49 wyjście !!!miało!!! wyglądać tak: 11111 11112 11113 11121 11122 11123 11131 11132 11133 11211 |
To wygląda jak kolejne liczby w systemie trójkowym, na 5 cyfrach powiększonych o 1. Rozwiąż problem od tej strony, zamiast pisać tak tragiczny kod, jak twój. cout << endl << 2 << endl;
|
Skoro masz wypisywać po 5 cyfr, czemu w kodzie masz wypisywanie dwójki w osobnej linii..? |
|
latajacaryba |
» 2017-10-22 18:17:23 Ciężko trochę analizować ten kod, ale na pierwszy rzut oka w zaznaczonej linii masz chyba jakiś nadprogramowy endl if( d % 3 == 1 ) { cout << 1 << endl; } if( d % 3 == 2 ) { cout << endl << 2 << endl; } if( d % 3 == 0 ) { cout << 3 << endl;
Edit: był szybszy :D |
|
Corvette653 Temat założony przez niniejszego użytkownika |
aha... » 2017-10-22 18:21:42 i znalazł się ten endl... |
|
mateczek |
» 2017-10-22 18:27:48 #include<iostream> #include<string> using namespace std; string intToString( int liczba ) { string wynik; const int baza = 3; for( int i = 0; i < 5; i++ ) { wynik.insert( wynik.begin(), liczba % baza + '1' ); liczba = liczba / baza; } return wynik; }
int main() { for( int i = 0; i < 100; i++ ) { cout << intToString( i ) << endl; } return 0; } |
|
« 1 » |