

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;
}
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;
}
Kratší...
Na tohle použít rekurzi? No fuj.
Umí bežné kompilátory odhalit a optimalizovat takovéhle tragické použití rekurze?
Preco tragicke? Vyhoda je hlavne v tom ze to tie cifry vypise v spravnom poradi. Na rozdiel od toho co robil dotazovatel. Neni to jedno! A s cykom to neni tak elegantne (s cyklom si musis testovat uvodne nuly a tie nezobrazovat apod). Rekurzia je idealna ptz defakto pouziva stack na uchovavanie tych predoslych cifier ked scanujes zprava. inac by si musel alokovat RAM.
A prekladac nic neopravuje ptz to ani nijak upravit ani opravit nejde bez zmeny funkcionality.
+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
alebo to same len univerzalnejsie vzhladom na zaklad sustavy
alebo
Tak tohle je ještě hezčí...
Ale musim povedat ze ked som to zadanie cital vcera tak ma rekurzia vobec nenapadla, aj ked toto je absolutne idealny priklad na vyhody rekurzie, asi uz starnem kua idem poziadat o dochodok :D Idealnejsie zadanie na rekurziu asi ani neexistuje :)
Já si to pamatoval ještě z výšky, kde jsme tenhle problém měli řešit rekurzí..
EDIT: Ten třeti example je fajn, ale HEX čísla to neumí...
No skoro dobre, akorat vystup je binarni cislo zapsane POZPATKU - napr. 4 ti to napise 001 misto 100
taky jsem se divil, ale pak jsem si řekl, že to "asi" nevadí.