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) #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) #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; } |
|
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ść :) for( licznik = 0; licznik <= 100; licznik++ ) { break; } A to co? :) |
|
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. |
|
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? |
|
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 ;) #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 ;) |
|
starter |
» 2012-11-15 12:23:56 ajjj... pomyślał byś chwilę i dowiedział się co jest nie tak :P a) #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; }
b) #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 |
|
« 1 » |