Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
4 / 4 / 0
Регистрация: 25.06.2010
Сообщений: 106
1

самый, самый большой ))

11.08.2011, 12:33. Показов 2526. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
народ че делать unsigned long long int - оказался недостаточен
есть тип побольше какой-нить? или там как-то обойти как в паскале?
VS 2008
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.08.2011, 12:33
Ответы с готовыми решениями:

Как переставить местами самый маленький и самый большой элементы массива?
1. Переставить местами маленький и самый большой элементы массива

В заданной матрице найти самый большой отрицательный элемент и самый маленький положительный и вывести их на экран
Помогите пожалуйста с заданиями) Задание 1: Напишите программу, которая создает двухмерный массив...

Самый самый самый простой пример рекурсии
приведите самый прост пример рекурсии)))void main(int k) { int n=10; k=n; k++; n=k; ...

Найти второй самый большой элемент массива и второй самый маленький элемент массива
Помогите пожалуйста: Найти второй самый большой элемент массива и второй самый маленький элемент...

18
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
11.08.2011, 12:38 2
Длинная арифметика
Больше никак.
И как на паскале это обойти можно? о_О
Там тоже максимальный - int64, но только у него еще 1 разряд под знак. Поэтому unsigned long long больше самого большого паскалевского типа =)
0
Заблокирован
Автор FAQ
11.08.2011, 12:44 3
А чем плох старый добрый double???В нём диапазон до Е+304
0
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
11.08.2011, 12:49 4
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
А чем плох старый добрый double???В нём диапазон до Е+304
Так он не может точно большие числа представлять, погрешности будут. Да и вывести на экран его проблематично..
0
4 / 4 / 0
Регистрация: 25.06.2010
Сообщений: 106
11.08.2011, 12:55  [ТС] 5
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
А чем плох старый добрый double???В нём диапазон до Е+304
точно вроде работает, токо int(double_var) выдает отрицательный результат
хотя double_var положителен
короче как вывести double_var, чтоб другая прога считала его за int ?
0
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
11.08.2011, 12:57 6
Цитата Сообщение от Noname2512 Посмотреть сообщение
int(double_var) выдает отрицательный результат
Так это число не влезает в int, оно может только в double хранится, и то неточно.
ороче как вывести double_var, чтоб другая прога считала его за int ?
Насколько я знаю - никак.
0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
11.08.2011, 12:58 7
Цитата Сообщение от Noname2512 Посмотреть сообщение
короче как вывести double_var, чтоб другая прога считала его за int ?
Noname2512, а как другая прога его будет считывать? Вот так же и выводить, только наоборот
0
4 / 4 / 0
Регистрация: 25.06.2010
Сообщений: 106
11.08.2011, 13:03  [ТС] 8
ну да неправильно я выразился
как сделать так чтобы double_var был визуально похож на int , чтоб там без точек, без е+...
0
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
11.08.2011, 13:04 9
Да не подойдет double для ваших целей... =)
Код
diagon@shadeware:~$ cat test.cpp && g++ test.cpp && ./a.out
#include <iostream>
int main(){
	double x;
	std::cin >> x;
	std::cout << std::fixed << x;
}
1234567890123456789012345678901234567890
1234567890123456846996462118072609669120.000000
Погрешность налицо.
Вывести без нулей на конце можно с помощью setprecision(0)
0
4 / 4 / 0
Регистрация: 25.06.2010
Сообщений: 106
11.08.2011, 13:07  [ТС] 10
Цитата Сообщение от diagon Посмотреть сообщение
Вывести без нулей на конце можно с помощью setprecision(0)
я ее использовал е+... остается
0
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
11.08.2011, 13:08 11
Цитата Сообщение от Noname2512 Посмотреть сообщение
я ее использовал е+... остается
C++
1
std::cout << std::fixed << std::setprecision(0) << num;
1
Заблокирован
Автор FAQ
11.08.2011, 13:37 12
Цитата Сообщение от diagon Посмотреть сообщение
double хранится, и то неточно.
- что значит неточно хранитсья в дабл, это тип для хранения чисел с плавающей точкой размерностью до Е+304, что в него записал то и считал, что ты имел в виду???

Добавлено через 1 минуту
Как C вариант
Цитата Сообщение от diagon Посмотреть сообщение
std::cout << std::fixed << std::setprecision(0) << num;
double num;
printf("%.0f",num);
0
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
11.08.2011, 13:38 13
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- что значит неточно хранитсья в дабл, это тип для хранения чисел с плавающей точкой размерностью до Е+304, что в него записал то и считал, что ты имел в виду???

Добавлено через 1 минуту
Как C вариант
double num;
printf("%.0f",num);
Смотри #9.
Обрати внимание на погрешность.
0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
11.08.2011, 13:38 14
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- что значит неточно хранитсья в дабл, это тип для хранения чисел с плавающей точкой размерностью до Е+304, что в него записал то и считал, что ты имел в виду???
diagon даже пример тебе показал, что он имел ввиду. Вот тебе ещё один:
C
1
2
    double v = 100000000000000012345.0;
    printf("%f\n", v);
Попробуй выполнить.
0
404 / 360 / 36
Регистрация: 11.10.2010
Сообщений: 1,907
11.08.2011, 13:44 15
Зачем же извращатся над стандартными типами, лучше использовать длинную арефметику, в инете есть масса премеров.
0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
11.08.2011, 13:53 16
Цитата Сообщение от aram_gyumri Посмотреть сообщение
Зачем же извращаться над стандартными типами, лучше использовать длинную арифметику, в инете есть масса примеров.
Ну, про длинную арифметику в первом же ответе было сказано. Да и примеры даже на этом форуме найти можно. И мои в том числе, и diagon тоже самодельные классы/функции показывал.
0
Freelance
Эксперт С++
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
11.08.2011, 14:00 17
double без потери точности может представлять только 15 десятичных цифр и
C++
1
std::numeric_limits<double>::digits10
это подтверждает.
1
Заблокирован
11.08.2011, 14:09 18
Double использует для хранения 64 бита: 1 знаковый, 11 - под экспоненту,52 - под мантиссу. Т.е. точно целое число можно получить до 2^52-1

В то же время, unsigned long long int (добавлен стандартом С99) использует для хранения целого 64 бита. Т.е. точно целое число можно получить до 2^64-1. Если этого мало - переходим на длинную арифметику.

В принципе не рекомендуется смешивать целочисленную арифметику и арифметику с плавающей точкой (их даже обрабатывают два разных процессора).
0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
11.08.2011, 14:16 19
Цитата Сообщение от IrineK Посмотреть сообщение
52 - под мантиссу. Т.е. точно целое число можно получить до 2^52-1
Ну, на всякий случай поправлю немного. Да, для хранения мантиссы отведено 52 бита, но при этом там хранится 53-битная мантисса В нормализованной записи целая часть мантиссы всегда равна 1, поэтому в типах double и float эта единица в явном виде не сохраняется (в отличие от long double).
Так что целые до 2^53-1.
1
11.08.2011, 14:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.08.2011, 14:16
Помогаю со студенческими работами здесь

Определить сколько стоит самый дешевый и самый дорогой обед
В столовой предлагается N комплексных обедов, состоящих из Q блюд. Известна стоимость и...

Определить самый урожайный и самый неурожайный год в колхозе “Заря”
Нужно написать код к этой задаче: В массиве Urogai(20) хранится урожайность (в центнерах с...

Определить, какой сначала был день самый тёплый или самый холодный?
Динамическая память. В массив занесена информация о температуре за неделю. Определить, какой...

Найти самый большой элемент Массива
Помогите с заданием не как не могу сообразить С помощью датчика случайных чисел сформировать два...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru