Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Killan
4 / 4 / 0
Регистрация: 28.09.2009
Сообщений: 52
#1

Программа не обрабатывает условие while() - C++

15.12.2011, 12:26. Просмотров 346. Ответов 7
Метки нет (Все метки)

Не работает условие остановки цикла, методом проб выяснилось что while не нравится тип переменной float, но у меня не целые числа, и int не подходит. Первый раз сталкиваюсь с подобным, как можно это обойти ?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <cstdlib>
#include <iostream>
 
using namespace std;
float n,y,x;
int main(int argc, char *argv[])
{
n=-0.1;
y=-0.1;
    while ( n != -1.9 ) // Не работает
    {
          cout << "N=" << n << endl; // входное значение
          if (n < 0)
          {
                y=y+0.6;
                n=n+y;
                cout << n << endl; 
                system("PAUSE");
          }
          else
          {
               y=y+0.6;
               n=n-y;
               cout << n << endl; 
               system("PAUSE");
          }
          
    }
    system("PAUSE");
    return EXIT_SUCCESS;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.12.2011, 12:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Программа не обрабатывает условие while() (C++):

Программа не обрабатывает кириллицу - C++
Всем привет. У меня такая проблема. Программа не хочет обрабатывать кириллицу. К примеру, у меня задача, подсчитать в последнем слове...

Программа не обрабатывает файлы больше 100 килобайт - C++
валится при изменении константы MAXFILESIZE. Надо чтобы программа обрабатывала файлы больше 100кб. Было переполнение стека, но я...

Программа не обрабатывает текст из файла с кодировкой, отличной от ANSI - C++
Здравствуйте. Имеется программка, которая читает текст из файла, обрабатывает его и записывает результат в другой текстовый файл. Проблема:...

Программа читает свой текст и обрабатывает его по заданному в варианте условию - C++
написать программу, которая читает свой текст и обрабатывает его по заданному в варианте условию. Результаты обработки записать в фаил...

Создание динамического массива, передача аргументов функции по ссылке. Программа обрабатывает результаты матча - C++
Разработать программу, предназначенную для обработки информации о матчах, сыгранных футбольной командой. Количество сыгранных матчей и...

программа не до конца выполняет условие - C++
Надо чтобы программа работала так: вводятся целые числа, до тех пор пока их сумма не достигнет 100. Например, введя 20, 66, 31 должен...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Vidok
37 / 37 / 2
Регистрация: 03.09.2011
Сообщений: 279
15.12.2011, 12:49 #2
У вас все равно n будет равно -1.9 по этому в условии цикла поставьте знак >.
0
Killan
4 / 4 / 0
Регистрация: 28.09.2009
Сообщений: 52
15.12.2011, 12:57  [ТС] #3
Ставил, результат тот же.
0
Vidok
37 / 37 / 2
Регистрация: 03.09.2011
Сообщений: 279
15.12.2011, 13:02 #4
изменил на double
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <cstdlib>
#include <iostream>
 
using namespace std;
double n,y,x;
int main(int argc, char *argv[])
{
n=-0.1;
y=-0.1;
     // Не работает
    do{
          cout << "N=" << n << endl; // входное значение
          if (n < 0)
          {
                y=y+0.6;
                n=n+y;
                cout << n << endl; 
                system("PAUSE");
          }
          else
          {
               y=y+0.6;
               n=n-y;
               cout << n << endl; 
               system("PAUSE");
          }
          
    }while ( n > -1.9 );
    system("PAUSE");
    return EXIT_SUCCESS;
}
Этот код у меня работет на ура
1
Killan
4 / 4 / 0
Регистрация: 28.09.2009
Сообщений: 52
15.12.2011, 13:10  [ТС] #5
Да, с double заработало спасибо.
Но все равно не понятно почему float не работает.
0
Vidok
37 / 37 / 2
Регистрация: 03.09.2011
Сообщений: 279
15.12.2011, 13:15 #6
Сам не знаю. Может сюда заглянет тот кто знает и узнаем)
0
kazak
3034 / 2355 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
15.12.2011, 13:23 #7
Цитата Сообщение от Killan Посмотреть сообщение
Но все равно не понятно почему float не работает.
Специфика чисел с плавающей точкой. Прямые сравнения следует избегать, обычно сравнивают модуль разности чисел с некоторым пороговым значением (погрешностью), если разность меньше порога, то числа считаются равными. Дополнительно почитать можно тут Неочевидные ответы на простые вопросы 5 раздел.
2
Dr.Urban
63 / 58 / 7
Регистрация: 14.12.2011
Сообщений: 193
15.12.2011, 13:46 #8
Проблема в том что на самом деле n = 1.899904 както так..поетому не срабатывает оператор !=

Вот рабочий вариант:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
using namespace std;
float n,y,x;
int main(int argc, char *argv[])
{
n=-0.1;
y=-0.1;
    while ( (n + 1.9 ) > 0.001) // Уже работает
    {
          cout << "N=" << n << endl; // входное значение
          if (n < 0)
          {
                y=y+0.6;
                n=n+y;
                cout << n << endl;
                system("PAUSE");
          }
          else
          {
               y=y+0.6;
               n=n-y;
               cout << n << endl;
               system("PAUSE");
          }
 
    }
    system("PAUSE");
    return EXIT_SUCCESS;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.12.2011, 13:46
Привет! Вот еще темы с ответами:

Почему-то программа игнорирует условие if/else - C++
Дана задача: Даны два массива: А и B (M и N вводятся с клавиатуры). Необходимо создать третий массив минимально возможного размера, в...

Если условие if ложно , то программа зависает. - C++
Если условие выполняется все работает. Если же нет , то все зависает и 2 условие даже не проверяется... что я упустил? Подскажите...

Программа на языке С++, которая вычисляет условие: - C++
Написать программу на языке С++ которая вычисляет условие: Вот первое условие: http://www.cyberforum.ru/attachments/281526d1371058227

Как сделать чтобы программа закрывалась, когда условие выполнено? - C++
// Это програма выщитывает корни дискриминанта. 27.08.2013, 16.05 #include &lt;iostream&gt; using namespace std; int main() { ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
15.12.2011, 13:46
Ответ Создать тему
Опции темы

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