Witam mam napisany program zamieniający liczby z systemu dziesiętnego na dwójkowy i szesnastkowy. Niestety jest on napisany w c++ i potrzebowałem go zamienić na C i napotkałem na problem podczas wyświetlania wyniku typu char otóż nie mogę sformatować printf tak żeby działało to jak w c++
Tutaj program w c++
#include <iostream> #include <math.h> #include <stdio.h> double x,y; int k,l,liczba[9],n; using namespace std; int main() { x=2.1; y=(17*tan(x))/(6.3-pow(tan(x),3)); if(y<0); { y=-y; } printf("x=%f y=%18.15f\n",x,y); for(int i=0; i<=8; i++) { if(y<1.) { y=y*10; k=y; } else { k=y; } if(y>10) { y=y/10; k=y; } else { k=y; } liczba[i]=k; y=y-k; } l=liczba[0]*10+liczba[2]; string wynik; n=l; while(n){ wynik = (n%2?"1":"0") + wynik; n /= 2; } cout<<l<<endl; printf("W systemie szestastkowym y to %x", l); cout<<endl<<"W systemie dwojkowym y to "<<wynik<<endl; return 0; }
a tutaj w C
#include <math.h> #include <stdio.h> double x,y; int k,l,liczba[9],n,i; int main() { x=2.1; y=(17*tan(x))/(6.3-pow(tan(x),3)); if(y<0); { y=-y; } printf("x=%f y=%18.15f\n",x,y); int i=0; do { if(y<1.) { y=y*10; k=y; } else { k=y; } if(y>10) { y=y/10; k=y; } else { k=y; } liczba[i]=k; y=y-k; i++; }while(i<=8); l=liczba[0]*10+liczba[2]; char wynik; n=l; while(n){ wynik = (n%2?"1":"0") + wynik; n /= 2; } printf("W systemie dziesiętnym %d\n",l); printf("W systemie szestastkowym y to %x\n", l); printf("W systemie dwojkowym y to % ",wynik); return 0; }
Gdy ustawiam format "s" wywala nie wysyłaj :P a pozostałe formaty wyświetlają zupełnie co innego :P