• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Prosty program - wchodzi funkcja else.

Object Storage Arubacloud
–1 głos
363 wizyt
pytanie zadane 5 marca 2017 w C i C++ przez WhiteHartLane Nowicjusz (170 p.)
Witam.

Cały czas uczę się tych prostych programów C++ i zależy mi, żeby dobrze przygotować się do sprawdzianu z tego działu. Nawet ogarnąłem proste programy z for(int...) i teraz mam nowy program do analizy, widzę jakieś polecenia z kosmosu "while", a!, czy else. O ile wiem co oznaczają one z angielskiego to jak działają w C++ i jakie mają zastosowanie.

#include <iostream>
using namespace std;
int main() {
int a=4, b=22;
while (a!=b)
if(a>b)
a=a-b;
else
b=b-a;
cout<<a;
retunr 0; }

To jest program, który analizuję, wynik wychodzi 2, ale dlaczego? Mógłby ktoś opisać krok po kroku?
Pozdrawiam.

2 odpowiedzi

+1 głos
odpowiedź 5 marca 2017 przez Marchewka900 Bywalec (2,970 p.)
edycja 6 marca 2017 przez Marchewka900

Jasne.

 

#include <iostream>      //Dodajesz bibliotekę iostream

using namespace std;    //Ustalasz przestrzeń nazw std

int main()     //main, czyli main
{
    int a=4, b=22;   //tworzysz zmienne a=4 i b=22
   
    while (a!=b)      //Tu opiszę później, bo to główny problem nad którym się zastanawiasz
    {
           if(a>b)          //jeśli a jest większe od b
               a=a-b;        //a równe a-b
           else            //To też opiszę później, ze spokojem
               b=b-a;         //b równe b-a
    }
     cout<<a;           //Pokaż zmienną a na ekranie
     return 0;            //Zwróć wartość 0
}

i teraz... Najpierw to tajemnicze while:
while to pętla, tak samo jak for(int i...). Działa tylko inaczej. W tym typie pętli wykonuje się ona ciągle dopóki warunek przy niej jest prawdziwy. Czyli nie określasz z góry ile razy ma się wykonać (jak w pętli for). Warunek jest zapisany w nawiasie. Też masz z nim problem, więc już wyjaśniam.

(a!=b)... Jak się może domyślasz, oznacza to porównanie jakichś wartości. Mamy kilka takich "operatorów":

== - Jest to porównanie, np. "a==b" oznacza "czy a jest równe b?"
<= / >= - Dwa podobne operatory, pierwszy oznacza "Czy a jest mniejsze lub równe b?" drugi to to samo, tylko że większe lub równe.
> / < - "Czy a jest większe/mniejsze od b?"

!= - To jest ten operator. Oznacza on "czy a jest różne od b?". Czyli czy ma inną wartość.

Z kolei mamy teraz to dziwne else. Jest ono bardzo łatwe do zrozumienia, tak jak mówisz, z angielskiego: oprócz.
Najpierw dajemy polecenie if. Potem możemy dać trzy różne polecenia:

if - jeśli, nic specjalnego.
else - oprócz, czyli jeśli if zwróci wartość fałsz (warunek nie jest prawdziwy, np. a nie równa się b przy warunku (a==b), to wtedy właśnie bezwzględnie wykona się instrukcja zawarta w tym poleceniu. W wypadku twojego kodu wykona się instrukcja b=b-a.
else if - tutaj jest troszkę inaczej. Jeśli if zwróci fałsz, to wykona się ten else, ale tylko jeśli jego warunek zwróci prawdę. Do tego właśnie dodajemy warunek.

Teraz tylko pokażę ci dlaczego wychodzi wartość 2.

1. a=4, b=22. a jest mniejsze od b, więc teraz b=b-a, czyli b=18.
2. a=4, b=18. a jest mniejsze od b, więc teraz b=14 (To samo).
3. a=4, b=14. a jest mniejsze od b, więc teraz b=10 (Znów to samo).
4. a=4, b=10. Znów to samo, b=6. 
5. a=4, b=6. Znów to samo, b=2.
6. a=4, b=2. Teraz a jest większe od b, więc a=a-b. Czyli a=4-2=2.

No i masz a=2.
   

komentarz 5 marca 2017 przez Marchewka900 Bywalec (2,970 p.)
P.S. Jak czegoś nie rozumiesz, mów :)

2 P.S. Łap filmik w którym pan Mirosław Zelent tłumaczy pętle:
https://www.youtube.com/watch?v=y6GOYVTVvqo&list=PLOYHgt8dIdoxx0Y5wzs7CFpmBzb40PaDo&index=4&t=315s
0 głosów
odpowiedź 5 marca 2017 przez tangarr Mędrzec (154,860 p.)

while (warunek_logiczny) <-- jest to pętla która wykonuje się tak długo jak spełniony jest warunek_logiczny (poczytaj)

a!=b <-- oznacza a różne od b (poczytaj)

instrukcja warunkowa if(warunek) sprawdza czy spelniony jest warunek i wykonuje następną instrukcę (lub blok kodu), else oznacza, że następna linijka (lub blok kodu) maja byc wykonane jezeli warunek instrukcji if nie jest spelniony (poczytaj)

Podobne pytania

0 głosów
2 odpowiedzi 1,763 wizyt
pytanie zadane 4 października 2016 w C i C++ przez Tymek Nowicjusz (160 p.)
0 głosów
0 odpowiedzi 700 wizyt
pytanie zadane 22 marca 2017 w C i C++ przez Michał Wójtowicz Nowicjusz (120 p.)
–1 głos
4 odpowiedzi 161 wizyt
pytanie zadane 5 marca 2017 w C i C++ przez WhiteHartLane Nowicjusz (170 p.)

92,583 zapytań

141,434 odpowiedzi

319,669 komentarzy

61,966 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...