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

Program wypisujący 10 pierwszych liczb całkowitych dodatnich, które są nieparzyste i podzielne przez 5.

VPS Starter Arubacloud
0 głosów
662 wizyt
pytanie zadane 8 maja 2022 w C i C++ przez ace2980 Nowicjusz (120 p.)
Napisz program który wypisze 10 pierwszych liczb całkowitych dodatnich, które są nieparzyste i podzielne przez 5.
Czy mogę dostać jakieś wskazówki jak taki program napisać? Jestem totalnym beginnerem i dopiero się uczę kodować. Z góry wielkie dzięki za każdą chęć pomocy.

1 odpowiedź

+2 głosów
odpowiedź 8 maja 2022 przez Apled Dyskutant (9,520 p.)
Zakładam, że nie podajesz żadnych wartości "z ręki", więc wystarczy zrobić sobie zmienną, np. counter i ją inkrementować, za każdym razem jak znajdziesz liczbę spełniającą założenie.

Potrzebujesz do tego pętli, która będzie się wykonywać, aż znajdziesz 10 takich liczb, czyli gdy counter == 10, a właściwie counter < 10, bo zaczynasz liczyć od 0. Pętla while się tutaj jak najbardziej nada.

Jak znaleźć wymaganą liczbę? Wystarczy sprawdzać czy jest ona niepodzielna przez 2 i zarazem podzielna przez 5. Jak to sprawdzić? Wystarczy, że poczytasz o operatorze modulo (znak '%') i odrazu dostaniesz odpowiedź. Jak znajdziesz taką liczbę to zwiększasz counter i wypisujesz wartość, a jak nie spełnia warunku to... nic nie robisz.
komentarz 8 maja 2022 przez ace2980 Nowicjusz (120 p.)
edycja 8 maja 2022 przez ace2980

Udało mi się napisać taki kod, ale z jakiegoś powodu zaczyna wypisywać od liczby 25, a nie 5. Co trzeba by było w nim poprawić, aby zaczął od liczby 5?

#include <iostream>

using namespace std;

int main()
{
    int counter=1;
    int liczba;

    while(counter<=10)
    {
        liczba++;
        if(liczba%5==0 && liczba%2!=0)
        {
            cout << counter << ". " << liczba << endl;
            counter++;
        }

    }
}

 

komentarz 8 maja 2022 przez Apled Dyskutant (9,520 p.)
    int counter;
    int liczba;

tu jest problem, bo zmienne nie są zainicjalizowane, więc do czego dodajesz? Od czego zaczynasz liczenie? Musisz dać counter = 0 lub 1, zależy czy sprawdzasz < 10 czy <= 10. Podobnie z liczba - również 0 albo 1, w zależności od czego chcesz zaczynać.

Dobrą praktyką jest inicjalizowanie zmiennych ZAWSZE. Nawet jak teraz ich nie będziesz używał, to choćby to 0 im przypisać.

Nie wiem jakiego IDE używasz, ale taki kod albo się nie skompiluje, albo będzie działa błędnie.

if(liczba%5==0 && liczba%2!=0)

Lepiej by było, żebyś zrobił warunek odwrotnie, tj. najpierw modulo 2 potem modulo 5. Dlaczego? Dlatego, że operacja AND sprawdza warunki po kolei. Więc jak pierwszy warunek nie zostanie spełniony, tak już dalej nie będzie sprawdzać, bo operacja tym samym musi zwrócić fałsz. Czyli lepiej sprawdzać, czy liczba % 2 != 0, bo masz po drodze więcej liczb niebędących podzielnymi przez 5, więc warunek liczba % 5 == 0 i tak nie będzie spełniony to po co go sprawdzać za każdym razem? Na tym etapie niby nie musisz zwracać na to większej uwagi, ale jak od razu zaczniesz to potem będzie Ci łatwiej wyrobić sobie lepsze podejście do problemu.

1
komentarz 8 maja 2022 przez ace2980 Nowicjusz (120 p.)

Dzięki wielkie za pomoc. Kod teraz działa poprawnie laugh

komentarz 8 maja 2022 przez Apled Dyskutant (9,520 p.)
Sprostowanie.

Po fakcie się zorientowałem, że źle ci o ifie powiedziałem. Najpierw modulo z 5 jest tutaj lepsze, bo założenie mówi, że MUSI być podzielne przez 5, więc lepiej zacząć sprawdzanie właśnie od tego, bo szybciej będziesz odrzucał nie pasujące liczby.

Wcześniej coś mi się pomyliło i podałem Ci tą logikę trochę na odwrót.

Podobne pytania

0 głosów
1 odpowiedź 665 wizyt
pytanie zadane 13 maja 2022 w C i C++ przez Hektor1025 Nowicjusz (210 p.)
+1 głos
0 odpowiedzi 996 wizyt
pytanie zadane 3 października 2021 w C i C++ przez elobenc123 Nowicjusz (130 p.)
0 głosów
0 odpowiedzi 95 wizyt

92,452 zapytań

141,262 odpowiedzi

319,085 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...