Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/89: Рейтинг темы: голосов - 89, средняя оценка - 4.83
1 / 1 / 0
Регистрация: 13.01.2015
Сообщений: 17

Цикл for c шагом 0,2

06.02.2015, 23:56. Показов 18650. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <conio.h>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Rus");
    for (double i = 2.2; i <= 4.2; i = i + 0.2)
    {
        cout << i << endl;
    }
 
 
    _getch();
    return 0;
}
иметься такой код, цикл по идее должен идти до 4,2 но при компиляции почему то выводит http://www.screencapture.ru/file/2842d7a1 такое , почему?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.02.2015, 23:56
Ответы с готовыми решениями:

Цикл For с шагом 0.1, 0.01 и т.д.
Помогите пожалуйста, как зделать цикл For с шагом 0.1 или 0.01. Например, задаю диапазон от 0 до 10 с шагом 0.1, получается 100...

Цикл с увеличивающимся шагом
Необходимо написать цикл шаг которого будет увеличиваться. Допустим есть массив из 100 int переменных равных нулю. И есть...

Найти сумму рядов, цикл с шагом
Не пойму как составить цикл от 1 до 4 с шагом 0.2 что бы прога работала суму посчитать вот этого уравнения log(4*x+8)/exp(-x)+sin(2*x) ...

5
 Аватар для Ouroboros-SK
63 / 63 / 47
Регистрация: 08.09.2013
Сообщений: 187
Записей в блоге: 1
07.02.2015, 00:08
Дело в компьютерном представлении чисел и точности. попробуй запусти такой цикл, и он будет бесконечным, хотя по логике, должен работать нормально.
C++
1
for (double i = 2.2; i != 4.2; i += 0.2)
Вечная проблема С++.
1
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
07.02.2015, 00:09
Лучший ответ Сообщение было отмечено Roman223 как решение

Решение

Цитата Сообщение от Roman223 Посмотреть сообщение
почему?
потому что железо не умеет хранить дробные числа с абсолютной точностью:
http://rextester.com/GHVXB80896

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Rus");
    for (double i = 2.2; i <= 4.25; i = i + 0.2)
            cout << i << endl;
    
 
 
    
    return 0;
}
циферка 4.2 в памяти может быть например 4.20000001
или 4.199999999999999
1
1 / 1 / 0
Регистрация: 13.01.2015
Сообщений: 17
07.02.2015, 02:42  [ТС]
То есть, я так понял нужно к числу окончательной проверки добавлять 0,05. Примерно как при переводе double в int. Спасибо.
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
07.02.2015, 08:51
Цитата Сообщение от Roman223 Посмотреть сообщение
То есть, я так понял нужно к числу окончательной проверки добавлять 0,05. Примерно как при переводе double в int. Спасибо.
дробные величины сравнивают так:

C++
1
2
if( (a-b) < погрешность)
  считать числа равными
если числа различаются на некую не существенную для ваших вычислений погрешность - можно считать такие числа равными.

погрешность выбирается в зависимости от задач и от точности типов данных. не обязательно 0.5
0
Эксперт С++
1675 / 1047 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
07.02.2015, 11:46
Чтобы закрыть тему, упомяну, что циклы обычно организовывают на целочисленных переменных, а вещественные параметры вычисляют как зависимые величины:
C++
1
2
for (int i = 0; i <= 10; ++i)
    cout << (2.2 + i * 0.2) << endl;
Так оно надёжнее
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.02.2015, 11:46
Помогаю со студенческими работами здесь

Создать цикл for, счетчик которого изменяется от 100 до 200 с шагом 2
Нужно создать цикл for, счетчик которого изменяется от 100 до 200 с шагом 2. Я написал цикл, но не получается установить шаг равный...

Цикл For с шагом 2
Помогите пожалуйста, как сделать цикл for с шагом 2??? Ну вот например с шагом 1 понятно for(i=0;i&lt;n;i++) { // тут код...

Цикл с шагом 1
Добрый день, есть такой код цикла &lt;?php foreach ($testimonials as $testimonial) { ?&gt; &lt;table class=&quot;content&quot;...

цикл с шагом
как в делфи сделать цикл с шагом? В бейсике был степ, а тут \ Например цикл от 0 до 100 с шагом 2 ... 0-2, 2-4, 4-6, 6-8 .......

Цикл с шагом 0,2?
Цикл с шагом 0,2 в C#?


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru