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

Определение введенного типа - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как вызвать функцию из функции main? http://www.cyberforum.ru/cpp-beginners/thread627572.html
работаю в деве. предположим я создал проект, изначально в нем находится файл main.cpp. предположим я создал в нем еще один файл с именем func.cpp и описал там функцию int xxx(int), а как теперь мне вызвать эту функцию из main.cpp?
C++ multi-character character constant Привет! Я решил написать виселицу на С++ для консоли. И у меня вылетает ошибка multi-character character constant. Вот сам код: #include<iostream> #include<string.h> using namespace std; int main() { int q; http://www.cyberforum.ru/cpp-beginners/thread627567.html
C++ Вывод суммы четных элементов массива
Напишите программу, печатающую на экране сумму четных элементов заданного массива вещественных чисел.
Функция не понимает меня C++
Вот попытался написать функцию для подсчета комбинаций "ab" (Читаю книгу, пытаюсь делать упражнения, но застрял что то слишком рано :( ) Вот как она выглядит у меня: int countab(string st) { int count=0; int i=1; /* 10 строка */ while (i<=strlen(st)) {
C++ Изменить порядок следования элементов в массиве http://www.cyberforum.ru/cpp-beginners/thread627553.html
изменить порядок следования элементов в массиве так чтобы сначало располагались все отрицательные элементы за тем положительные а потом нули найти сумму элементов массива расположенных после минемального элемента
C++ измените порядок следования элементов в массиве так,чтобы... помогите решать решение измените порядок следования элементов в массиве так,чтобы располагались все отрисательные элементы,затем положительные,а потом нули подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
3049 / 1694 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
23.07.2012, 23:32
Эта программа определяет всё, кроме нуля с плавающей точкой:
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/////////////////////////////////////////////////////////////////////////////////////////
#include <iostream>
#include <limits>
#include <sstream>
#include <string>
#include <typeinfo>
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::string     T_str;
/////////////////////////////////////////////////////////////////////////////////////////
template<class T>
double  it_is(const T_str&  s)
{
    T       t;
    char    c;
    std::istringstream  ssin(s);
    bool    bool_res    =       (ssin   >>  t) !=   0
                            &&  (ssin   >>  c)  ==  0
                            &&  t >= std::numeric_limits<T>::min()
                            &&  t <= std::numeric_limits<T>::max();
 
    if(bool_res)
    {
        std::cout   <<  t
                    <<  std::endl
                    <<  typeid(t).name()
                    <<  std::endl;
    }
    return  bool_res;
}
/////////////////////////////////////////////////////////////////////////////////////////
int main()
{    
    std::cout   <<  "float_min = "
                <<  std::numeric_limits<float>::min()
                <<  std::endl;
 
    std::cout   <<  "float_max = "
                <<  std::numeric_limits<float>::max()
                <<  std::endl;
 
    std::cout   <<  "double_min = "
                <<  std::numeric_limits<double>::min()
                <<  std::endl;
 
    std::cout   <<  "double_min = "
                <<  std::numeric_limits<double>::min()
                <<  std::endl;
 
    for(;;)
    {
        T_str   s;
        std::cout   <<  "Input number of one of types int, float double: ";
        std::cin    >>  s;
        bool    int_or_float_or_double  =       it_is< int      >   (s)
                                            ||  it_is< float    >   (s)
                                            ||  it_is< double   >   (s);
 
        if( !int_or_float_or_double )
        {
            std::cout   <<  "not int and not float and not double"
                        <<  std::endl;            
        }
        std::cout   <<  std::endl
                    <<  std::endl
                    <<  std::endl;
    }
}
Добавлено через 27 минут
Пардон, в строке 11 опечатка. Там возвращаемое значение функци bool.

Добавлено через 11 минут
Более правильный вариант (правильно обрабатывает отрицательные числа):
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
/////////////////////////////////////////////////////////////////////////////////////////
#include <cmath>
#include <iostream>
#include <limits>
#include <sstream>
#include <string>
#include <typeinfo>
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::string     T_str;
/////////////////////////////////////////////////////////////////////////////////////////
template<class T>
bool  it_is(const T_str&  s)
{
    T       t;
    char    c;
    std::istringstream  ssin(s);
    bool    bool_res    =       (ssin   >>  t) !=   0
                            &&  (ssin   >>  c)  ==  0
                            &&  abs(t) >= std::numeric_limits<T>::min()
                            &&  abs(t) <= std::numeric_limits<T>::max();
 
    if(bool_res)
    {
        std::cout   <<  t
                    <<  std::endl
                    <<  typeid(t).name()
                    <<  std::endl;
    }
    return  bool_res;
}
/////////////////////////////////////////////////////////////////////////////////////////
int main()
{    
    std::cout   <<  "float_min = "
                <<  std::numeric_limits<float>::min()
                <<  std::endl;
 
    std::cout   <<  "float_max = "
                <<  std::numeric_limits<float>::max()
                <<  std::endl;
 
    std::cout   <<  "double_min = "
                <<  std::numeric_limits<double>::min()
                <<  std::endl;
 
    std::cout   <<  "double_min = "
                <<  std::numeric_limits<double>::min()
                <<  std::endl;
 
    for(;;)
    {
        T_str   s;
        std::cout   <<  "Input number of one of types int, float double: ";
        std::cin    >>  s;
        bool    int_or_float_or_double  =       it_is< int      >   (s)
                                            ||  it_is< float    >   (s)
                                            ||  it_is< double   >   (s);
 
        if( !int_or_float_or_double )
        {
            std::cout   <<  "not int and not float and not double"
                        <<  std::endl;            
        }
        std::cout   <<  std::endl
                    <<  std::endl
                    <<  std::endl;
    }
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru