• 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?

Object Storage Arubacloud
0 głosów
110 wizyt
pytanie zadane 26 listopada 2020 w C i C++ przez tonn204 Mądrala (7,440 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,440 p.)
Nie działa :((
0 głosów
odpowiedź 26 listopada 2020 przez tonn204 Mądrala (7,440 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ź 91 wizyt
pytanie zadane 3 czerwca 2016 w C i C++ przez k222 Nałogowiec (30,150 p.)
+1 głos
0 odpowiedzi 85 wizyt
pytanie zadane 16 stycznia 2021 w C i C++ przez tonn204 Mądrala (7,440 p.)
0 głosów
1 odpowiedź 162 wizyt
pytanie zadane 19 lutego 2018 w C i C++ przez norbik543 Użytkownik (690 p.)

92,551 zapytań

141,400 odpowiedzi

319,531 komentarzy

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

...