Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/163: Рейтинг темы: голосов - 163, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 21.06.2017
Сообщений: 10
1

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

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

Author24 — интернет-сервис помощи студентам
Помогите, пожалуйста, найти остаток от деления дробного числа типа float или double.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.10.2017, 11:10
Ответы с готовыми решениями:

Напишите программу, которая вычисляет остаток от деления двух целых чисел
Напишите программу на Си , которая вычисляет остаток от деления двух целых чисел, введенных с...

Используя только операции сложения и вычитания, найти частное от деления нацело N на K, а также остаток от этого деления
Нужно решение задачи на языке С. Заранее благодарю))) Задача: Даны целые положительные числа N и...

Перегрузка оператора деления дробных чисел
Перегрузить оператор / для двух дробных чисел; Помогите пожалуйста

Для двух целых чисел найти остаток и частное от целочисленного деления, частное от вещественного деления
Уважаемые форумчане помогите пожалуйста с двумя программами. Это вопрос жизни и отчисления, я...

13
4003 / 2549 / 429
Регистрация: 09.09.2017
Сообщений: 11,308
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
27709 / 17325 / 3811
Регистрация: 24.12.2010
Сообщений: 38,979
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);
2
0 / 0 / 0
Регистрация: 21.06.2017
Сообщений: 10
01.10.2017, 12:56  [ТС] 4
Вы меня совсем не поняли. Мне нужен ответ, который поможет мне написать код на языке Си, как совсем несложно догадаться из названия.

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

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

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

Не по теме:

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

0
738 / 543 / 416
Регистрация: 17.09.2015
Сообщений: 1,601
01.10.2017, 13:15 6
Цитата Сообщение от Никита_25 Посмотреть сообщение
написать программу, которая преобразует введенное с клавиатуры дробное число в денежный формат типа: 12 руб. 50 коп.
ну и при чем здесь
Цитата Сообщение от Никита_25 Посмотреть сообщение
найти остаток от деления дробного числа типа float или double
???
0
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
93 / 77 / 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
0 / 0 / 0
Регистрация: 21.06.2017
Сообщений: 10
01.10.2017, 14:53  [ТС] 9
LazySlacker,

Ваш код предполагает ввод двух чисел, а в задаче сказано про одно. Вводишь 123.456 - выдаёт 123 руб. 45(46?) коп.
0
93 / 77 / 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
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
27709 / 17325 / 3811
Регистрация: 24.12.2010
Сообщений: 38,979
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 Посмотреть сообщение
Я бы принял её за копейки, а целую за рубли.
Имхо, логичнее в вашей задаче считать все в копейках, а уж при выводе переводить в рубли-копейки, оставаясь в области целых. Впрочем, это всего лишь совет, а не руководство к действию...
1
0 / 0 / 0
Регистрация: 21.06.2017
Сообщений: 10
01.10.2017, 17:18  [ТС] 13
Байт,

согласен, как вариант, можно и так сделать.
0
738 / 543 / 416
Регистрация: 17.09.2015
Сообщений: 1,601
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.10.2017, 17:32
Помогаю со студенческими работами здесь

Нахождение остатка от деления любых дробных чисел
// Ostatok.cpp : Defines the entry point for the console application. // #include &quot;stdafx.h&quot;...

Найти остаток от деления чисел
Здравствуйте, дана задача &quot;Найти остаток от деления числа 2791 - 2 на 70&quot;, собственно...

остаток от деления чисел Катлана
Народ, кто шарит в математике, как прикрутить на каждую итерацию остаток от деления в такой...

Остаток от деления больших чисел
Всем доброго дня! Раньше не понимал, для чего нужно знать столько типов, и их диапазон, но вот уже...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru