Serwis został przeniesiony pod nową domenę: http://cpp0x.pl/
PowrótPowrótHistoria odwiedzonych stron
AutorWiadomość
Data: 2007-10-05 18:08:31

Gabr
Umieszczenie ';' po pętli while(...)

Prze przypadek odkryłem coś takiego.
Proszę by podane programy kopiować i uruchamiać aby muc samemu sprawdzić.
Kolega przesłał mi program:

#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
  int as;
  cout<<"Wpisz liczbe pomiedzy 2 a 10, aby zrobic 'robienie'."<<endl;
  cin>>as;
  do
  {
    cout<<"robienie!"<<endl;
    cin>>as;
  }while((as>=2)&&(as<=10));
  cout<<"JUZ NIEE!!"<<endl<<endl<<endl<<endl;
  cout<<"Kliknij dowolny ass."<<endl;
  getch();
  return(0);
}



Działa on troche źle bo jeśli na samym początku wpisze się inną luczbę niż jest pożądana to pętla się mimo tego włączy. Trzeba zastosoawać tutaj pętlę while żeby ta wpierw sprawdziała czy zmienna pasuje, a jak tak to się uruchomi. (pętla wyłancza się kiedy wpisze się inną liczbę poza 23456789 i 10, taki był cel i został osiągnięty).

Po wprowadzeniu poprawki:

#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
  int as;
  cout<<"Wpisz liczbe pomiedzy 2 a 10, aby zrobic 'robienie'."<<endl;
  cin>>as;
  while((as>=2)&&(as<=10))
  {
    cout<<"robienie!"<<endl;
    cin>>as;
  }
  cout<<"JUZ NIEE!!"<<endl<<endl<<endl<<endl;
  cout<<"Kliknij dowolny ass."<<endl;
  getch();
  return(0);
}



Program dizała tak jak trzeba. Jednak jeśli nie wybierze się na samym początku pożądanej liczby to pętla się nie włączy bo warunek nie został spełniony.
Przez pomyłką po warunku while dałem średnik:

  • while((as>=2)&&(as<=10));


Co mnie zdziwiło program z pętlą while który dział już poprawnie, z średnikiem po warunku działa tak jak ten pierwszy z pętlą do... while.

Czy ktoś mi to wytłumaczy?

Data: 2007-10-05 20:11:57

Piotr Szawdyński
Pętla do...while

za 5min dam odpowiedź wesoły
/edit:

Pętla do...while działa następująco:

1. wejście do bloku który ma się wykonać

2. wykonanie bloku

3. sprawdzenie warunku wyjścia z pętli.

Szczegółowy opis: http://ddt.pl/kursy/?LessonId=12

W Twoim pierwszym programie robisz następujące kroki:

1. wypisujesz komunikat

2. wczytujesz wartość (cin>>as;)

3. rozpoczynasz pętlę

4. wczytujesz kolejny raz wartość (cin>>as;)

5. wypisujesz komunikat (cout<<"robienie!"<<endl;)

6. sprawdzasz warunek pętli do...while

7. kończysz program.

Kroku nr 2. nie powinno być, a program powinien wyglądać następująco:


#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
  int as;
  cout<<"Wpisz liczbe pomiedzy 2 a 10, aby zrobic 'robienie'."<<endl;
  do
  {
    cin>>as;
    cout<<"robienie!"<<endl;
  }while((as>=2)&&(as<=10));
  cout<<"JUZ NIEE!!"<<endl<<endl<<endl<<endl;
  cout<<"Kliknij dowolny ass."<<endl;
  getch();
  return(0);
}
Data: 2007-10-05 20:32:10

Piotr Szawdyński
Pętla do...while

Pętlę do... while możesz wykorzystywać na dwa sposoby:

1. Sposób pierwszy: wiele instrukcji (blok instrunkcji)


while(...)
{
}

2. Sposób drugi: jedna instrukcja;

while(...) instrukcja;

Używając zapisu: while((as>=2)&&(as<=10)); 

informujesz kompilator, że chcesz użyć jednej instrukcji, a ponieważ z reguły każda instrukcja kończy się średnikiem, to program potraktuje, że instrukcja jest między while(...), a średnikiem ;.

W efekcie otrzymujesz pętlę, która działa w nieskończoność.

Data: 2007-10-06 10:09:40

Gabr


Wiedziałem jak działają te pętle. Nie wiedziałem jednak dlaczego po wstawieniu średnika tak zadziała-teraz wiem.
To jeszcze inne rozwiązanie, które podałeś jest bardzo proste, a mimo tego na nie nie wpadłem.
Dzięki.

Data: 2007-10-06 10:53:05

Piotr Szawdyński
Temat zostaje zamknięty

No to temat można uznać za zamknięty wesoły

1



Statystyki tematuOstatnio przeczytali
Czytało użytkowników:37fish13, Gabes, inny1997, pekfos, ricardo83, markon, Piotr Szawdyński, jacek_k, malan, poldek, lenrokskate, Aithne, SeaMonster131, shadix93, Pirotechnik, TheLukon, Iname (√ιק), Pietrzuch, Programer, n3t_b0y, kaxm, WunM, Dante, geftus, Juziogim3, krdk, seba2934, Bantu, Fanael, bigboo
Przeczytało użytkowników:37
Czytało osób ogólnie:75
Przeczytało osób ogólnie:75



PowrótPowrótHistoria odwiedzonych stron
Panel Logowania
Login:
Hasło:

Użytkowników
Obecnie aktywnych:10
Zalogowanych:0
Zarejestrowanych:4367
Ostatnie 24h:720
Non-cookie 24h:2180
Wszystkich:214776
Ostatnia Aktualizacja
2010-09-01 19:27:34 (6 dni temu)
Ostatnio aktywni
fish133 godz
wiewiorka9 godz
Koni10 godz
BuZuz10 godz
Prezmen12 godz
trupank12 godz
szczgl14 godz
filipesq14 godz
KRIIS55116 godz
kuba181716 godz
extra217 godz
pixelmaster18 godz

Wynajem Sopot - wakacje
Pokój 2 osobowy 130zł/doba;
Lokalizacja: Sopot


O portaluArchiwumHistoriaIndeksRegulaminWyszukiwarkaLinki
Kurs HTML - strona WWW za darmoRestauracja "ATOL" - SopotValid HTML 4.01 TransitionalValid CSS!HTML CSS JavaScript FLASH PHP MySQL