Форум программистов, компьютерный форум CyberForum.ru

Программа, превращающая числа в десятичные - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Разложение числа на множители http://www.cyberforum.ru/cpp-beginners/thread910370.html
var s1,s2,n: longint; f: integer; begin write('vvedite natural chislo '); readln(n); f:=0; s1:=1; repeat s2:=s1;
C++ Подсчитать наибольшую глубину вложенности папок и вывести этот путь используя рекурсию необходимо подсчитать наибольшую глубину вложенности папок и вывести этот путь. помогите пожалуйста!!! http://www.cyberforum.ru/cpp-beginners/thread910369.html
C++ составьте программу для вычисления сумм элементов каждой строки матриц A(5,6), С(6,7)
составьте программу для вычисления сумм элементов каждой строки матриц A(5,6), С(6,7)
C++ Как написать класс "вектор" на С++
Нужно написать класс для нумерации элементов вектора не с 0, а любыми символами.... К примеру в паскалеподобных языках такое осуществимо. То есть элементы вектора 1 2 3 4 5 можно было пронумеровать -10 -9 -8 -7 -6 -5-й элемент. Такую же задачу нужно осуществить на С++
C++ Разбор строк ассемблерной программы http://www.cyberforum.ru/cpp-beginners/thread910340.html
Вот код: #include <stdio.h> #include <stdlib.h> #include <ctype.h> #include <conio.h> int main() { char buffer; char filename;
C++ Дана строка. Удалить из строки все двойные символы. Пример: “asddewwf” → “asdewf” Дана строка. Удалить из строки все двойные символы. Пример: “asddewwf” → “asdewf”. подробнее

Показать сообщение отдельно
Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
24.06.2013, 12:05     Программа, превращающая числа в десятичные
Цитата Сообщение от strange_man Посмотреть сообщение
если я ввожу число с основанием 16, то пишу 0x..., если основание 8 то начинаю с 0.
вот теперь понятно
я бы сделал так (аналогичный способ как у вас)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <iostream>
#include <sstream>
#include <string>
#include <stdexcept>
 
using namespace std;
 
unsigned to_dec(const string &str_num) throw (invalid_argument)
{
    int base = 0;
 
    if ( str_num.size() > 2 && str_num[0] == '0' && tolower(str_num[1]) == 'x' )
        base = 2;
    else if ( str_num.size() > 1 && str_num[0] == '0' )
        base = 1;
 
    istringstream iss(str_num);
    switch (base) {
        case 0: dec(iss); break;
        case 1: oct(iss); break;
        case 2: hex(iss); break;
        default: dec(iss);
    }
 
    unsigned x;
    iss >> x;
 
    if (iss.fail()) throw invalid_argument("Invalid number");
 
    return x;
}
 
int main()
{
    string str;
    cin >> str;
    try {
        cout << to_dec(str);
    } catch (const exception &e) {
        cerr << e.what();
    }
    return 0;
}
Добавлено через 3 минуты
но смотрите, если ввести 098 (начинается с нуля, а значит устанавливается восьмеричная система, хотя в такой системе не существует '8' и '9'), то выведет ноль
если ввести 012398, то выведет 83 (123 в восьмеричной = 83 в десятичной)
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru