Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno jazyk C - premena z desiatkovej sustavy na binarnu

zdravim mam problem s tymto jednoduchym binarnym kodom nenapise mi to nic vobec nic a neviem preco
matematicky to je spravne nie?? akorat neviem ci ked to nepodelim nevyde mi aj zvysok ze by som dal celociselnu premennu ale zas ci by to zistilo ten zvysok po deleni :D

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

int main()
{
    int desiatkova;
    int dvojkova;
    printf ("Zadaj prirodzene cislo v desiatkovej sustave: ");
    scanf("%d",&desiatkova);
    while (desiatkova<0)
    {
        if((desiatkova%2)==0)
        {
            printf("0");
        }
        if((desiatkova%2)==1)
        {
            printf("1");
        }
        desiatkova/2;
    }
    getchar();
    return 0;
}
Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Takze uz to mam takto to vyzera funkcne :) dakujem chalani za ochotu a rady #include <stdio.h> #inc…
Mythirn 22.10.2013 12:57
Mythirn
void prevod( int num1 ) { if( num1 == 0 ) { return; } prevod( num1 / 2 ); cout << num1 % 2; } Krat…
MaSo 22.10.2013 13:39
MaSo
+1 :) akurat ti to nezobrazi 0 ak je num1=0. Spravnejsie (s vypisom 0 ak je 0) a aj kratsie by to as… nový
MM.. 23.10.2013 11:41
MM..
Tak tohle je ještě hezčí...:beer: nový
MaSo 23.10.2013 11:47
MaSo
Ale musim povedat ze ked som to zadanie cital vcera tak ma rekurzia vobec nenapadla, aj ked toto je… nový
MM.. 23.10.2013 11:55
MM..
Já si to pamatoval ještě z výšky, kde jsme tenhle problém měli řešit rekurzí..;-) EDIT: Ten třeti e… poslední
MaSo 23.10.2013 12:31
MaSo

Takze uz to mam takto to vyzera funkcne :) dakujem chalani za ochotu a rady

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

int main()
{
unsigned int desiatkova;
printf ("Zadaj prirodzene cislo v desiatkovej sustave: ");
scanf("%d",&desiatkova);
while (desiatkova>=1)
{
if((desiatkova%2)==0)
{
printf("0");
}
if((desiatkova%2)==1)
{
printf("1");
}
desiatkova=desiatkova/2;
}
printf (" - Toto je cislo v binarnej sustave.");
getchar();
return 0;
}

+1 :) akurat ti to nezobrazi 0 ak je num1=0. Spravnejsie (s vypisom 0 ak je 0) a aj kratsie by to asi mohlo byt napr. takto

void prevod( unsigned int num )
{
  if(num>=2)
     prevod(num>>1);
  cout << (num&1);
}

alebo to same len univerzalnejsie vzhladom na zaklad sustavy

void prevod( unsigned int num )
{
  if(num>=2)
     prevod(num/2);
  cout << (num%2);
}

alebo

void prevod( unsigned int num, unsigned int zaklad )
{
  if(num>=zaklad)
     prevod(num/zaklad);
  cout << (num%zaklad);
}

Zpět do poradny Odpovědět na původní otázku Nahoru