Lekcja 30 - zadanie 2
Ostatnio zmodyfikowano 2012-10-25 18:52
Berux Temat założony przez niniejszego użytkownika |
Lekcja 30 - zadanie 2 » 2012-10-25 15:59:39 Witam! Zabrałem się za rozdział 30 tutejszego kursu, ale przy zadaniu 2 napotkałem problem. Oto kod mojego programu: #include <iostream>
using namespace std;
int main() { for( int z1 = 1; z1 <= 5; z1++ ) { for( int z2 = 1; z2 <= 5; z2++ ) { if( z2 == z1 ) continue; for( int z3 = 1; z3 <= 5; z3++ ) if( z3 == z1 || z3 == z2 ) continue; cout << z1 << " " << z2 << " " << z3 << endl; } } return 0; }
A oto treść zadania: Wyobraź sobie, że masz pięć piłek i chcesz wylosować trzy z nich. Napisz program, który wypisze na ekranie wszystkie możliwe kombinacje piłek jakie można wylosować. Log kompilacji, według którego w programie jest błąd: C:\Users\Admin\Desktop\Kurs C++\Lekcja 30\Zadania Dom\Zad2\Zad.cpp: In function 'int main()': C:\Users\Admin\Desktop\Kurs C++\Lekcja 30\Zadania Dom\Zad2\Zad.cpp:18: error: name lookup of 'z3' changed for ISO 'for' scoping C:\Users\Admin\Desktop\Kurs C++\Lekcja 30\Zadania Dom\Zad2\Zad.cpp:18: note: (if you use '-fpermissive' G++ will accept your code) Process terminated with status 1 (0 minutes, 0 seconds) 1 errors, 0 warnings
Proszę o pomoc, z góry dziękuję. |
|
Savail |
» 2012-10-25 16:08:01 zmienna z3 istnieje tylko wewnątrz pętli. |
|
Berux Temat założony przez niniejszego użytkownika |
» 2012-10-25 16:14:45 Rzeczywiście zapomniałem o klamrze, poprawiłem to ale nic mi nie wypisuje, kod: #include <iostream>
using namespace std;
int main() { for( int z1 = 1; z1 <= 5; z1++ ) { for( int z2 = 1; z2 <= 5; z2++ ) { if( z2 == z1 ) continue; for( int z3 = 1; z3 <= 5; z3++ ) if( z3 == z1 || z3 == z2 ) { continue; cout << z1 << " " << z2 << " " << z3 << endl; } } } return 0; }
|
|
jsc |
» 2012-10-25 16:20:17 continue; każe pętli zacząć nowe cykl pomijając resztę bieżącego. |
|
Savail |
» 2012-10-25 16:20:33 Wstawiłeś continue; tuż przed wypisaniem w 1 warunku... Powinieneś to rozdzielić na 2 warunki i zawrzeć je w tej pętli. if(...) continue; else cout <<... |
|
Berux Temat założony przez niniejszego użytkownika |
» 2012-10-25 16:32:46 Zauważyłem, że postawiłem klamrę do if, a nie do for, rozwiązało to problem. Kod: #include <iostream>
using namespace std;
int main() { for( int z1 = 1; z1 <= 5; z1++ ) { for( int z2 = 1; z2 <= 5; z2++ ) { if( z2 == z1 ) continue; for( int z3 = 1; z3 <= 5; z3++ ) { if( z3 == z1 || z3 == z2 ) continue; cout << z1 << " " << z2 << " " << z3 << endl; } } } return 0; } Dzięki za pomoc. /edit: a jednak nie rozwiązało problemu, bo wypisuje 1 2 3 oraz 1 3 2 - a to to samo. /edit: spróbowałem też zrobić tak ja mówiliście, ale to nic nioe pomogło |
|
jsc |
» 2012-10-25 16:44:51 To już musisz zrobić sobie jakiegoś wektora, posortować (dla prostego wyszukiwania) rosnąco lub malejąco bieżący wynik, sprawdzić czy jest już zapisany i jeśli go tam nie ma dopisać. |
|
krzyk |
» 2012-10-25 16:48:16 Wróć do pierwszej wersji i zadeklaruj zmienną z3 nad forem. |
|
« 1 » 2 |