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

Problem ze zrozumieniem działania modulo. C++

Object Storage Arubacloud
0 głosów
16,793 wizyt
pytanie zadane 23 stycznia 2016 w C i C++ przez Kerp Nowicjusz (210 p.)

Witam nie wiem jak rozumieć modulo resztę z dzielenia ponieważ gdy sobie licze w tym programie to wychodzi mi na końcu że dla na przykład 101 i%10=1, a  i/100=1,01 czy program sobie przybliża czy ja nie rozumiem jak program działa. Proszę o wytłumaczenie od początku jak działa ten program smiley.

#include <cstdlib>

#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{

for(int i = 100; i<500; i++)

{

if((i/10)%10 != 0 ) 

continue; 

if(i%10 == i/100)
cout<<i<<" ";


}
cout<<endl;

system("PAUSE");
return EXIT_SUCCESS;
}

 

2 odpowiedzi

0 głosów
odpowiedź 24 stycznia 2016 przez Adrian1999 Nałogowiec (34,570 p.)
wybrane 24 stycznia 2016 przez Kerp
 
Najlepsza
% ( modulo) jest to zwykła reszta z dzielenia, to samo w sobie jest już wykonaniem jeżeli weźmiemy np liczbę i = 15. I / przez 10 = 1.5 , 1.5%10 = 1.5, kolejność wykonywania działań. jednak nie wiem co ty chcesz osiągnąć tym kodem, liczby będą zawsze całkowite, będą więc ucinane końce zamiast 1.5 pokaże ci 1, bo używasz zmiennej całkowitej (integer)
komentarz 24 stycznia 2016 przez Kerp Nowicjusz (210 p.)
Kod miał za zadanie pokazanie na ekranie z pośród 500 liczb te które są palindromami czyli 101 202 303 404
komentarz 24 stycznia 2016 przez Adrian1999 Nałogowiec (34,570 p.)
to po co ci modulo? Modulo zawsze ci pokaże liczbę mniejższą niż ona sama, nie możesz mieć tu nawet 10 więc skąd chcesz wziąć 101
komentarz 24 stycznia 2016 przez Kerp Nowicjusz (210 p.)
Ale tu chodzi o to aby wyznaczyć środkowa liczbę 0 i dobrać do niej dwie takie same. modulo jest po to aby móc sprawdzić środkowa z nich czy jest różna 0.
0 głosów
odpowiedź 24 stycznia 2016 przez Grzyboo Nałogowiec (28,860 p.)
Reszta z dzielenia na 10. Co tu jest niejasne?

Dla i = 552

(i/10)%10 => (552/10) %10 => 55 % 10 => 5
komentarz 2 lipca 2016 przez Julenissen Początkujący (270 p.)
Przecież 552%10 = 2   :)
1
komentarz 2 lipca 2016 przez Grzyboo Nałogowiec (28,860 p.)
1. Niezły odkop

2. Gdzie ty tu widzisz 552%10? :P
komentarz 4 lipca 2016 przez Julenissen Początkujący (270 p.)
Cześć

Chyba musiałem czegoś nie zrozumieć. Wybacz, dopiero zapoznaje się z tym tematem. Myślałem, że użyłeś tutaj jakiegoś skrótu myślowego :)

Mógłbyś mi wyjaśnić jedną kwestię? Otóż, napisałeś, że (552/10)%10  => 55 % 10 => 5 i oczywiście masz rację. Chciałbym się jednak upewnić, 552/10 = 55,2, a z tego co się orientuję to wykonując modulo nie można jednak używać liczb wymiernych. Czyli w Twoim przykładzie zwyczajnie zaokrągliłeś liczbę w dół według standardowych zasad. Zgadza się? :)
1
komentarz 5 lipca 2016 przez Grzyboo Nałogowiec (28,860 p.)
Gdy dzielisz przez siebie dwie liczby typu int to automatycznie ucinany jest wszelki wynik po przecinku. Dlatego wynik 552/10 to 55, a nie 55.2
komentarz 5 lipca 2016 przez Julenissen Początkujący (270 p.)

Super, bardzo Ci dziękuję. To wiele wyjaśnia :) A mógłbym prosić o wyjaśnienie jeszcze jednej rzeczy? W 4 odcinku tutoriali o C++ w ok. 7 minucie filmu, Pan Mirosław powiedział, że wylosowany przedział będzie wynosił (0... x-1) ponieważ reszta z dzielenia nie może być większa od liczby x. I tak:

24%25 =24 reszta się zgadza, bo 24<25 (przedział zgodny z założeniem Pana Mirosława)

ale już

269%25=19 czyli reszta również zgadza się z założeniem ponieważ 19<25 mimo, iż 269>25 (przedział jest większy niż dzielnik).

Poniżej linku do filmiku, gdybyś miał ochotę mi pomóc z problemem :) 

https://www.youtube.com/watch?v=QapjTCGV7GM&index=5&list=PLOYHgt8dIdoxx0Y5wzs7CFpmBzb40PaDo&spfreload=07m01s

1
komentarz 5 lipca 2016 przez Grzyboo Nałogowiec (28,860 p.)

Na tym właśnie polega reszta z dzielenia. Weźmy prostsze liczby

2 % 5 - dwa podzielić na pięć jest równe dwie piąte, więc reszta = 2

6 % 5 - sześć podzielić na pięć jest równe jeden i jedna piąta, reszta = 1

19 % 5 - dziewiętnaście podzielić na pięć jest równe trzy i cztery piąte, reszta = 4

127 % 5 - sto dwadzieścia siedem podzielić na pięć jest równe dwadzieścia pięć i dwie piate, reszta = 2

625 % 5 - sześćset dwadzieścia pięć podzielić na pięć to sto dwadzieścia pięć, bez żadnej reszty, reszta = 0

 

% to nie żadna magiczna funkcja, tylko po prostu reszta z dzielenia. Dzielisz daną liczbę całkowitą przez inną całkowitą i zwraca Ci tylko resztę.

 

komentarz 5 lipca 2016 przez Julenissen Początkujący (270 p.)
Ja nie mam problemu ze zrozumieniem modulo. Oczywistym jest, że reszta z dzielenia nie może być większa od liczby przez która dzielimy. Ale chciałbym Ci bardzo podziękować, bo dzięki Tobie zrozumiałem o co chodzi Panu Zelentowi w tym przykładzie, w 7 minucie filmiku. Gdyby liczba którą dzielimy (ta wylosowana) byłaby większa od tej przez którą dzielimy to wynik byłby liczbą z przecinkiem. Dlatego maksymalna liczba przedziału będzie o 1 mniejsza od dzielnika. Jeszcze raz dzięki! :)

Podobne pytania

+1 głos
4 odpowiedzi 496 wizyt
pytanie zadane 6 stycznia 2016 w C i C++ przez kacperoo7 Nowicjusz (200 p.)
+3 głosów
2 odpowiedzi 264 wizyt
pytanie zadane 1 lutego 2016 w C i C++ przez aspoka Mądrala (5,290 p.)
0 głosów
3 odpowiedzi 341 wizyt
pytanie zadane 13 lipca 2020 w C i C++ przez Verdatonix Nowicjusz (150 p.)

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 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!

...