96 lines
2.1 KiB
C
96 lines
2.1 KiB
C
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
long int ZahlBinaer(int num)
|
|
{
|
|
int sum = 0;
|
|
for (int mult = 1, mod = 2; num > 0; mult *= 10, mod *= 2)
|
|
{
|
|
if (num % mod)
|
|
{
|
|
sum += mult;
|
|
num -= mod / 2;
|
|
}
|
|
}
|
|
return sum;
|
|
}
|
|
int ZahlOktal(int num)
|
|
{
|
|
int sum = 0;
|
|
for (int mult = 1, mod = 8, div = 1; num > 0; mult *= 10, mod *= 8, div *= 8)
|
|
{
|
|
if (num % mod)
|
|
{
|
|
sum += (num % mod / div) * mult;
|
|
num -= num % mod;
|
|
}
|
|
}
|
|
return sum;
|
|
}
|
|
int main(int argc, char *argv[])
|
|
{
|
|
int doBin = 0;
|
|
int doHex = 0;
|
|
int doOct = 0;
|
|
int num = 0;
|
|
|
|
for (int i = 1; i < argc; i++)
|
|
{
|
|
if (argv[i][0] != '-')
|
|
{
|
|
if (num == 0)
|
|
{
|
|
num = atoi(argv[i]);
|
|
printf("Dezimal: %d\n", num);
|
|
if (argc == 2)
|
|
{
|
|
doBin = 1, doHex = 1, doOct = 1;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
printf("Nur eine Zahl ist erlaubt!\n\n");
|
|
printf("Nur folgende Parameter sind erlaubt:\n--b Binaersystem\n--o Oktalsystem\n--h Hexadezimalsystem");
|
|
return 0;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
int j = 2;
|
|
while (argv[i][j] != '\0')
|
|
{
|
|
if (argv[i][j] == 'b')
|
|
{
|
|
doBin = 1;
|
|
}
|
|
else if (argv[i][j] == 'o')
|
|
{
|
|
doOct = 1;
|
|
}
|
|
else if (argv[i][j] == 'h')
|
|
{
|
|
doHex = 1;
|
|
}
|
|
else
|
|
{
|
|
printf("Unerlaubte Option: --%c\n", argv[i][j]);
|
|
return 0;
|
|
}
|
|
j++;
|
|
}
|
|
}
|
|
}
|
|
if (doBin)
|
|
{
|
|
printf("Binär: %ld\n", ZahlBinaer(num));
|
|
}
|
|
if (doHex)
|
|
{
|
|
printf("Hexadezimal: %X\n", num);
|
|
}
|
|
if (doOct)
|
|
{
|
|
printf("Oktal: %d\n", ZahlOktal(num));
|
|
}
|
|
return 1;
|
|
} |