Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Liczby parzyste - dzielenie

Ostatnio zmodyfikowano 2015-10-01 14:41
Autor Wiadomość
wojownik266
Temat założony przez niniejszego użytkownika
Liczby parzyste - dzielenie
» 2015-10-01 09:35:29
Zadaniem poniższego programu jest pobranie od użytkownika jakiejś liczby i podzielenie jej przez współczynniki zawarte w zmiennej num a następnie wyświetlenie wyników tej operacji na wyjściu. Program w stanie obecnym wykonuje te zadania w sposób połowiczny ponieważ jak np. wpiszę liczbę 12 to program wyświetli trzy cztery poprawne wyniki a reszta to bzdury. Nie wiem gdzie popełniłem błąd. Dlatego proszę o jego wskazanie w poniższym kodzie. Co zmienić co dopisać co usunąć itp.

C/C++
#include <iostream>

int main()
{
    int liczba = 0;
    int cyfra = 0;
    int num[] = { 2, 4, 6, 8 };
    std::cout << "Dzielenie liczb parzystych" << std::endl;
    std::cout << "--------------------------" << std::endl;
    std::cout << "Podaj liczbe:";
    std::cin >> liczba;
    for( int i = 0; i < liczba; ++i )
    {
        for( int k = 0; k < 5; ++k ) {
            if( liczba % num[ i ] == i ) {
                std::cout << "Podana liczba jest parzysta" << std::endl;
                std::cout << "Sprawdzenie: " << "\t";
                std::cout << liczba << " = " << num[ k ] << " * " << liczba / num[ k ] << "\t";
                continue;
            }
            else {
                std::cout << "Podana liczba jest nieparzysta" << " ";
                break;
            }
           
        }
        std::cout << std::endl;
        break;
    }
    std::cin.get();
    std::cin.get();
    return 0;
}
P-138059
wojownik266
Temat założony przez niniejszego użytkownika
» 2015-10-01 09:56:50
Chyba już znalazłem rozwiązanie problemu. Przyczyną mojego nieszczęścia była ta instrukcja:
if( liczba % num[ i ] == i )
 Którą należało zmienić na taką:
if( liczba % num[ k ] == i )
To chyba rozwiązuje problem ale tak dla pewności prosiłbym o sprawdzenie. Więc?
P-138060
carlosmay
» 2015-10-01 09:58:46
Sprawdzenie parzystości uzyskasz przy dzieleniu modulo przez 2.

Jeśli liczby przez które dzielisz są parzyste ale inne niż dwa to musisz
jeszcze sprawdzić  czy reszta z dzielenia też jest parzysta.

4/2=2 re. 0
6/4=1 re. 2 -> 2/2=0
12/2=6 re. 0
12/4=3 re. 0
12/6=2 re. 0
12/8=1 re.4 -> 4/2=2re.0 wszystko parzyste

13/8=1 re.5 -> 5/2=2 re. 1 nieparzysta
P-138061
wojownik266
Temat założony przez niniejszego użytkownika
» 2015-10-01 12:17:57
Wydaje mi się że to co napisałeś o parzystości załatwia instrukcja else bo jak wpiszę np. 11 to wyświetlam komunikat że liczba jest nieparzysta i cześć pieśni. A do tego jest to program do dzielenia liczb parzystych. A liczby parzyste to takie liczby które są podzielne przez dwa i których cyfrą jedności są 0,2,4,6,8. Tak że pętle o których piszesz mam też z głowy. Ale zdaję sobie sprawę z tego że mogę się mylić. Tak czy tak bardzo Ci dziękuję za odpowiedź:)
P-138066
wojownik266
Temat założony przez niniejszego użytkownika
» 2015-10-01 12:20:29
Czy ktoś mógłby mi powiedzieć dlaczego kiedy wpiszę np. liczbę 12 to program wyświetla wyniki (to mnie nie dziwi) a potem jeszcze komunikat z pod instrukcji else? Co moim zdaniem nie powinno mieć miejsca? Więc jak to z tym jest w tym przypadku?
P-138067
carlosmay
» 2015-10-01 13:49:04
Sprawdzenie parzystości uzyskasz przy dzieleniu modulo przez 2.

Jeśli liczby przez które dzielisz są parzyste ale inne niż dwa to musisz
jeszcze sprawdzić  czy reszta z dzielenia też jest parzysta.

4/2=2 re. 0
6/4=1 re. 2 -> 2/2=0
12/2=6 re. 0
12/4=3 re. 0
12/6=2 re. 0
12/8=1 re.4 -> 4/2=2re.0 wszystko parzyste

13/8=1 re.5 -> 5/2=2 re. 1 nieparzysta

poparte kodem:
C/C++
int main() {
    int t[] = { 2, 4, 6, 8 };
    int liczba;
   
    cin >> liczba;
    for( int i = 0; i < 4; i++ ) {
        if( liczba % t[ i ] == 0 )
             cout << t[ i ] << ": Liczba " << liczba << " jest parzysta" << endl;
        else {
            int reszta = liczba % 2;
            if( reszta )
                 cout << t[ i ] << ": Liczba " << liczba << " nie jest parzysta" << endl;
            else
                 cout << t[ i ] << ": Liczba " << liczba << " jest parzysta" << endl;
           
        }
    }
   
    _getch();
}
 jeśli taki miało to mieć sens.
P-138068
wojownik266
Temat założony przez niniejszego użytkownika
» 2015-10-01 14:41:55
Tak!!! Właśnie taki to miało mieć sens. Dziękuję!)
P-138071
« 1 »
  Strona 1 z 1