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

Сумма цифр правой и левой частей (ошибки) - C++

Восстановить пароль Регистрация
 
sergey_viper
9 / 3 / 1
Регистрация: 15.04.2012
Сообщений: 177
12.10.2012, 19:42     Сумма цифр правой и левой частей (ошибки) #1
Хоть убейте не могу понять где ошибки.
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
#include <iostream>
#include <cmath>
 
using namespace std;
int main()
 
{
double N, N1,N2,N3,N4,N5,N6,N7,N8,D,C,SR,SL;
int a,b,c,d,e,f,Cel,Drob;
  cout << "Enter N"<<endl;
  cin >> N;
D = modf(N,&C);
cout<<C<<endl<<D<<endl;
Cel = C;
a = Cel % 1000; N1= Cel/= 1000;
b = a % 100; N2= a/= 100;
c = b % 10; N3= b/= 10;
N4 =c;
Drob = D*10000;
d = Drob % 1000; N5= Drob/= 1000;
e = a % 100; N6= d/= 100;
f = b % 10; N7= e/= 10;
N8 =f;
SR = N1+N2+N3+N4;
SL = N5+N6+N7+N8;
if ( SR = SL )
cout <<SL<<endl<<SR<<endl<< "Da";
else cout <<"Net";
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.10.2012, 19:42     Сумма цифр правой и левой частей (ошибки)
Посмотрите здесь:

Столбцы левой половины массива поменять местами со столбцами правой половины C++
разместить все элементы с положительными значениями в левой части массива, элементы с отрицательными значениями - в правой... C++
Найдите такие натуральные числа, чтобы сумма их цифр, а также сумма цифр следующего за ним числа делилась на 7 C++
C++ Найти простые числа, чтобы сумма их цифр, а также сумма цифр следующего за ним числа, делилась на 7
Массив: Разместить все элементы с положительными значениями в левой части массива, элементы с отрицательными значениями - в правой C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
isvpro
72 / 7 / 1
Регистрация: 07.10.2009
Сообщений: 51
12.10.2012, 20:49     Сумма цифр правой и левой частей (ошибки) #2
Возможно будет проще помочь, если Вы скажете, что вообще должна делать эта программа? Т.е. какого эффекта хотели Вы достичь?
sergey_viper
9 / 3 / 1
Регистрация: 15.04.2012
Сообщений: 177
12.10.2012, 21:30  [ТС]     Сумма цифр правой и левой частей (ошибки) #3
Цитата Сообщение от isvpro Посмотреть сообщение
Возможно будет проще помочь, если Вы скажете, что вообще должна делать эта программа? Т.е. какого эффекта хотели Вы достичь?
Определить, равна ли сумма цифор дробной части заданного положительного вещественного числа сумме цифр целой части.
isvpro
72 / 7 / 1
Регистрация: 07.10.2009
Сообщений: 51
13.10.2012, 15:29     Сумма цифр правой и левой частей (ошибки) #4
После анализа предложенного алгоритма я понял, что проще написать с нуля =)
Вот такой код получился. Если что не понятно - спрашивайте.

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
//подключим библиотеке
#include <iostream>
 
//укажем пространство имен, чтобы не тыкать std каждый раз
using namespace std;
 
//поехали
int main()
 
{
    //определим переменную, в которой будем хранить введенное значение
    double valueToAnalyse_float;
 
    //сразу запросим это значение и сохраним
    //вывод делаю по-английски, чтобы не писать лишнего кода мешающего в данном случае для понимания алгоритма
    cout << "Please enter the value to anyalyse: "; cin >> valueToAnalyse_float;
 
    //воспользуемся стандартными средствами для определения целой и дробной частей, если кому не нравится - можно и modf
    
    int integradPartOfAnalysingValue_int;           // собственно целая часть будет храниться здесь
    double fractionalPartOfAnalysingValue_float;     //дробная часть будет храниться здесь
 
    integradPartOfAnalysingValue_int = static_cast<int>(valueToAnalyse_float); // получим целую часть путем явного преобазования (дробь просто отбросится)
    fractionalPartOfAnalysingValue_float = valueToAnalyse_float - integradPartOfAnalysingValue_int; // вычтем из всего числа, целую часть и логично предположить, что мы получим дробную часть.
 
    //определим сумму цифр целой части
    int sumIntegralPartOfAnalysingValue_int=0;
    
    while (integradPartOfAnalysingValue_int != 0)
    {
        sumIntegralPartOfAnalysingValue_int += integradPartOfAnalysingValue_int - integradPartOfAnalysingValue_int/10*10;
        integradPartOfAnalysingValue_int /= 10;
    }
    //теперь определим сумму цифр дробной части
    int sumFractionalPartOfAnalysingValue_int=0;
 
    //сначала сделаем дробную часть "целой"
    while(abs(fractionalPartOfAnalysingValue_float - static_cast<int>(fractionalPartOfAnalysingValue_float+0.5)) > 0.01)
    {
        fractionalPartOfAnalysingValue_float *= 10;
    }
    //приведем нашу "приведенную к целому типу" дробную часть к действительно целому типу
    int fractionalPartOfAnalysingValue_int = static_cast<int>(fractionalPartOfAnalysingValue_float+0.5);
    //и теперь применим к нему такой же механизм подсчета значащих цифр
 
    while (fractionalPartOfAnalysingValue_int != 0)
    {
        sumFractionalPartOfAnalysingValue_int += fractionalPartOfAnalysingValue_int - fractionalPartOfAnalysingValue_int/10*10;
        fractionalPartOfAnalysingValue_int /= 10;
    }
    //выведем оба числа
    if (sumIntegralPartOfAnalysingValue_int == sumFractionalPartOfAnalysingValue_int)
        {cout << "The summ of digits at integral parts and fracional parts of value, are both equal to:" << sumIntegralPartOfAnalysingValue_int;}
 
    else if (sumIntegralPartOfAnalysingValue_int > sumFractionalPartOfAnalysingValue_int)
        {cout << "The summ of digits at integral parts are more than fracional parts of value: " << sumIntegralPartOfAnalysingValue_int << " > " << sumFractionalPartOfAnalysingValue_int ;}
    else if (sumIntegralPartOfAnalysingValue_int < sumFractionalPartOfAnalysingValue_int)
        {cout << "The summ of digits at integral parts are less than fracional parts of value: " << sumIntegralPartOfAnalysingValue_int << " < " << sumFractionalPartOfAnalysingValue_int ;}
    return 0;
 
    
}
Yandex
Объявления
13.10.2012, 15:29     Сумма цифр правой и левой частей (ошибки)
Ответ Создать тему
Опции темы

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