Int main() {
string in; cin >> in;
size_t p = in.find('.');
string intPart = p == string::npos ? in : in.substr(0, p);
string fracPart = p == string::npos ? "" : in.substr(p + 1);
cout << "Целая часть в HEX: " << binIntToHex(intPart) << "\n";
if (!fracPart.empty())
cout << "Дробная часть в HEX: " << binFracToHex(fracPart) << "\n";
return 0;
}
Из 8 в 16
#include <stdio.h>
#include <string.h>
#include <math.h>
char hex[] = "0123456789ABCDEF";
int oct2dec(char c) { return c - '0'; }
void octIntToHex(char* s) {
unsigned long long n = 0;
for (int i = 0; s[i]; i++) n = n * 8 + oct2dec(s[i]);
if (!n) { printf("0"); return; }
char res[20]; int pos = 0;
while (n) { res[pos++] = hex[n % 16]; n /= 16; }
for (int i = pos - 1; i >= 0; i--) putchar(res[i]);
}
void octFracToHex(char* s) {
double f = 0;
for (int i = 0; s[i]; i++) f += oct2dec(s[i]) / pow(8, i + 1);
for (int i = 0; i < 4 && f > 0; i++) {
f *= 16; int d = (int)f;
putchar(hex[d]); f -= d;
}
}
Int main() {
char in[100], * p;
scanf("%s", in);
p = strchr(in, '.');
if (p) {
*p = 0;
octIntToHex(in);
putchar('.');
octFracToHex(p + 1);
}
else octIntToHex(in);
putchar('\n');
return 0;
}
Заданы две пары массивов из 0 и 1, сложить по правилам двоичной арифметики; если числа с разными порядками, то до сложения выравнять порядки
#include <iostream>
#include <ctime>
#include <conio.h>
#include <stdio.h>
#include <math.h>
void sum(int a[6], int b[6], int c[7]) {
int next = 0;
for (int i = 0; i < 6; i++) {
((a[i] + b[i] + next) > 1) ? c[i] = a[i] + b[i] + next - 2 : c[i] = a[i] + b[i] + next;
((a[i] + b[i] + next) > 1) ? next = 1 : next = 0;
}
c[6] = next;
}
Int main() {
srand(time(0));
int A[6], B[6], C[7] = { 0,0,0,0,0,0,0 };
printf(" ");
for (int i = 5; i >= 0; i--) {
A[i] = rand() % (1 - 0 + 1) + 0;
printf(" %3i ", A[i]);
}
printf("\n ");
for (int i = 5; i >= 0; i--) {
B[i] = rand() % (1 - 0 + 1) + 0;
printf(" %3i ", B[i]);
}
sum(A, B, C);
printf("\n");
for (int i = 6; i >= 0; i--) {
printf(" %3i ", C[i]);
}
_getch();
}
Ввести число или пары чисел и вывести количество одинаковых цифр (кол-во в массив, позже в массиве сравниваем числа, которые стоят рядом и выводим кол-во одинаковых цифр (счетчик)); вводим именно число, не массив, не строку, делаем остатка от деления (проверяем)
#include <stdio.h>
int count_common_digits(int a, int b) {
int digitsA[10] = { 0 };
int digitsB[10] = { 0 };
int count = 0;
// Заполняем массив частот цифр числа a
if (a == 0) digitsA[0] = 1;
while (a > 0) {
digitsA[a % 10]++;
a /= 10;
}
// Заполняем массив частот цифр числа b
if (b == 0) digitsB[0] = 1;
while (b > 0) {
digitsB[b % 10]++;
b /= 10;
}
// Считаем общие цифры (минимум встреч в обоих числах)
for (int i = 0; i < 10; i++) {
if (digitsA[i] > 0 && digitsB[i] > 0) {
int min = digitsA[i] < digitsB[i] ? digitsA[i] : digitsB[i];
count += min;
}
}
return count;
}
