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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
LORDIFF
0 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 3
#1

Типы данных - C++

03.06.2011, 12:57. Просмотров 884. Ответов 15
Метки нет (Все метки)

Помогите пожалуйста решить проблему с типами данных.
C++ только начинаю учить, поэтому не знаю, можно ли так сделать или нет.
Нужно создать переменную с типом, которую выбрали с консоли.
Вот мои попытки:

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
wcout << L"Выберите тип данных: " << endl;
cout << "1 - int" << endl;
cout << "2 - double" << endl;
cout << "3 - float" << endl;
cout << "4 - char" << endl;
cout << "5 - bool" << endl;
int type;
cin >> type;
if(type > 5 || type < 1) {
    string error = "Error in choosing type of variable!";
    throw error;
}
switch(type){
    case 1:
        int variable;
        break;
    case 2:
        double variable;
        break;
    case 3:
        float variable;
        break;
    case 4:
        char variable;
        break;
    case 5:
        bool variable;
        break;
}
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
wcout << L"Выберите тип данных: " << endl;
cout << "1 - int" << endl;
cout << "2 - double" << endl;
cout << "3 - float" << endl;
cout << "4 - char" << endl;
cout << "5 - bool" << endl;
int type;
cin >> type;
if(type > 5 || type < 1) {
    string error = "Error in choosing type of variable!";
    throw error;
}
int variable;
switch(type){
    case 2:
        variable = reinterpret_cast<double> (variable);
        break;
    case 3:
        variable = reinterpret_cast<float> (variable);
        break;
    case 4:
        variable = reinterpret_cast<char> (variable);
        break;
    case 5:
        variable = reinterpret_cast<bool> (variable);
        break;
}
Как вы наверно понимаете, ничего не работает, помогите пожалуйста написать нормальный код.
Буду благодарен за любые подсказки

Добавлено через 12 часов 6 минут
Помогите пожалуйста!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.06.2011, 12:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Типы данных (C++):

Типы данных: есть ли универсальный тип, который может заменить все типы данных в Си? - C++
Добрый вечер! Был бы очень признателен, если бы Вы помогли бы мне понять нижеследующие вопросы: 1. Можете ли на понятным для...

Типы данных C++ - C++
Подскажите какие вещественные и целые типы самые большие и маленькие

типы данных - C++
int x1, x2; float summa; x1 = 5; x2 = 6; summa = (x1 + x2)/2; cout &lt;&lt; summa &lt;&lt; endl; почему в результате 5, а не...

Типы данных - C++
Добрый день. Очень нужна помощь умных людей в написании программы, задание приведено ниже. Буду очень благодарен если кто-то откликнется. ...

типы данных - C++
какой диапазон данных у main, getch? и какой тип данных у getch?

типы данных - C++
Подскажите как средствами С++ получить доступ к отдельным байтам стандартных типов данных, только без использования асматических вставок.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
prZzZ
Программист
112 / 92 / 5
Регистрация: 22.03.2011
Сообщений: 235
03.06.2011, 13:01 #2
В С/С++ это не возможно. Эти языки не поддерживают динамическое создание типов в принципе. Даже и не пытайтесь.
Единственный известный мне язык - это Smalltalk.
0
pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
03.06.2011, 13:03 #3
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
int main()
{
    wcout << L"Выберите тип данных: " << endl;
    cout << "1 - int" << endl;
    cout << "2 - double" << endl;
    cout << "3 - float" << endl;
    cout << "4 - char" << endl;
    cout << "5 - bool" << endl;
    int type;
    cin >> type;
    if(type > 5 || type < 1) {
        string error = "Error in choosing type of variable!";
        throw error;
    }
    int variable = 0;
    switch(type){
        case 2:
            variable = static_cast<double> (variable);
            break;
        case 3:
            variable = static_cast<float> (variable);
            break;
        case 4:
            variable = static_cast<char> (variable);
            break;
        case 5:
            variable = static_cast<bool> (variable);
            break;
    } 
 
    wcout << variable;
}
работает. для variable лучше выбрать double
0
prZzZ
Программист
112 / 92 / 5
Регистрация: 22.03.2011
Сообщений: 235
03.06.2011, 13:13 #4
pito211, У меня ваша программа не работает.
0
pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
03.06.2011, 13:39 #5
а у меня работает, с чего бы она не работала?
0
prZzZ
Программист
112 / 92 / 5
Регистрация: 22.03.2011
Сообщений: 235
03.06.2011, 14:30 #6
pito211, смотрите
C++
1
2
3
4
5
6
//...
variable = 1.2;
 
wcout << variable;
}
//...
и результат:
Типы данных
Хорошенький у нас int вышел?
variable в этом случае вообще бестиповой получается. Прямо как в Бейсике
Можно, конечно, шаблоны подключить, но это - право, извращение...
0
pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
03.06.2011, 14:44 #7
а что собственно не так? variable по прежнему имеет тип double или float как ты и объявил изначально.
variable = 1.2;
ты написал очевидно после switch, поэтому он и вывел то что вывел. Всё правильно, все довольны

Добавлено через 2 минуты
если написать это до свитча то он соответсвенно выведет 1
0
fasked
Эксперт С++
4936 / 2516 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
03.06.2011, 14:48 #8
http://www.boost.org/doc/libs/1_46_1...l/any/s02.html
1
prZzZ
Программист
112 / 92 / 5
Регистрация: 22.03.2011
Сообщений: 235
03.06.2011, 15:00 #9
pito211, Так, уважаемый(-ая), вся работа с переменными идет после преобразования (в нашем случае блок switch), если работать с переменной до преобразования, то на фиг это преобразование вообще нужно? В данном случае я имею ввиду конкретно тип int.


fasked, Про шаблоны я писал выше.
0
Evg
Эксперт CАвтор FAQ
17808 / 6014 / 388
Регистрация: 30.03.2009
Сообщений: 16,528
Записей в блоге: 26
03.06.2011, 15:02 #10
Цитата Сообщение от LORDIFF Посмотреть сообщение
Нужно создать переменную с типом, которую выбрали с консоли
Так ты и создал переменные

Цитата Сообщение от LORDIFF Посмотреть сообщение
Как вы наверно понимаете, ничего не работает
А что в твоём понимании должно произойти (или напечататься), чтобы можно было сказать, что оно работает. Другими словами, в чём конкретно заключается смысл задания?
0
pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
03.06.2011, 15:08 #11
C++
1
2
3
[quote=prZzZ;1721364]variable = 1.2;
wcout << variable;
}[/quote]
а что ты хотел увидеть, кроме 1.2? variable имеет тип double, ты присвоил ей 1.2, он вывел 1.2. Логично
0
prZzZ
Программист
112 / 92 / 5
Регистрация: 22.03.2011
Сообщений: 235
03.06.2011, 15:11 #12
pito211, Я хотел увидеть runtime error
0
pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
03.06.2011, 15:18 #13
код абсолютно безопасный, даже если variable будет типа bool, тогда просто при приобразованиях возможны потери. Но run_time не вылезет
0
prZzZ
Программист
112 / 92 / 5
Регистрация: 22.03.2011
Сообщений: 235
03.06.2011, 15:27 #14
pito211, Так вот и хреново, если не вылезет, потому что при запросе типа я выбираю 1 (тип int), а потом (в каком-то месте программы, скажем далеко-далеко) присваиваю ему значение 1.2 и программа это с лёгкостью проглатывает. Как дальше пойдет работа с этим значением (int i = 1.2) одному богу известно. Как вы думаете?
0
Evg
Эксперт CАвтор FAQ
17808 / 6014 / 388
Регистрация: 30.03.2009
Сообщений: 16,528
Записей в блоге: 26
03.06.2011, 15:28 #15
Цитата Сообщение от prZzZ Посмотреть сообщение
Как дальше пойдет работа с этим значением (int i = 1.2) одному богу известно. Как вы думаете?
"А чего тут думать? Трясти надо!" (с)
Другими словами, об этом за тебя уже подумали много лет назад и всё в стандарте языка написали
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.06.2011, 15:28
Привет! Вот еще темы с ответами:

типы данных - C++
на Си реализовать: (не С++) построить функцию, возвращающую все байты заданного вещественного х в целом виде. т.е. нам например вводят...

типы данных - C++
уважаемые программисты, как отвести типу char 2 байта? пишу шахматы, 6 фигур, хочу, чтобы каждый бит отводился для определенной фигуры, +...

Типы данных - C++
Перекопал везде и всюду, может где-то и есть обьяснение по поводу типов данных. Какая разница между следующими типами данных (имеется...

Типы данных - C++
__int64 Z = pow(a,x); long double Y = 9/Z; cout&lt;&lt;Y //Y = 0 Как вывести подробней? Добавлено через 6 минут И при Y%Z не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
03.06.2011, 15:28
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru