[c++] Schemat blokowy - problem ze zrozumieniem części kodu

Monikaxx
Użytkownik
Użytkownik
Posty: 4
Rejestracja: 22 paź 2014, o 18:45
Płeć: Kobieta
Lokalizacja: krk

[c++] Schemat blokowy - problem ze zrozumieniem części kodu

Post autor: Monikaxx »

Narysować schemat blokowy programu:

Kod: Zaznacz cały

int main() {
 int a;
 cin >> a;
 while a>0 {
 if (a%3==0) cout<<a; 
 a=a/2; 
 }
}
o) Co wypisze powyższy program jeżeli wprowadzimy wartość 23


Próbka mojego schematu:
AU
AU
19315872184f7163m.jpg (2.88 KiB) Przejrzano 79 razy
[/url]

Wiem, że w programie chodzi o sprawdzenie dzielenia przez 3, ale a=a/2 nie wiem jaką funkcję w tym miejscu spełnia....

Dziękuję z góry za pomoc.
Ostatnio zmieniony 22 paź 2014, o 22:26 przez Afish, łącznie zmieniany 1 raz.
Powód: Brak tagów code.
Awatar użytkownika
Kacperdev
Użytkownik
Użytkownik
Posty: 3260
Rejestracja: 23 mar 2010, o 19:19
Płeć: Mężczyzna
Lokalizacja: Bydgoszcz
Podziękował: 17 razy
Pomógł: 686 razy

[c++] Schemat blokowy - problem ze zrozumieniem części kodu

Post autor: Kacperdev »

Jeżeli tego by nie było program by się zapetlił bo ciągle by sprawdzał podzielność dla tej samej liczby.
Monikaxx
Użytkownik
Użytkownik
Posty: 4
Rejestracja: 22 paź 2014, o 18:45
Płeć: Kobieta
Lokalizacja: krk

[c++] Schemat blokowy - problem ze zrozumieniem części kodu

Post autor: Monikaxx »

Nie wiem jak do końca powinien wyglądać ten schemat...

Co wypisze powyższy program jeżeli wprowadzimy wartość 23?

Jak mniemam wypisze 2?
Awatar użytkownika
Kacperdev
Użytkownik
Użytkownik
Posty: 3260
Rejestracja: 23 mar 2010, o 19:19
Płeć: Mężczyzna
Lokalizacja: Bydgoszcz
Podziękował: 17 razy
Pomógł: 686 razy

[c++] Schemat blokowy - problem ze zrozumieniem części kodu

Post autor: Kacperdev »

Schemat jest prawie skońoczny. Brakuje STOPu na drugim ramieniu oraz rozgalezienia na tym pierwszym. (warunek z ifem)

Wczuj się w program i przeanalizuj go

23 nie dzieli się przez 3...
23 zamienia sie na 11 (dzielenie całkowite)
11 nie dzieli sie przez 3..
11 zamienia się na 5
5 nie dzieli sie przez 3...
itd.
Monikaxx
Użytkownik
Użytkownik
Posty: 4
Rejestracja: 22 paź 2014, o 18:45
Płeć: Kobieta
Lokalizacja: krk

[c++] Schemat blokowy - problem ze zrozumieniem części kodu

Post autor: Monikaxx »

Teraz dobrze?
AU
AU
d0a0f04fa5263e2fm.jpg (2.78 KiB) Przejrzano 79 razy
[/url]


Yhh.. Nie wiem co wypisze a=a/2 przy 23

23 nie dzieli się przez 3...
23 zamienia sie na 11 (dzielenie całkowite)
11 nie dzieli sie przez 3..
11 zamienia się na 5
5 nie dzieli sie przez 3...

Teraz dostaniemy 2 które, nie dzieli się przez 3...
2 zamienia się na 1
1 nie dzieli sie przez 3...


i co teraz? Program wypisze 1?
Awatar użytkownika
Kacperdev
Użytkownik
Użytkownik
Posty: 3260
Rejestracja: 23 mar 2010, o 19:19
Płeć: Mężczyzna
Lokalizacja: Bydgoszcz
Podziękował: 17 razy
Pomógł: 686 razy

[c++] Schemat blokowy - problem ze zrozumieniem części kodu

Post autor: Kacperdev »

Nie. 1 zamieni sie na 0... i wtedy już nie wejdzie w pętle i ostetcznie się skończy. Więc program nic nie wypisze.

Zobacz, że na warunku jest tak:

jezeli a dzieli się przez 3 to wypisz wartość a. <-- i tylko to!

Poza tym w schemacie nie ma tego wypisywania wartosci.
Monikaxx
Użytkownik
Użytkownik
Posty: 4
Rejestracja: 22 paź 2014, o 18:45
Płeć: Kobieta
Lokalizacja: krk

[c++] Schemat blokowy - problem ze zrozumieniem części kodu

Post autor: Monikaxx »

Ok dzięki. Teraz już wszystko dla mnie jasne.
ODPOWIEDZ