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

question-closed Dlaczego ten program poprawnie nie zamienia liczby na jej binarny odpowiednik?

Cloud VPS
0 głosów
224 wizyt
pytanie zadane 26 listopada 2020 w C i C++ przez tonn204 Mądrala (7,470 p.)
zamknięte 26 listopada 2020 przez tonn204

Cześć, chcę napisać program, który zamienia liczby z systemu decymalnego na binarny. Problem polega na tym, że gdy liczba jest parzysta zamiana jest poprawna, ale gdy liczba nie jest parzysta wynik nie jest poprawny (na pierwszym miejscu nie ma jedynki). Gdzie tu jest błąd?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    int number = 13;
    int numberRP = 1;
    int binary[10];
    int z = 0;

    while (numberRP != 0)
    {
        z+=1;
        number = number/2;
        if (number%2>0)
        {
            binary[z] = 1;
        }
        else
        {
            binary[z] = 0;
        }
    }

    for (int i = 0; i<10 ; i++)
    {
        printf("%d", binary[i]);
    }

    return 0;
}

 

komentarz zamknięcia: Problem został rozwiązany

2 odpowiedzi

0 głosów
odpowiedź 26 listopada 2020 przez wojtek_suchy Mądrala (6,880 p.)

Bo w warunku masz numberRP a nie number

komentarz 26 listopada 2020 przez tonn204 Mądrala (7,470 p.)
Nie działa :((
0 głosów
odpowiedź 26 listopada 2020 przez tonn204 Mądrala (7,470 p.)

Udało mi się naprawić program. Poprawiony kod wygląda tak:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    int number = 13;
    int numberRP = 1;
    int binary[10];
    int z = 0;

    while (numberRP != 0)
    {
        if (number%2>0)
        {
            binary[z] = 1;
            z+=1;
            number = number/2;
        }
        else
        {
            binary[z] = 0;
            z+=1;
            number = number/2;
        }
    }

    for (int i = 0; i<10 ; i++)
    {
        printf("%d", binary[i]);
    }

    return 0;
}

 

komentarz 27 listopada 2020 przez wojtek_suchy Mądrala (6,880 p.)

Przecież masz nieskończoną pętle w programie warunek

    while (numberRP != 0)

zawsze będzie prawdziwy bo w kodzie w żaden sposób nie modyfikujesz tej zmiennej, możesz spokojnie ją usunąć, zamiast numberRP użyj number bo ją modyfikujesz

Podobne pytania

0 głosów
1 odpowiedź 131 wizyt
pytanie zadane 3 czerwca 2016 w C i C++ przez k222 Nałogowiec (30,150 p.)
+1 głos
0 odpowiedzi 132 wizyt
pytanie zadane 16 stycznia 2021 w C i C++ przez tonn204 Mądrala (7,470 p.)
0 głosów
1 odpowiedź 223 wizyt
pytanie zadane 19 lutego 2018 w C i C++ przez norbik543 Użytkownik (690 p.)

93,482 zapytań

142,414 odpowiedzi

322,761 komentarzy

62,894 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

Kursy INF.02 i INF.03
...