Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
White Luna
32 / 26 / 2
Регистрация: 08.09.2010
Сообщений: 402
1

не могу понять ошибку типов переменных при деление идет обращение в ноль

22.09.2012, 10:27. Просмотров 1315. Ответов 3
Метки нет (Все метки)

проблема в том что при деление у ми идет обращение в 0, хотя по сути его не должно быть
C++
1
2
3
4
5
6
7
8
    const int m=10, n=1000; // по заданию m-разбиение, n- кол-во запусков
        
    for(int i=1;i<=m;i++)
    {       
        float v;
        v=i/m;
        cout<<"i m"<<":="<<i<<" "<<m<<endl;
        cout<<"v:="<<v<<endl;
}
объясните почему v обращается постоянно в 0? хотя по идеи должно быть 0.1 0.2 и т. д.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.09.2012, 10:27
Ответы с готовыми решениями:

Выдает ошибку при компиляции. Не могу понять почему
Помогите с кодом. Я вижу что ошибка уровня самых низов но не могу понять все...

не могу понять,почему не идет
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;math.h&gt;...

Не могу понять, как исправить ошибку в при вызове методов класса
Не могу понять, как испровить ошибку в при вызове методов классa: #include...

Компилятор выдает ошибку при объявлении массива. Не могу понять где соль
Объясните пожалуйста в чем моя ошибка. Вот исходник #include &lt;iostream&gt; //...

Не могу понять почему вылазят нули. double и целочисленное деление
#include&lt;iostream.h&gt; #include&lt;math.h&gt; void main() { int **mas,i,j,n,m;...

3
Suvitruf
15 / 6 / 0
Регистрация: 22.09.2012
Сообщений: 83
22.09.2012, 10:30 2
Цитата Сообщение от White Luna Посмотреть сообщение
проблема в том что при деление у ми идет обращение в 0, хотя по сути его не должно быть
C++
1
2
3
4
5
6
7
8
    const int m=10, n=1000; // по заданию m-разбиение, n- кол-во запусков
        
    for(int i=1;i<=m;i++)
    {       
        float v;
        v=i/m;
        cout<<"i m"<<":="<<i<<" "<<m<<endl;
        cout<<"v:="<<v<<endl;
}
объясните почему v обращается постоянно в 0? хотя по идеи должно быть 0.1 0.2 и т. д.

У вас i - int и m,n- int

Поэтому при делении на выходе int

Надо v=(float)i/m;
0
CableGuy
14 / 14 / 2
Регистрация: 29.03.2012
Сообщений: 41
22.09.2012, 10:35 3
int содержит только целые числа. То есть при целочисленном делении (операция '/'), будет само собой
в результате целые числа.
Вы делите m(10) на n(1000), в числе m ноль тысяч, вот и результат.
0
cmath
Модератор
2510 / 1728 / 151
Регистрация: 11.08.2012
Сообщений: 3,320
Завершенные тесты: 6
22.09.2012, 11:01 4
Цитата Сообщение от CableGuy Посмотреть сообщение
int содержит только целые числа. То есть при целочисленном делении (операция '/'), будет само собой
в результате целые числа.
Вы делите m(10) на n(1000), в числе m ноль тысяч, вот и результат.
White Luna, т.е. когда вы присваиваете переменной типа float результат деления друг на друга целых чисел, то сначала программа вычисляет частное как целое, а уже после этого приводит его к float и происходит присваивание. При делении (int) меньшего на большее получается нуль.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.09.2012, 11:01

Распределение памяти под объекты числовых типов. Не могу понять
Может быть немного не в тему пишу, т.к. этот вопрос не относится конкретно к...

не могу понять ошибку
Народ, здарова, сижу над классами, конкретно наследование классов! Компилятор...

не могу понять ошибку
#include &lt;iostream&gt; using namespace std; int main(); { double a=0,...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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