[C++] Wychodzenie z pętli.
Ostatnio zmodyfikowano 2013-01-06 09:54
Jenczu11 Temat założony przez niniejszego użytkownika |
[C++] Wychodzenie z pętli. » 2013-01-05 20:21:04 Witam ponieważ jest to mój pierwszy post to chciałem przywitać wszystkich użytkowników tego forum :) A teraz problem. Nie wiem jak wyjść z pętli. Kiedy sprawdzam warunek czy wszystkie elementy tablicy są równe zero zamiast wyjść całkowicie cofa się znowu do początku pętli. Czy ktoś może pomóc przy tym jak z tego wyjść ? Kod: #include<iostream> using namespace std; int main() { int n, t[ 1000 ], q, licznik = 0, sum; cin >> n; sum = 0; q = 1; for( int i = 0; i < n; i++ ) cin >> t[ i ]; for( int i = 0; i < n; i++ ) { for( int u = 0; u < n; u++ ) { if( t[ u ] == q ) { t[ u ] = 0; q++; continue; } } licznik++; for( int y = 0; y < n; y++ ) { sum = sum + t[ y ]; if( sum == 0 ) break; } } cout << licznik << endl; system( "pause" ); return 0; } |
|
unimator |
» 2013-01-05 20:30:38 Nie wiem w czym problem, u mnie normalnie program działa i jest wyjście z pętli. |
|
Jenczu11 Temat założony przez niniejszego użytkownika |
» 2013-01-05 21:06:22 unimator. Po if`ie wychodzi ci z pętli ? Tak btw. ten program ma liczyć ilość przejść w jakich wyzeruje tablice. Podczas jednego przejścia może usunąć dowolną ilość cyfr (1,2,3 itd.) ale tylko raz. Na tym if ma całkowicie opuścić pętle (algorytm zerujący) i wyświetlić licznik czyli jak podam 4, a następnie 1,2,3,4 to powinno dać 1 ,a nie 4 :( Chyba ,że mam jakiś zły tok myślenia. |
|
unimator |
» 2013-01-05 22:15:40 To się nie zrozumieliśmy bo ja myślałem, że Ci się zapętla w nieskończoność. Problem jest tego rodzaju, że break wychodzi tylko z jednej pętli. Jak chcesz wyjść z jeszcze jednej pętli to w takim razie musisz zrobić jeszcze jednego breaka. W Twoim przypadku skopiowanie tego if'a jeszcze na sam koniec pętli głównej powinno pomóc. |
|
Mrovqa |
» 2013-01-05 22:46:13 Z wielokrotnie zagnieżdżonej pętli można szybko wyjść dzięki goto, jednakże nie warto nadużywać tej instrukcji. Jak to pisał J. Grębosz - używają ją źli programiści - zawsze można się obejść bez niej. |
|
abdi |
» 2013-01-05 22:50:51 bool wyjscie = false; while( cos tam && wyjscie == false ) { while() { if() { wyjscie = true; break; } } } o coś takiego Ci chodziło? |
|
Jenczu11 Temat założony przez niniejszego użytkownika |
» 2013-01-06 09:54:05 Dziękuje wszystkim za pomoc. :) Najlepszy i najprostszy sposób do zaimplementowania był wielokrotny break. Program napisany i wysłany do nauczyciela na sprawdzenie. Jeszcze raz wszystkim dziękuje. |
|
« 1 » |