Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <windows.h>
- using namespace std;
- int powerup(int number, int degree)
- {
- int result = 1;
- for(int i = 1; i <= degree; i++)
- result *= number;
- return result;
- }
- float powerdown(int number, int degree)
- {
- float result = 1;
- for(int i = 1; i <= degree; i++)
- result *= number;
- return 1/result;
- }
- int main()
- {
- setlocale(LC_ALL,"");
- string num,integer_temp,fraction_temp,null = "0.";
- int value,choice,integer;
- double fraction;
- cout << "Выберите перевод: \n1 - из десятичной системы счисления в восьмеричную \n2 - из восьмеричной системы счисления в десятичную\n\n";
- cin >> choice;
- system("cls");
- cout << "Введите число, дробная часть указывается через \" . \"\n\n";
- cin >> num;
- value = num.find('.');
- integer_temp = num.substr(0, value);
- fraction_temp = num.substr(value+1, num.size());
- fraction_temp.insert(0,"0");
- integer = stoi(integer_temp);
- fraction = stod(fraction_temp)/powerup(10,fraction_temp.size()-1);
- if (choice == 1)
- {
- int int_res = 0,temp = 1; // temp - разряды
- while (integer)
- {
- int_res += integer % 8 * temp;
- integer /= 8;
- temp *= 10;
- }
- double frac_res = 0, temp1;
- for (int i = 0; i < 8; i++)
- {
- fraction *= 8;
- temp1 = (int)fraction;
- frac_res += temp1;
- fraction -= int(temp1);
- }
- cout << frac_res;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement