Last active
November 1, 2018 18:36
-
-
Save Intey/7a7e204c0633c01097c6bd64ff79b181 to your computer and use it in GitHub Desktop.
Revisions
-
Intey revised this gist
Nov 1, 2018 . No changes.There are no files selected for viewing
-
Intey created this gist
Nov 1, 2018 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,105 @@ #include <stdio.h> // scanf, printf #include <math.h> // pow int slen(char* s) { int res = 0; while(*s) { res++; s++; } return res; } int fromBin(char* s) { int result = 0; int len = slen(s); for (int i = 0; i < len; ++i) { if (s[i] == '0') { } else if (s[i]== '1') { result += 1 * pow(2, len - i - 1); } else { return -1; } } return result; } int fromDec(char* s) { return 0; } int fromOct(char* s) { int result = 0; int len = 0; len = slen(s); for (int i = 0; i < len; ++i) { if (s[i] == '0') { } else if (s[i] == '1') { result += 1 * pow(8, len - i -1); } else if (s[i] == '2') { result += 2 * pow(8, len - i - 1); } else if (s[i] == '3') { result += 3 * pow(8, len - i - 1); } else if (s[i] == '4') { result += 4 * pow(8, len - i - 1); } else if (s[i] == '5') { result += 5 * pow(8, len - i - 1); } else if (s[i] == '6') { result += 6 * pow(8, len - i - 1); } else if (s[i] == '7') { result += 7 * pow(8, len - i - 1); } else { return -1; } } return result; } int main(int argc, char *argv[]) { // +1 к длинне, чтобы считать \0 завершение строки, иначе массивы станут одим // целым int b = 0; char r[7]; scanf("%d", &b); scanf("%6s", r); printf("%d %s\n", b, r); int v; // число в десятичной char* res; // результирующая строка if (b == 2) { v = fromBin(r); if (v < 0) { printf("number is wrong\n"); return 0; } printf("%x \n", v); } else if (b == 8) { v = fromOct(r); if (v < 0) { printf("number is wrong\n"); return 0; } printf("%x\n", v); } else if (b == 10 ) { v = fromDec(r); if (v < 0) { printf("number is wrong\n"); return 0; } printf("%x\n", v); } else { res = "base is wrong"; printf("%s \n", res); } return 0; }