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

написать программку на С++ Тема:целочисленная арифметика - C++

Восстановить пароль Регистрация
 
Karfagen
0 / 0 / 0
Регистрация: 09.10.2012
Сообщений: 6
09.10.2012, 22:37     написать программку на С++ Тема:целочисленная арифметика #1
Дано ABCDEF.GHIKLM - вещественное число
1) убрать из числа EH
2) на место группы ABCD записать их сумму, сохранив в числе положение точки относительно целой и дробной частей числа.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.10.2012, 22:37     написать программку на С++ Тема:целочисленная арифметика
Посмотрите здесь:

C++ Целочисленная арифметика
C++ Целочисленная арифметика
C++ целочисленная арифметика c++
C++ Целочисленная арифметика
C++ Целочисленная арифметика
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Psilon
Master of Orion
 Аватар для Psilon
5743 / 4691 / 619
Регистрация: 10.07.2011
Сообщений: 14,162
Записей в блоге: 5
Завершенные тесты: 4
09.10.2012, 22:43     написать программку на С++ Тема:целочисленная арифметика #2
Karfagen,
Поподробней задание объясните, на примере.
Karfagen
0 / 0 / 0
Регистрация: 09.10.2012
Сообщений: 6
09.10.2012, 22:50  [ТС]     написать программку на С++ Тема:целочисленная арифметика #3
Допустим дано число 846429.731525
(ABCDEF.GHIKLM)
1) EH нужно убрать вообще в ответе чтоб их не было, т.е. убрать 2 и 3
2) найти сумму A+B+C+D и записать полученное число ровно под тем что было точка под точкой чтобы были
например вот так: цифры любые можно от 0 до 9 я как пример эти взял
846429.731525
.....229.71525 <--- типа конечный результат 8+4+6+4 это типа сложили и получили 22 , затем 2 следущую убираем как по условию и после запятой записываем все кроме 3 тоже убираем остальные без изменения
Psilon
Master of Orion
 Аватар для Psilon
5743 / 4691 / 619
Регистрация: 10.07.2011
Сообщений: 14,162
Записей в блоге: 5
Завершенные тесты: 4
09.10.2012, 23:15     написать программку на С++ Тема:целочисленная арифметика #4
Karfagen, с первым числом мне кажется проще всего работать, переведя в строку (хотя и затратно, зато просто). А вот второе нифига не ясно
Karfagen
0 / 0 / 0
Регистрация: 09.10.2012
Сообщений: 6
09.10.2012, 23:19  [ТС]     написать программку на С++ Тема:целочисленная арифметика #5
846429.731525 Это вещественное число вводимое с клавиатуры
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
09.10.2012, 23:39     написать программку на С++ Тема:целочисленная арифметика #6
Как вариант
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
 
int main()
{
    double x = 846429.731525;
    
    int left = x;
    int right = (long long)(x * 1e6) % 1000000;
 
    left = left / 100 * 10 + left % 10;
 
    right = right / 100000 * 10000 + right % 10000;
 
    int sum = 0;
    for (int tmp = left / 10; tmp; tmp /= 10)
        sum += tmp % 10;
 
    left = left % 10 + sum * 10;
 
    std::cout << left << '.' << right << std::endl;
}
С даблами вряд ли получится сделать, так как они постоянно округляются.

Причем в студии это работает, а в gcc неправильно находит дробную часть(из-за округления).

Добавлено через 2 минуты
В общем, подобрал эпсилон, который работает и в gcc и в студии.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
 
int main()
{
   const double EPS = 1e-4;
 
   double x = 846429.731525;
 
   int left = x;
   int right = (long long)(x * 1e6 + EPS) % 1000000;
 
   left = left / 100 * 10 + left % 10;
 
   right = right / 100000 * 10000 + right % 10000;
 
   int sum = 0;
   for (int tmp = left / 10; tmp; tmp /= 10)
      sum += tmp % 10;
 
   left = left % 10 + sum * 10;
 
   std::cout << left << '.' << right << std::endl;
}
Если не будет работать, попробуйте поиграться с 5 строкой.
Yandex
Объявления
09.10.2012, 23:39     написать программку на С++ Тема:целочисленная арифметика
Ответ Создать тему
Опции темы

Текущее время: 16:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru