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

[C++] Zakończenie pętli do...while

Ostatnio zmodyfikowano 2012-11-15 12:23
Autor Wiadomość
mizuri332
Temat założony przez niniejszego użytkownika
[C++] Zakończenie pętli do...while
» 2012-11-14 14:22:04
Mam nastepujace zadanie:

Wypisac ciag n-elementowy zawierajacy nastepujace elementy:
a) 1,2,3,1,2,3,1,2,3,1,2,3,1,(...),
b) 1,-1,2,-2,3,-3,4,-4,5,-5,6,-6,(...),

O ile z podpunktem b) sobie poradzilem, to a) nie potrafie naprawic zeby petla do while sie zakończyla. Ktoś może mi to poprawić i ewentualnie wytłumaczyć co robie nie tak?

a)
C/C++
#include <iostream>
#include <cstdlib>
using namespace std;


int main()
{
    int ile = 0;
    int licznik = 0;
    cout << "Ile elementow ma miec ciag?" << endl;
    cin >> ile;
   
    if( ile != 0 )
    do {
        cout << licznik + 1 << ",";
        licznik++;
       
        if( licznik >= 3 )
             licznik = licznik - 2;
       
    } while( ile != licznik );
   
   
    getchar();
    system( "PAUSE" );
    return EXIT_SUCCESS;
}

b)
C/C++
#include <iostream>
#include <cstdlib>
using namespace std;


int main()
{
    int ile = 0;
    int licznik = 0;
    cout << "Ile elementow ma miec ciag?" << endl;
    cin >> ile;
   
    if( ile != 0 )
    do {
        cout << licznik + 1 << "," << ~licznik << ",";
        licznik++;
    } while( ile != licznik );
   
    for( licznik = 0; licznik <= 100; licznik++ )
    {
        break;
    }
    getchar();
    system( "PAUSE" );
    return EXIT_SUCCESS;
}
P-69227
starter
» 2012-11-14 14:27:17
while( ile != licznik )

jeśli ma wypisywać w kółko 1,2,3,1,2,3,1,2,3... to ta linijka powoduje zapętlenie w nieskończoność :)

C/C++
for( licznik = 0; licznik <= 100; licznik++ )
{
    break;
}
A to co? :)
P-69228
mizuri332
Temat założony przez niniejszego użytkownika
» 2012-11-14 14:29:19
To śmieć, chcialem ten podpunkt zrobic też na petli for i zapomnialem to usunac ;) Nie mniej jednak b) dziala dobrze.

Nie wiem jak zmienic ten warunek
}while(ile!=licznik);
 zeby to dzialalo normalnie.
P-69229
starter
» 2012-11-14 14:31:06
no to napisałem ci co masz nie tak

//up: zmieniaj w pętli wartość ile i jak wyniesie 1(może 0, przemyśl to sam) to przerywasz
while( ile >= 1 )

//btw: czy w b wychodzi na pewno n-elementowy ciąg, a nie 2n-elementowy?
P-69230
mizuri332
Temat założony przez niniejszego użytkownika
» 2012-11-14 15:05:11
Ok, przejrzalem jeszcze raz kurs "do while" ze strony, zmodyfikowałem swój kod i teraz juz petla wykonuje sie normalnie ;)
C/C++
#include <iostream>
#include <cstdlib>
using namespace std;


int main()
{
    int ile = 0;
    int licznik = 0;
    cout << "Ile elementow ma miec ciag?" << endl;
    cin >> ile;
   
    if( ile > 0 )
    do {
        cout << licznik + 1 << ",";
        licznik++;
       
        if( licznik == 3 )
             licznik = licznik - 3;
       
        ile--;
    } while( ile > 0 );
   
    getchar();
    system( "PAUSE" );
    return EXIT_SUCCESS;
}

Nie ogarniam jeszcze dokładnie dzialania petli bo dopiero drugi dzien ucze sie od zera C++ z tej strony.
Nie do końca zrozumiałem Twoje rozwiązanie, oświeciło by mnie gdybyś wkleił kod za co byłbym wdzięczny :)

No tak, w zadaniu b) faktycznie wyswietla ciąg 2n, ale to mozna poprawic ;)
P-69234
starter
» 2012-11-15 12:23:56
ajjj... pomyślał byś chwilę i dowiedział  się co jest nie tak :P
a)
C/C++
#include <iostream>
#include <cstdlib>
using namespace std;


int main()
{
    int ile = 0;
    int licznik = 0;
    cout << "Ile elementow ma miec ciag?";
    cin >> ile;
    cout << endl;
   
    if( ile > 0 )
    do {
        cout << licznik + 1;
        if( ile > 1 )
             cout << ",";
       
        licznik++;
       
        if( licznik >= 3 )
             licznik = 0;
       
        ile--;
    } while( ile >= 1 );
   
    cout << endl << endl;
   
    system( "PAUSE" );
    return EXIT_SUCCESS; //return 0;
}

b)
C/C++
#include <iostream>
#include <cstdlib>
using namespace std;


#include <iostream>
#include <cstdlib>
using namespace std;


int main()
{
    int ile = 0;
    int licznik = 0;
    cout << "Ile elementow ma miec ciag?(tylko liczby parzyste):";
    cin >> ile;
    cout << endl;
   
    if( ile > 0 )
    do {
        cout << licznik + 1 << "," << ~licznik;
        if( ile > 1 )
             cout << ",";
       
        licznik++;
       
        ile--;
    } while( ile >= 1 );
   
    cout << endl << endl;
   
    system( "PAUSE" );
    return EXIT_SUCCESS;
}

Ja bym użył pętli
while
 bardziej by tu pasowała ale tak jest OK
P-69295
« 1 »
  Strona 1 z 1