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

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

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

Дано целое число. Найти «маленький» тип, которого достаточно для сохранения числа. - C++

24.09.2010, 22:59. Просмотров 471. Ответов 4
Метки нет (Все метки)

Буду очень благодарен=((

1. Дано целое число. Найти «маленький» тип, которого достаточно для сохранения числа.
а) использовать константы границ типов, определенные в файле limits.h
б) не использовать константы границ типов.
2. Найти предельные значения для целочисленных типов. Не использовать заранее определенные константы границ типов.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.09.2010, 22:59     Дано целое число. Найти «маленький» тип, которого достаточно для сохранения числа.
Посмотрите здесь:

Дано целое число N (> 0). Найти квадрат данного числа - C++
Через do...while Дано целое число N (> 0). Найти квадрат данного числа, используя для его вычисления следующую формулу: N2 = 1 + 3 +...

5. Дано целое число K. Найти сумму цифр числа К - C++
Дано целое число K. Найти сумму цифр числа К.

Дано трехзначное целое число N. Найти все цифры этого числа - C++
Дано трехзначное целое число N. Найти все цифры этого числа. (Помогите)

Найти наибольшее положительное целое число n, для которого выполняется условие: - C++
условие: Плиз очень надо=) Запрещено размещать тему в нескольких разделах одновременно (кросспостинг), а также дублировать...

Дано целое число N (> 0). Проверить,является ли оно степенью числа 3. С++ - C++
Дано целое число N (> 0). Если оно является степенью числа 3, то вывести true, если не является — вывести false.

Дано целое число N>0.Найти сумму 1+1/2+1/3...1/N - C++
Дано целое число N>0.Найти сумму 1+1/2+1/3...1/N

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TheMachinist
242 / 174 / 15
Регистрация: 14.06.2010
Сообщений: 422
24.09.2010, 23:49     Дано целое число. Найти «маленький» тип, которого достаточно для сохранения числа. #2
Попробуй что-нибудь такое:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <limits.h>
#include <conio.h>
 using namespace std;
int main() {
  int n;
  cin >> n;
if(n < SHRT_MAX && n > SHRT_MIN)
{
n = (short)n; // приводим к типу short
cout << n << " is short." << endl;
}
 
if(n > SHRT_MAX && n < USHRT_MAX)
{
    n = (unsigned short) n; // приводим к unsigned short
    cout << n << " is unsigned short." << endl;
}
 
  _getch();
}
...... и далее по таблице http://www.cplusplus.com/reference/clibrary/climits/

Или вообще не рубишь и хочешь чтоб все за тебя сделали?
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
24.09.2010, 23:53     Дано целое число. Найти «маленький» тип, которого достаточно для сохранения числа. #3
NikolaWhite, Тогда уж лучше начинать с __int64
easybudda
Эксперт С++
9460 / 5473 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
25.09.2010, 01:45     Дано целое число. Найти «маленький» тип, которого достаточно для сохранения числа. #4
Цитата Сообщение от valeriikozlov Посмотреть сообщение
Тогда уж лучше начинать с __int64
Этим как-раз лучше заканчивать, раз уж самый меньший тип ищется...
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
#include <stdio.h>
#include <stdint.h>
#include <limits.h>
 
int main(void){
    union {
        uint64_t    tnUint64;
        int64_t        tnInt64;
        uint32_t    tnUint32;
        int32_t        tnInt32;
        uint16_t    tnUint16;
        int16_t        tnInt16;
        uint8_t        tnUint8;
        int8_t        tnInt8;
    } un;
    
    printf("Number: ");
    if ( scanf("%llu", &un.tnUint64) != 1 ){
        fprintf(stderr, "Input error!\n");
        return 1;
    }
 
    if ( un.tnInt8 == un.tnUint64 )
        printf("int8_t will be enough.\n");
    else if ( un.tnUint8 == un.tnUint64 )
        printf("uint8_t will be enough.\n");
    else if ( un.tnInt16 == un.tnUint64 )
        printf("int16_t will be enough.\n");
    else if ( un.tnUint16 == un.tnUint64 )
        printf("uint16_t will be enough.\n");
    else if ( un.tnInt32 == un.tnUint64 )
        printf("int32_t will be enough.\n");
    else if ( un.tnUint32 == un.tnUint64 )
        printf("uint32_t will be enough.\n");
    else if ( un.tnInt64 == (int64_t)un.tnUint64 )
        printf("int64_t will be enough.\n");
    else 
        printf("uint64_t will be enough.\n");
    
    return 0;
}
работает не корректно, если число в int64_t не помещается
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.09.2010, 02:19     Дано целое число. Найти «маленький» тип, которого достаточно для сохранения числа.
Еще ссылки по теме:

Дано целое число n. Вывести двоичную запись числа в обратном порядке - C++
Дано целое число n. Вывести двоичную запись числа в обратном порядке (так проще).

Дано целое число n. Получить все простые делители этого числа - C++
Почему простые делители выдает не правильно? ch-число del-делитель dd-делитель делителя #include &quot;stdafx.h&quot; #include...

Дано целое число N (> 0). Найти двойной факториал N: - C++
Всем Доброго дня!!!!!! 1. Дано целое число N (&gt; 0). Найти двойной факториал N: N!! = N•(N–2)•(N–4)•… (последний сомножитель равен...

Дано целое число N (> 0). Найти значение выражения N - 1/(N-1) + 1/(N-2) - C++
Дано целое число N (&gt; 0). Найти значение выражения N - 1/(N-1) + 1/(N-2) .... Условный оператор не использовать.


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

Или воспользуйтесь поиском по форуму:
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
25.09.2010, 02:19     Дано целое число. Найти «маленький» тип, которого достаточно для сохранения числа. #5
easybudda,
Сообщение от valeriikozlov
Тогда уж лучше начинать с __int64
Этим как-раз лучше заканчивать, раз уж самый меньший тип ищется...
а сам считываешь с самого начала в 64 тип в своем коде.
PS. именно это я и имел ввиду когда писал NikolaWhite. А как потом искать это дело принципа. Быстрее всего сравнивать с серединой, но меньше кода, когда или с большого в сторону меньшего, или с меньшего в сторону большого сравниваешь, здесь по времени одинаково.
Yandex
Объявления
25.09.2010, 02:19     Дано целое число. Найти «маленький» тип, которого достаточно для сохранения числа.
Ответ Создать тему
Опции темы

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