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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.05.2011, 08:33   #1
Юнона
 
Аватар для Юнона
 
Регистрация: 29.05.2011
Сообщений: 4
По умолчанию Деление в C++

Суть проблемы:
есть две переменные (элементы динамического массива, но, полагаю, не суть важно), например, a и b, и переменной a надо присвоить значение a/b, причем поделить не с остатком и не целочисленно, а получить в итоге число с некоторым количеством циферок после запятой.
Переменные типа float, но оператор "/" упорно делит их целочисленно и без остатка, в особо жестокой форме.
Подозреваю, что я даун и спрашиваю элементарщину ^^"
Люди добрые, помогите, кто чем может, а?
Я не сплю, я просто медленно моргаю.
Юнона вне форума Ответить с цитированием
Старый 29.05.2011, 08:52   #2
kaljan775
:D
Форумчанин
 
Аватар для kaljan775
 
Регистрация: 26.09.2010
Сообщений: 570
По умолчанию

Код:
a=float(a)/b;
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery
kaljan775 вне форума Ответить с цитированием
Старый 29.05.2011, 09:15   #3
Юнона
 
Аватар для Юнона
 
Регистрация: 29.05.2011
Сообщений: 4
По умолчанию

Спасибо.
Такой вариант пробовала, не помогает... ладно, буду искать ошибку в чем-нибудь другом.
Я не сплю, я просто медленно моргаю.
Юнона вне форума Ответить с цитированием
Старый 29.05.2011, 11:13   #4
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Обе переменные должны иметь тип с плавающей точкой:
Код:
...
float a, b;
...
a /= b; // a = a/b;
...
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 29.05.2011, 12:07   #5
_Alerter_
Пользователь
 
Регистрация: 25.05.2011
Сообщений: 89
По умолчанию

Цитата:
Сообщение от Blade Посмотреть сообщение
Обе переменные должны иметь тип с плавающей точкой:
Код:
...
float a, b;
...
a /= b; // a = a/b;
...
Чтобы результат был типа float достаточно, чтобы одна из переменных была float
_Alerter_ вне форума Ответить с цитированием
Старый 29.05.2011, 12:24   #6
Юнона
 
Аватар для Юнона
 
Регистрация: 29.05.2011
Сообщений: 4
По умолчанию

Спасибо, эти варианты уже пробовала. Буду в других направлениях искать ошибку
Я не сплю, я просто медленно моргаю.
Юнона вне форума Ответить с цитированием
Старый 29.05.2011, 12:32   #7
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

А как вы узнаёте, что он делит целочисленно? Может, вы просто неправильно выводите их?
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума Ответить с цитированием
Старый 29.05.2011, 12:45   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
и без остатка
а как вы хотите при вещественном делении получить остаток?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 29.05.2011, 13:06   #9
Юнона
 
Аватар для Юнона
 
Регистрация: 29.05.2011
Сообщений: 4
По умолчанию

Syuf, тоже возможно. Буду копать, значицца, и отслеживать все по циферке)

Пепел Феникса, я описывала, как именно делит, а не что мне надо)
Я не сплю, я просто медленно моргаю.
Юнона вне форума Ответить с цитированием
Старый 29.05.2011, 17:52   #10
kaljan775
:D
Форумчанин
 
Аватар для kaljan775
 
Регистрация: 26.09.2010
Сообщений: 570
По умолчанию

Код:
	int n=10;
	float*a = new float[n];
	cout<<"a[i]=rand()%100/float(10);"<<endl;
	for (int i=0;i<n;i++)
		a[i]=rand()%100/float(10);
	vivod(a,n);
	cout<<"a[0]=a[0]/a[1]\na[0] = ";
	a[0]=a[0]/a[1];
	cout<<a[0]<<endl;
Цитата:
a[i]=rand()%100/float(10);
4.1 6.7 3.4 0 6.9 2.4 7.8 5.8 6.2 6.4
a[0]=a[0]/a[1]
a[0] = 0.61194
Для продолжения нажмите любую клавишу . . .
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery
kaljan775 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Деление Nikita++ Помощь студентам 8 19.03.2011 18:56
Деление 0479 Общие вопросы по Java, Java SE, Kotlin 1 08.11.2010 00:37
Деление в С++ Tanilita Общие вопросы C/C++ 5 26.02.2010 17:28
Деление |{ot Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 24.03.2009 01:50
деление natasha Общие вопросы Delphi 6 22.01.2007 12:39