Member 12873563 Ответов: 4

Для расчета сложных процентов


/* This program is used to calculate the Compound Interest, given the necessary parameters*/
#include <iostream>
using namespace std;
#include <iomanip>
using std::setw;

int main ()
{
	int principal, rate, time, n, a;  //the Rate should be declared as a float or Double to that it can accommodate decimal values because rate should be in decimal
	cout << "Enter the Principal \n";
	cin >> principal;
	cout << "Enter the Rate \n";
	cin >> rate;
	cout << "Enter the Time \n";
	cin >> time;
	cout << "Enter the Number of Years \n";
	cin >> n;
	a = principal*(1+rate/n)^n*time;
	cout << "The Compound Interest for " << n << " months is " << a << "\n";

	return 0;
}

Я получаю сообщение об ошибке "Error: expression must have integral or enum type" из приведенного выше кода, когда пытаюсь его запустить.
Я пытаюсь написать программу, которая вычисляет сложные проценты
НБ: проблема в скорости. Тип данных для скорости должен быть float или double, чтобы он мог вместить десятичную дробь. Код работает, если я объявляю все переменные целыми числами

Что я уже пробовал:

Я пытался объявить все переменные как float или double, но это не работает.

4 Ответов

Рейтинг:
2

OriginalGriff

ГМ...вы ведь понимаете, что оператор ^ не "во власти", не так ли?
A ^ B выполняет XOR из A и B а это не то же самое, что AB
Для "к власти" вам понадобятся

C = (int) pow((double) A,B);
Ваша ошибка может исчезнуть, если вы ее используете.


Рейтинг:
2

Patrice T

int principal, rate, time, n, a;  //the Rate should be declared as a float or Double to that it can accommodate decimal values because rate should be in decimal

Почему бы вам не сделать то, что в комментариях ?
a = principal*(1+rate/n)^n*time;

^ не связан со степенью или показателем степени, это побитовый оператор xor.
Цитата:
Я получаю сообщение об ошибке "Error: expression must have integral or enum type" из приведенного выше кода, когда пытаюсь его запустить.
Где же ошибка?


Рейтинг:
2

KarstenK

Для такой операции следует использовать тип данных float или double, чтобы получить математическую точность.

Переосмыслите стратегию расчета суммы. Я знаю это как расширение возможностей добавленной ставки в течение многих лет. Если ставка в процентах, вы должны разделить на 100. (Как я закодировал).

Ваш ввод времени используется. Это вы должны решить сами.

float principal, rate, time, n, a;//or double
a = principal*pow(1+rate/100,n);

Может быть, вы добавите намек на то, что на входе может быть какой-то фрактон, разделенный буквой "А"."


Рейтинг:
0

Richard MacCutchan

Проблема заключается в использовании логического оператора в вашем выражении:

a = principal*(1+rate/n)^n*time;

То ^ оператор в C/C++ - это побитовое XOR, а не мощность. Вам нужно использовать один из Пау, пауф, Пауль[^] должностные обязанности.