Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Шафеева О.П., ИВТ, прога на СИ / дз / 5 / перевод из одной сс в другую

.cpp
Скачиваний:
0
Добавлен:
21.01.2025
Размер:
1.34 Кб
Скачать
#include<conio.h>
#include<locale.h>
#include<math.h>
#include <stdio.h>
int* f1(int n, int q) {
	int k = 0, a[10], i;
	while (n > 0) {
		a[k] = n % q;
		n = n / q;
		k++;
	}
	for (i = k - 1; i >= 0; i--) {
		printf("%d", a[i]);
	}
	return a;
}
int* f2(float d, int q) {
	int b[5], i;
	float dp;
	b[0] = 0;
	printf(",");
	for (i = 1; i < 5; i++) {
		dp = d * q;
		d = dp - int(dp);
		b[i] = int(dp);
		printf("%d", b[i]);
		if (d == 0) return b;
	}
}
float f3(float x, int q) {
	float xp, a[10], x10 = 0, v;
	int t = 0, i = 0, xs, n = 0;
	xp = x - int(x);
	while (xp != 0) {
		xp = x - int(x);
		x = x * 10;
		t++;
	}
	xs = int(x);
	while (xs > 0) {
		a[n] = xs % 10;
		xs = xs / 10;
		n++;
	}
	v = pow(q, -t);
	for (i = 0; i < n; i++) {
		x10 = x10 + a[i] * v;
		v = v * q;
	}
	return x10;
}
int main() {
	setlocale(LC_ALL, "ru");
	int p, q;
	float x, z, xp;
	printf("Введите число:\n");
	scanf_s("%f", &x);
	printf("Введите систему счисления числа:\n");
	scanf_s("%d", &p);
	printf("Введите новую систему счисления:\n");
	scanf_s("%d", &q);
	printf("Число в новой системе счисления:\n");
	if (p != 10) z = f3(x, p);
	if (q == 10) printf("%f", z);
	else {
		xp = x - int(x);
		x = x - xp;
		if (x > 0) int* a = f1(x, q);
		if (xp > 0) int* b = f2(xp, q);
	}
	return 0;
}
Соседние файлы в папке 5