
Добавил:
nnn
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Шафеева О.П., ИВТ, прога на СИ / дз / 5 / перевод из одной сс в другую
.cpp#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;
}