Witam serdecznie. Na jutro musze oddać program na zaliczenie, który miał zmieniać liczby dziesietne na heksadecymalne/binarne. Na końcu doczytałem że wprowadzone do programu liczby będą ujemne. Pierwszy raz spotkałem się z konwersją liczb ujemnych i kompletnie nie wiem z czym to sie je. Oto kod mojego programu, i tutaj pytanie. Czy jest możliwość jedynie modyfikacji tego, co do tej pory wyskrobałem czy program jest do kosza?
#include<stdio.h>
void dziesietneNaHeksa(long int dzies){
long int liczba;
int i=1,j,wynik;
char heksadecymalna[100];
liczba = dzies;
while(liczba!=0){
wynik = liczba % 16;
//Zamieniamy integer na character. Korzystając z tabeli ASCII
if( wynik < 10)
wynik =wynik + 48; // 48 - w ASCII liczba "0"
else
wynik = wynik + 55; // 55 + min.10 = 65 - w ASCII litera 'A'
heksadecymalna[i++]= wynik;
liczba = liczba / 16;
}
printf("Po zamianie %ld na system heksadecymalny : ",dzies );
printf("\n");
for(j = i -1 ;j> 0;j--)
printf("%c",heksadecymalna[j]);
}
void dziesietneNaBinarne(long int dzies){
long int liczba;
int binarna[100],i=1,j;
liczba = dzies;
while(liczba!=0){
binarna[i++]= liczba % 2;
liczba = liczba / 2;
}
printf("Po zamianie %ld na system binarny:\n ",dzies);
for(j = i -1 ;j> 0;j--)
printf("%d",binarna[j]);
}
int main(){
long int dziesietna;
printf("Wprowadź liczbę dziesiętną : ");
scanf("%ld",&dziesietna);
dziesietneNaHeksa(dziesietna);
printf("\n");
dziesietneNaBinarne(dziesietna);
printf("\n");
return 0;
}