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

Ветвление с чётностью и нечётностью

28.09.2017, 16:19. Показов 930. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Оператор % не работает с типом double. Данный тип данных необходим для точности вычисления. Подскажите как поступить.

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
#include <iostream>
#include <math.h>
#include <conio.h>
#include <windows.h>
#include <iomanip>
 
using namespace std;
 
int main()
{
    setlocale(LC_CTYPE,"rus");
    double Alpfa=15.75, Betta=17.8, Gamma=0.71, Psi=23.7; // Вводим коэфициенты пропорциональности.
    double Esv, Er, Ez;//энергия связи ядра,энергия реакции и энергозатраты реакции.
    int A, Z;// Массовое число,зарядвое число.
    double Y1=2.0, Y2=3.0;//Степени.
    int N;//число нейтронов.
    
    cout<<" 1.Определение энергии связи ядра\n";
    cout<<"Для вычисления энергии связи ядра введите:\n";
    cout<<"массовое число A :"; cin>>A;
    cout<<"зарядовое число Z :"; cin>>Z;
    
    N==A-Z;
    
    if( N % 2 == 0 && Z % 2 == 0 ){
       Esv=Alpfa*A - Betta*( A, 2. / 3. ) - Gamma*Z*Z / pow(A, 1. / 3.) - Psi*pow(A - 2. * Z, 2.) / A  + 12./sqrt(A);
      cout<<Esv<<endl;
    } 
    else if ( N % 2 != 0 && Z % 2 != 0 ){
        Esv=Alpfa*A - Betta*( A, 2. / 3. ) - Gamma*Z*Z / pow(A, 1. / 3.) - Psi*pow(A - 2. * Z, 2.) / A  - 12./sqrt(A);
       cout<<Esv<<endl; 
    }  
    else if( A % 2 != 0 ){
        Esv=Alpfa*A - Betta*( A, 2. / 3. ) - Gamma*Z*Z / pow(A, 1. / 3.) - Psi*pow(A - 2. * Z, 2.) / A ;
      cout<<Esv<<endl;
    }
    
    
    _getch();
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.09.2017, 16:19
Ответы с готовыми решениями:

Ветвление в С++
есть код if(board) { return false; } где board двумерный...

Ветвление на си+
2.11. Проверить, лежит ли окружность (x-а1)2 +(у-b1)2=r12 целиком внутри окружности (х-а2)2+(у-b2)2...

Ветвление С++
Помогите написать ветвление на Builder С++ (желательно) или Visual C++. Это вычисляемые поля в...

Ветвление
я начал учить с++, уже второй день........... написал алгоритм с ветвлением #include &lt;stdio.h&gt;...

8
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,714
28.09.2017, 16:39 2
Не вижу здесь операций % с типом double.
0
0 / 0 / 0
Регистрация: 27.09.2017
Сообщений: 55
28.09.2017, 17:20  [ТС] 3
Прошу прощения,это старый код. В новом коде при инициализации переменных A,Z,N им присваивется тип double
0
Заклинатель змей
700 / 555 / 219
Регистрация: 30.04.2016
Сообщений: 2,591
28.09.2017, 17:26 4
BladeMaster, так выложите новый
0
0 / 0 / 0
Регистрация: 27.09.2017
Сообщений: 55
28.09.2017, 18:12  [ТС] 5
Исправил.

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
#include <iostream>
#include <math.h>
#include <conio.h>
#include <windows.h>
#include <iomanip>
 
using namespace std;
 
int main()
{
    setlocale(LC_CTYPE,"rus");
    double Alpfa=15.75, Betta=17.8, Gamma=0.71, Psi=23.7; // Вводим коэфициенты пропорциональности.
    double Esv, Er, Ez;//энергия связи ядра,энергия реакции и энергозатраты реакции.
    double A, Z;// Массовое число,зарядвое число.
    double Y1=2.0, Y2=3.0;//Степени.
    double N;//число нейтронов.
    
    cout<<" 1.Определение энергии связи ядра\n";
    cout<<"Для вычисления энергии связи ядра введите:\n";
    cout<<"массовое число A :"; cin>>A;
    cout<<"зарядовое число Z :"; cin>>Z;
    
    N==A-Z;
    
    if( N % 2 == 0 && Z % 2 == 0 ){
       Esv=Alpfa*A - Betta*( A, 2. / 3. ) - Gamma*Z*Z / pow(A, 1. / 3.) - Psi*pow(A - 2. * Z, 2.) / A  + 12./sqrt(A);
      cout<<Esv<<endl;
    } 
    else if ( N % 2 != 0 && Z % 2 != 0 ){
        Esv=Alpfa*A - Betta*( A, 2. / 3. ) - Gamma*Z*Z / pow(A, 1. / 3.) - Psi*pow(A - 2. * Z, 2.) / A  - 12./sqrt(A);
       cout<<Esv<<endl; 
    }  
    else if( A % 2 != 0 ){
        Esv=Alpfa*A - Betta*( A, 2. / 3. ) - Gamma*Z*Z / pow(A, 1. / 3.) - Psi*pow(A - 2. * Z, 2.) / A ;
      cout<<Esv<<endl;
    }
    
    
    _getch();
    return 0;
}
Добавлено через 29 минут
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
#include <iostream>
#include <conio.h>
#include <math.h>
#include <windows.h>
#include <iomanip>
 
using namespace std;
 
int main()
{
setlocale(LC_CTYPE,"rus");
double Alpfa=15.75, Betta=17.8, Gamma=0.71, Psi=23.7; // Вводим коэфициенты пропорциональности.
double Esv, Er, Ez;//энергия связи ядра,энергия реакции и энергозатраты реакции.
double A, Z;// Массовое число,зарядвое число.
double Y1=2.0, Y2=3.0;//Степени.
double N;//число нейтронов.
 
cout<<" 1.Определение энергии связи ядра\n";
cout<<"Для вычисления энергии связи ядра введите:\n";
cout<<"массовое число A :"; cin>>A;
cout<<"зарядовое число Z :"; cin>>Z;
 
N==A-Z;
 
if( N % 2 == 0 && Z % 2 == 0 ){
Esv=Alpfa*A - Betta*( A, 2. / 3. ) - Gamma*Z*Z / pow(A, 1. / 3.) - Psi*pow(A - 2. * Z, 2.) / A + 12./sqrt(A);
cout<<Esv<<endl;
} 
else if ( N % 2 != 0 && Z % 2 != 0 ){
Esv=Alpfa*A - Betta*( A, 2. / 3. ) - Gamma*Z*Z / pow(A, 1. / 3.) - Psi*pow(A - 2. * Z, 2.) / A - 12./sqrt(A);
cout<<Esv<<endl; 
} 
else if( A % 2 != 0 ){
Esv=Alpfa*A - Betta*( A, 2. / 3. ) - Gamma*Z*Z / pow(A, 1. / 3.) - Psi*pow(A - 2. * Z, 2.) / A ;
cout<<Esv<<endl;
}
 
 
_getch();
return 0;
}
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,714
28.09.2017, 18:22 6
Лучший ответ Сообщение было отмечено BladeMaster как решение

Решение

Эти 3 переменные не могут быть дробными.
Какова цель объявление их как double?
Если только то, что они встречаются в формулах, так приводите к double там, где нужно:
C++
1
2
double dA=(double)A;
Esv=Alpfa*dA - Betta*pow( dA, 2. / 3. ) - Gamma*Z*Z / pow(dA, 1. / 3.) - Psi*pow(dA - 2. * Z, 2.) / dA + 12./sqrt(dA);
2
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
28.09.2017, 18:54 7
Цитата Сообщение от BladeMaster Посмотреть сообщение
Оператор % не работает с типом double. Данный тип данных необходим...
Вообще-то есть функция fmod
Однако, zss тоже плохого не посоветует
0
зомбяк
1584 / 1218 / 345
Регистрация: 14.05.2017
Сообщений: 3,939
28.09.2017, 19:12 8
Цитата Сообщение от BladeMaster Посмотреть сообщение
N==A-Z;
N=A-Z;

Оператор сравнения вместо оператора присваивания.
0
0 / 0 / 0
Регистрация: 27.09.2017
Сообщений: 55
28.09.2017, 19:21  [ТС] 9
Большое спасибо!
0
28.09.2017, 19:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.09.2017, 19:21
Помогаю со студенческими работами здесь

ветвление if else
Написать программу, которая запрашивает у пользователя номер дня недели и выводит одно из...

Ветвление
здравствуйте. помогите написать программу(с помощью Mультиветвления), выводящую на экран строку...

Ветвление в С++
Доброго времени суток. НЕзнаю как можно реализовать две задачи на ветвление. Может кто нибудь...

Ветвление
Вычислить значение функции при заданных значениях параметров. Значения параметров задаются...


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

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