Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.03.2011, 11:58   #1
genrix
просто
Форумчанин
 
Аватар для genrix
 
Регистрация: 17.02.2011
Сообщений: 405
По умолчанию целое число от х.

Здравствуйте! Такая проблема: мне нужно написать на с++ целое число от х. Например:
Цитата:
#include <iostream>

using namespace std;

int main ()
{
float a=8,45;
float b=9,87;
// Тут должна быть какая-то функция, которая забирает целую часть от a и b
//чтобы получилось int a=8; int b=9;
Такое возможно???
Не стоит читать свои переписки двухлетней давности...
genrix вне форума Ответить с цитированием
Старый 31.03.2011, 12:18   #2
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

приведение типа спасет отца русской демократии
Код:
float a = 8.2;
int b = static_cast<int>(a);
cout << b << endl;
и в вещественных числах используется точка для разделения частей, а не запятая
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 31.03.2011, 12:20   #3
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Код:
#include <cmath>

float a=8.45; // точки, а не запятые! 
float b=9.87;
int a1, b1;

a1 = floor (a);
b1 = floor (b);
ЗЫ Приведение типа, к сожалению, не спасет. Потому что для отрицательных чисел будет работать неверно.
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062

Последний раз редактировалось Mandrivnyk; 31.03.2011 в 12:23.
Mandrivnyk вне форума Ответить с цитированием
Старый 31.03.2011, 12:27   #4
genrix
просто
Форумчанин
 
Аватар для genrix
 
Регистрация: 17.02.2011
Сообщений: 405
Подмигивание

Огромное спасибо!!!!!
Не стоит читать свои переписки двухлетней давности...
genrix вне форума Ответить с цитированием
Старый 31.03.2011, 12:31   #5
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2Mandrivnyk
Цитата:
a1 = floor (a);
шикарно. автору нужно не округление, а просто отбросить дробную часть. разницу чуешь?

и чет я не понял, с чего приведение не катит? работает и с отрицательными. я конечно не спец, может чего не знаю
static_cast безопасное приведение. яж не биты интерпретирую.
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance

Последний раз редактировалось pproger; 31.03.2011 в 12:39.
pproger вне форума Ответить с цитированием
Старый 31.03.2011, 12:39   #6
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Цитата:
Сообщение от pproger Посмотреть сообщение
2Mandrivnyk

шикарно. автору нужно не округление, а просто отбросить дробную часть. разницу чуешь?

и чет я не понял, с чего приведение не катит? работает и с отрицательными. я конечно не спец, может чего не знаю
Цитата:
функция, которая забирает целую часть от a и b
Позволю себе напомнить, что в математике понимают под "целой частью числа".
Целая часть вещественного числа x — округление x до ближайшего целого в меньшую сторону.
То есть, для отрицательного числа -8,3 целая часть будет равна -9, а не -8.
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 31.03.2011, 12:44   #7
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2Mandrivnyk
имхо, если б автору нужно было б такое поведение, он бы и написал - округлить. я же интерпретировал его слова, как "извлечь" целую часть
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 31.03.2011, 13:09   #8
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

2pproger
да не округление это, по-крайней мере в математических терминах!

Округление — математическая операция, позволяющая уменьшить количество знаков в числе за счёт замены числа его приближённым значением с определённой точностью. (с) в том числе и Википедия

при округлении числа -8.3 получилось бы как раз -8, при округлении -8.8 -- (-9).
при взятии же целой части результат будет одинаковый -- (-9).

Целая часть
Округление

Впрочем, автор сам определится, что именно ему надо.
Если нужно просто отбросить всё после десятичной точки -- приведение типа, безусловно, конкурентов не имеет -)
В таком случае автору, возможно, есть смысл взглянуть на функцию modf, если возникнет необходимость отбросить целую часть числа.
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 31.03.2011, 17:24   #9
genrix
просто
Форумчанин
 
Аватар для genrix
 
Регистрация: 17.02.2011
Сообщений: 405
По умолчанию

Цитата:
Если нужно просто отбросить всё после десятичной точки -- приведение типа, безусловно, конкурентов не имеет -)
Собственно говоря, мне это и надо было. Впрочем, и округление тоже пригодится
Не стоит читать свои переписки двухлетней давности...
genrix вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на целое число DesignFootball.Ru Помощь студентам 11 13.03.2011 13:55
Дано вещественное число X и целое число N (> 0). Вывести X – X3/3! + X5/5! – ... + (–1)NX2N+1/(2N+1)!? Ахилес Помощь студентам 2 20.05.2010 20:34
Если x целое число то alco84 Microsoft Office Access 3 24.03.2010 11:24
Дано целое число Vylkan Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 01.02.2010 07:36
Паскаль - выделить целое число Вера123 Помощь студентам 3 18.06.2009 10:29