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

[C++] Ciągła pętla

Ostatnio zmodyfikowano 2013-11-19 21:18
Autor Wiadomość
lewica2
Temat założony przez niniejszego użytkownika
[C++] Ciągła pętla
» 2013-11-19 14:40:59
Cześć,
mam mały zgryz- nie wiem jakiej pętli użyć, aby pętla była wykonywana "w kółko", aż konkretny parametr (w tym wypadku a) nie zostanie wpisany poprawnie. Ten stwór pozwala TYLKO dwukrotnie wprowadzić zmienną "a". A jak zrobić, aby prośba wprowadzenia nieparzystego a pojawiała się ciągle w przypadku nie spełnienia tego warunku?

C/C++
#include "stdafx.h"
#include <iostream>
#include "conio.h"

using namespace std;
//-------------------------------------------------------------
void Prostokat(); // deklaracja funkcji
//-------------------------------------------------------------
int main() // blok glowny

{
    Prostokat();
    _getch();
    return 0;
} // koniec bloku glownego
//------------------------------------------------------------

void Prostokat() // definicja funkcji
{
    int a;
    cout << "Podaj szerokość kwadratu [A]: ";
    cin >> a;
    if( a % 2 == 0 )
    {
        do
        {
            cout << "\Liczba " << a << " jest parzytsa!" << endl;
            cout << "Wprowadź liczbę nieparzystą!" << endl;
            cout << "Podaj szerokość kwadratu [A]: ";
            cin >> a;
        }
        while( a % 2 != 0 );
       
       
    }
   
}
P-96655
kubek3898
» 2013-11-19 15:01:54
Wystarczy zamienić warunek w pętli z a % 2 != 0 na a % 2 == 0.
P-96656
lewica2
Temat założony przez niniejszego użytkownika
» 2013-11-19 17:30:08
Dzięki, wielkie serdeczne dzięki!
P-96672
lewica2
Temat założony przez niniejszego użytkownika
» 2013-11-19 20:17:29
mam jeszcze takie pytanie: jest jakaś pętla która jest wykonywane konkretna liczbę razy?np. 3, 9 etc?
P-96698
dambo
» 2013-11-19 20:21:47
wystarczy stworzyć zmienna np licznik i co wykonanie petli go inkrementujesz i potem robisz warunek np while (licznik < 3)
P-96701
Buby
» 2013-11-19 21:18:37
Lub, zamiast tworzyć pętlę while, możesz pokusić się o pętlę for.

Przykładowy kod z opisem:
C/C++
for( int LicznikPrzebiegu = 0; LicznikPrzebiegu < 5; ++LicznikPrzebigu )
{
    std::cout << "Tutaj wstawiasz blok instrukcji, np. tak jak tu wyswietlanie tekstu." << std::endl;
    std::cout << " Jest to obieg petli nr. " << LicznikPrzebiegu << std::endl;
}

Teraz opis.
1. Pętla
for
 jest pętlą, której możemy użyć w wielu
 sytuacjach zamiast pętli
while
, dla zaoszczędzenia
 miejsca i czytelności kodu.
2. Pętla
for
 przyjmuje trzy argumenty.
a) Pierwszy argument
int LicznikPrzebiegu = 0
 - jest to instrukcja,
  która zostanie wykonana przed pierwszym obiegiem pętli. Zwykle w tym miejscu deklarujemy
  zmienną, dzięki której wyznaczymy liczbę przebiegów.
b) Drugi argument, to warunek wykonania pętli, tak jak w
while
.
c) Trzecim argumentem, jest instrukcja wykonywana po przebiegu pętli. My zwiększamy wartość zmiennej,
  aby pętla zakończyła się po określonej liczbie przebiegów. Warto też powiedzieć o rzeczy, którą wielu
  programistów pomija. Jako ten argument możemy wstawić niemal dowolne wyrażenie np. napisaną przez nas funkcję.
  Dla przykładu pokażę jak mógłby wyglądać kod z początku tego postu, w sposób bardziej wyrafinowany.

C/C++
#include <cstdio>  /* Dolaczam ta dyrektywe, poniewaz wykorzystam funkcje printf z biblioteki stdio.h */

int main()
{
    for( int LicznikPrzebiegu = 0; LicznikPrzebiegu < 5; printf( "Jest to obieg petli nr. %d \n", ++LicznikPrzebiegu ) );
   
    return 0;
   
}

3.Pętla
for
, może nie przyjmować żadnych argumentów, lub tylko ich część np.
C/C++
int JakasZmienna = 0;
for(; JakasZmienna < 10; JakasZmienna += 5 )

4.Jeśli pętla nie ma warunku końca, to jest to pętla nieskończona np.
for(;; )

5. Taka mała ciekawostka z WikiBooks.
W kodzie źródłowym spotyka się często inkrementację i++ . Jest to zły zwyczaj, biorący
się z wzorowania się na nazwie języka C++. Post-inkrementacja i++ powoduje, że tworzony
jest obiekt tymczasowy, który jest zwracany jako wynik operacji (choć wynik ten nie jest
nigdzie czytany). Jedno kopiowanie liczby do zmiennej tymczasowej nie jest drogie, ale w
pętli “for” takie kopiowanie odbywa się po każdym przebiegu pętli. Dodatkowo, w C++ po-
dobną konstrukcję stosuje się do obiektów — kopiowanie obiektu może być już czasochłonną
czynnością. Dlatego w pętli “for” należy stosować wyłącznie ++i
Więc mądrym byłoby wyrobić sobie nawyk pisania ++Zmienna ;)


Tyle ode mnie.
Pozdrawiam!
P-96726
« 1 »
  Strona 1 z 1