Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
Никита_25
0 / 0 / 0
Регистрация: 21.06.2017
Сообщений: 10
#1

Остаток от деления дробных чисел

01.10.2017, 11:10. Просмотров 1023. Ответов 13
Метки нет (Все метки)

Помогите, пожалуйста, найти остаток от деления дробного числа типа float или double.

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.10.2017, 11:10
Ответы с готовыми решениями:

Остаток от деления
Во общем задача такая вывести числа от 1-10,а делящиеся на 3 пометить *Вот тут...

Остаток от деления
Задача. Ввести три числа найти среднее арифметическое и остаток от деления в...

Найти остаток от деления
desh2=(desh1^Ko)mod r степень возводится при помощи: for(i=1; i<SIZE; i++)...

Найти остаток от деления
Есть задача: Вот мое решение: #include <stdio.h> long int...

Получить остаток от деления
Здравствуйте, как я прочитал в книге, чтобы получить остаток от деления - нужно...

13
COKPOWEHEU
876 / 640 / 147
Регистрация: 09.09.2017
Сообщений: 2,776
01.10.2017, 12:48 #2
Можете попробовать умножить дробную часть частного на делитель - это самое близкое, что я могу придумать. Правда, зачем такое извращение может пригодиться я придумать не могу.
Например
12,34 / 5.678 = 2.1733(...) тогда 0.1733(...) это дробная часть частного. Умножаем на делитель и получается 0,984.
Проверяем:
5,678*2 + 0,984 = 12,34
0
Байт
Эксперт C
17836 / 11863 / 2467
Регистрация: 24.12.2010
Сообщений: 23,840
01.10.2017, 12:54 #3
Лучший ответ Сообщение было отмечено Никита_25 как решение

Решение

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
зачем такое извращение может пригодиться я придумать не могу.
Точка дпижтся по окружностью со скоростью 0.13 радиан/сек. Найти положение точки через минуту
Цитата Сообщение от Никита_25 Посмотреть сообщение
найти остаток от деления дробного числа типа float или double.
Есть специальная функция fmod
Хотя несложно и самому
C
1
2
double a, b, r;
r = a/b - (int)(a/b);
0
Никита_25
0 / 0 / 0
Регистрация: 21.06.2017
Сообщений: 10
01.10.2017, 12:56  [ТС] #4
Вы меня совсем не поняли. Мне нужен ответ, который поможет мне написать код на языке Си, как совсем несложно догадаться из названия.

Прежде чем называть что-либо "извращением", неплохо было бы узнать, о чём идёт речь.

В методичке по компьютерному обучению от МГТУ имени Баумана есть задача, в коей Я и думал применить "извращение": написать программу, которая преобразует введенное с клавиатуры дробное число в денежный формат типа: 12 руб. 50 коп.
0
Байт
Эксперт C
17836 / 11863 / 2467
Регистрация: 24.12.2010
Сообщений: 23,840
01.10.2017, 13:02 #5
COKPOWEHEU,
C
1
alfa = fmod(v*t, 2*M_PI);
Иногда приятнее иметь дело с углами от 0 до 2пи
Естественно, это не единственное применения взятия остатка от деления нацело действительных чисел

Добавлено через 2 минуты

Не по теме:

Никита_25, а вот агрессивность совсем не украшает новичка:negative:

0
LFC
729 / 534 / 416
Регистрация: 17.09.2015
Сообщений: 1,597
01.10.2017, 13:15 #6
Цитата Сообщение от Никита_25 Посмотреть сообщение
написать программу, которая преобразует введенное с клавиатуры дробное число в денежный формат типа: 12 руб. 50 коп.
ну и при чем здесь
Цитата Сообщение от Никита_25 Посмотреть сообщение
найти остаток от деления дробного числа типа float или double
???
0
Никита_25
0 / 0 / 0
Регистрация: 21.06.2017
Сообщений: 10
01.10.2017, 13:47  [ТС] #7
LFC,

узнав, чему равняется дробная часть вводимого числа, Я бы принял её за копейки, а целую за рубли. Для этого Я думаю использовать деление с остатком.
Деление с остатком a («делимого») на b («делитель») означает нахождение таких целых чисел q и r, что выполняется равенство:

a=bq+r,
где q - неполное частное от деления,
r — остатком от деления.

Если у Вас есть какая-нибудь другая идея, с радостью её прочитаю.

Добавлено через 5 минут
Байт,

спасибо за ответ, буду пробовать И да, COKPOWEHEY, как новичка, агрессивность совсем не украшает
0
LazySlacker
89 / 73 / 31
Регистрация: 29.08.2017
Сообщений: 188
01.10.2017, 14:20 #8
C
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
 
int main(void)
{
    int a, b;
    scanf("%d%d", &a, &b);
    a *= 100;
    a /= b;
    b = a / 100;
    a -= b * 100;
    printf("%d rub. %d kop.\n", b, a);
    return 0;
}
0
Никита_25
0 / 0 / 0
Регистрация: 21.06.2017
Сообщений: 10
01.10.2017, 14:53  [ТС] #9
LazySlacker,

Ваш код предполагает ввод двух чисел, а в задаче сказано про одно. Вводишь 123.456 - выдаёт 123 руб. 45(46?) коп.
0
LazySlacker
89 / 73 / 31
Регистрация: 29.08.2017
Сообщений: 188
01.10.2017, 16:02 #10
Лучший ответ Сообщение было отмечено Никита_25 как решение

Решение

Цитата Сообщение от Никита_25 Посмотреть сообщение
Ваш код предполагает ввод двух чисел, а в задаче сказано про одно. Вводишь 123.456 - выдаёт 123 руб. 45(46?) коп.
А, понял. Я перепутал с рациональными числами. Ну тогда так:

C
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
#include <math.h>
 
int main(void)
{
    double r;
    scanf("%lf", &r);
    double k = modf(r, &r) * 100.0;
    printf("%.0f rub. %.0f kop.\n", r, k);
    return 0;
}
1
Никита_25
0 / 0 / 0
Регистрация: 21.06.2017
Сообщений: 10
01.10.2017, 16:57  [ТС] #11
LazySlacker,

работает, спасибо. От себя добавил ветвление для проверки на положительоне значение.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
 #include <math.h> 
 
 int main(void) 
 { 
  double r; 
  scanf("%lf", &r); 
  double k = modf(r, &r) * 100.0; 
  if(r>0)
  {
  printf("%.0f rub. %.0f kop.\n", r, k);
  }
  else
  {
  printf("Число должно быть положительным");
  }
  return 0;
  }
0
Байт
Эксперт C
17836 / 11863 / 2467
Регистрация: 24.12.2010
Сообщений: 23,840
01.10.2017, 17:11 #12
Цитата Сообщение от Никита_25 Посмотреть сообщение
нахождение таких целых чисел q и r,
r все-таки скорее всего действительное. И добавить надо 0 <= r < b
И у меня в коде поста 3 ошибочка. Следует читать
C
1
2
double a, b, r;
r = (a/b - (int)(a/b)) * b;
Добавлено через 3 минуты
Цитата Сообщение от Никита_25 Посмотреть сообщение
Я бы принял её за копейки, а целую за рубли.
Имхо, логичнее в вашей задаче считать все в копейках, а уж при выводе переводить в рубли-копейки, оставаясь в области целых. Впрочем, это всего лишь совет, а не руководство к действию...
0
Никита_25
0 / 0 / 0
Регистрация: 21.06.2017
Сообщений: 10
01.10.2017, 17:18  [ТС] #13
Байт,

согласен, как вариант, можно и так сделать.
0
LFC
729 / 534 / 416
Регистрация: 17.09.2015
Сообщений: 1,597
01.10.2017, 17:32 #14
Цитата Сообщение от Никита_25 Посмотреть сообщение
Если у Вас есть какая-нибудь другая идея, с радостью её прочитаю.
Идея не моя,а общеизвестная.Читайте.
C
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
 
int main()
{
    float n = 123.456, k;
    int r;
    r = (int)n;//вот ваши рубли
    k = n - r;//вот ваши копейки
    printf("%d %d", r, (int)(k * 100));
    return 0;
}
и никакого деления

Добавлено через 16 секунд
Короткий вариант
C
1
2
3
4
5
6
7
8
#include <stdio.h>
 
int main()
{
    float n = 123.456;
    printf("%d rub %d kop", (int)n, (int)((n - (int)n) * 100));
    return 0;
}
0
01.10.2017, 17:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.10.2017, 17:32

Остаток от целочисленного деления
Надо найти остаток от деления a на b, но при всех значения a,b возвращает b....

Найти остаток от деления целого выражения c = k(a+b) на 4
Найти остаток от деления целого выражения c = k(a+b) на 4 и вывести сообщение о...

Вывести остаток от деления на числа в массиве
Нужно чтобы цыкл выводил остаток от деления на числа в массиве. Сейчас он...


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

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

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