Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
задачи прога экз 1 сем.docx
Скачиваний:
1
Добавлен:
31.12.2025
Размер:
3.73 Mб
Скачать

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;

}

Соседние файлы в предмете Программирование