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

[C++] Wychodzenie z pętli.

Ostatnio zmodyfikowano 2013-01-06 09:54
Autor Wiadomość
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:
C/C++
#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++ ) // Z tej pętli
    {
        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;
}
P-73085
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.
P-73089
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.
P-73098
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.
P-73105
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.
P-73109
abdi
» 2013-01-05 22:50:51
C/C++
bool wyjscie = false;
while( cos tam && wyjscie == false )
{
    while()
    {
        if()
        {
            wyjscie = true;
            break;
        }
    }
}


o coś takiego Ci chodziło?
P-73110
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.
P-73120
« 1 »
  Strona 1 z 1