Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не срабатывает условие в цикле do-while 
V
    Опции темы
merien
Дата 13.4.2011, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 13.4.2011
Где: Ukraine, Ternopil

Репутация: нет
Всего: нет



Пытаюсь разложить дробное число на цифры. После третьго умножения ost выводит равное 0, но почему-то из цикла не выходит :(

Код

#include <stdio.h>
#include <math.h>
int main(){
    double temp,ost=.111;
    int res;
do{
    temp=ost*10;
    res=(int)round(temp);
    ost=temp-(double)res;
    printf("res = %d ost = %lf\n",res,ost);
    }while(ost>0);
    return 0;
    }



Это сообщение отредактировал(а) merien - 14.4.2011, 17:02
PM MAIL   Вверх
volatile
Дата 14.4.2011, 01:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 16
Всего: 85



В данном случае с эпсилоном нужно сравнивать.
while(ost>eps);

Но вообще код не хороший..., с плавающей арифметикой так работать нельзя.
что вы хотите сделать в итоге?



PM MAIL   Вверх
merien
Дата 14.4.2011, 02:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 13.4.2011
Где: Ukraine, Ternopil

Репутация: нет
Всего: нет



while(ost>eps);  - так не хочет:(

в итоге хочу з с десятичной дроби получить  цифры
Например   .111  -  1   1   1
PM MAIL   Вверх
volatile
Дата 14.4.2011, 02:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 16
Всего: 85



Цитата(merien @  14.4.2011,  02:09 Найти цитируемый пост)
while(ost>eps);  - так не хочет:(

в начале    const double eps = .001;

Цитата(merien @  14.4.2011,  02:09 Найти цитируемый пост)
в итоге хочу з с десятичной дроби получить  цифры
Например   .111  -  1   1   1 


Ну это я понял, а зачем?
и кстати, в C/C++ нет десятичных дробей.

PM MAIL   Вверх
merien
Дата 14.4.2011, 02:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 13.4.2011
Где: Ukraine, Ternopil

Репутация: нет
Всего: нет



Спасибо, с eps работаетsmile а все таки, почему нельзя сравнивать с нулем?

но уже другая проблема -  при значениях цифр> = 5 все равно не работает - округляет 

Задача:Проверка на счастливое число
Вводят число в ввиде десятичной дроби. Если сумма цифр до точки равна сумме цифр после точки вывести Yes.




Это сообщение отредактировал(а) merien - 14.4.2011, 03:10
PM MAIL   Вверх
ller
Дата 14.4.2011, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 4.8.2008
Где: г. Таганрог

Репутация: 2
Всего: 4



Потому, что в числах плавающей точкой идет округление. И 0 можно никогда не получить.
PM MAIL   Вверх
merien
Дата 14.4.2011, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 13.4.2011
Где: Ukraine, Ternopil

Репутация: нет
Всего: нет



если так, то эту задачу вообще можно решить таким образом, или только через строки?
PM MAIL   Вверх
merien
Дата 14.4.2011, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 13.4.2011
Где: Ukraine, Ternopil

Репутация: нет
Всего: нет



Извиняюсь за глупость - написала вместо floor round. Все работает. Спасибо smile  

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0447 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.