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

question-closed Przedziały i liczby rzeczywiste w sprawdzaniu podzielności

Object Storage Arubacloud
0 głosów
329 wizyt
pytanie zadane 30 lipca 2016 w C i C++ przez Fluskys Nowicjusz (230 p.)
zamknięte 30 lipca 2016 przez Fluskys

Witam, mam program wypisujący liczby naturalne z przedziału (2;16> podzielne przez 2. Problem z którym się zmagam jest nastepujący:

- #1 Czy jest jakiś sposób na to aby 2 (nie należące do przedziału) nie było uznawane za podzielne przez 2 ?

- #2 Operator "%" nie sprawdza się w przypadku gdy chcę zastosować liczby rzeczywiste (np. podzielne przez 0.5), czy robię coś źle?

int main()
{
    int DolnyPrzedzial=2/*otwarty*/, GornyPrzedzial=16/*domkniety*/, dzielnik=2;
    for (int i=DolnyPrzedzial; i<=GornyPrzedzial; i++)
    {
        if (i%dzielnik==0)
        {
            cout<<i<<"\t";
        }
    }
    return(0);
}
int main()
{
    double DolnyPrzedzial=2.0/*otwarty*/, GornyPrzedzial=16.0/*domkniety*/, dzielnik=0.5;
    for (double i=DolnyPrzedzial; i<=GornyPrzedzial; i++)
    {
        if (i%dzielnik==0)
        {
            cout<<i<<"\t";
        }
    }
    return(0);
}

 

komentarz zamknięcia: Rozwiązane

2 odpowiedzi

+2 głosów
odpowiedź 30 lipca 2016 przez Wi_ktos Bywalec (2,950 p.)
edycja 30 lipca 2016 przez Wi_ktos

#1       Jeśli chodzi o pierwszą sytuację to masz wyjście albo ustawić dolny przedział na zaczynający się od 3 (Chodzi o liczby całkowite z twojego przedziału więc równie dobrze możesz zacząć go od 3 ---> i po co utrudniać sobie życie z przedziałem otwartym). Jeśli jednak chcesz aby dolny przedział zaczynał się mimo wszystko od 2 to ustaw alternatywę w wyrażeniu warunkowym instrukcji if czyli if(i % dzielnik == 0 && i != 2) dzięki temu w momencie sprawdzanie warunku kompilator odrzuci i , które będzie równe 2 a o to chodzi smiley.
#2       Operator % działa tylko dla liczb całkowitych 
Pozdro !
 

komentarz 30 lipca 2016 przez Fluskys Nowicjusz (230 p.)
Dziękuje
+2 głosów
odpowiedź 30 lipca 2016 przez Szykem2 Nałogowiec (29,510 p.)
Nie ma możliwości uznać 2 za niepodzielne przez 2 ale, skoro przedział ma być otwarty, możesz iterować od liczby o 1 większej.

Operator % działa tylko dla liczb całkowitych. Jeżeli chcesz dla liczb rzeczywistych użyj funkcji fmod(plik nagłówkowy cmath).
komentarz 30 lipca 2016 przez Fluskys Nowicjusz (230 p.)
Dziękuje

Podobne pytania

0 głosów
2 odpowiedzi 291 wizyt
pytanie zadane 18 października 2022 w C i C++ przez Perkol02 Nowicjusz (120 p.)
0 głosów
1 odpowiedź 624 wizyt
0 głosów
1 odpowiedź 876 wizyt

92,556 zapytań

141,404 odpowiedzi

319,561 komentarzy

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

...