#c #initialization #declaration #undefined-behavior
Вопрос:
Сара Коннорс-это имя и фамилия, 10000-это сумма кредита, 12 процентов, а 3-это количество лет для кредита, все это находится в «Lab4Data.txt»
#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
#include <cmath>
using namespace std;
int main()
{
string fName, lName;
double interestRate, loanAmount, monthlyPayment, totalPayed, interestAmount,
double numberOfPayments
ifstream input;
ofstream output;
input.open("Lab4Data.txt");
output.open("Kirklandlab4results.txt");
interestRate = interestRate / 12;
interestRate = interestRate / 100;
numberOfPayments = numberOfPayments * 12;
monthlyPayment = loanAmount * interestRate
* pow(loanAmount interestRate, numberOfPayments)
/ pow(loanAmount interestRate, numberOfPayments) - 1; //equation to get monthly payment
totalPayed = monthlyPayment * numberOfPayments;
interestAmount = interestRate * numberOfPayments;
input >> fName >> lName;
output << "Name:" << fName << " " << lName;
input >> loanAmount;
output << "Loan Amount:" << loanAmount << endl;
input >> interestRate;
output << "Monthly Intrest Rate:" << interestRate << endl;
input >> numberOfPayments;
output << "Number Of Payments:" << numberOfPayments << endl;
output << "Monthly Payment:" << monthlyPayment << endl;
output << "Total Amount Payed:" << totalPayed << endl;
output << "Interest Amount:" << interestAmount << endl;
output.close();
return 0;
}
я пытаюсь понять, почему он говорит мне, что я получаю неинициализированную переменную, используемую для процентов, количества платежей и суммы займа. Я новичок в C и нуждаюсь в помощи.
Комментарии:
1. Вы выполняете это:
interestRate = interestRate / 12;
перед тем, как прочитать значениеinterestRate
. Обратите внимание, что в c это присвоение значений, а не формулы, которые выполняются каждый раз, когда вы смотрите на переменную.2. C -это не электронная таблица. Вычисления не обновляются после изменения переменной, участвующей в вычислении. Если переменная изменяется и вам нужен новый результат, вам придется выполнить вычисление снова. Если вы запустите вычисление ДО того, как переменная получит значение, вы получите неинициализированную переменную.
Ответ №1:
В этих заявлениях
interestRate = interestRate/12;
interestRate = interestRate / 100;
numberOfPayments = numberOfPayments * 12;
monthlyPayment = loanAmount * interestRate;
используются неинициализированные переменные
double interestRate, loanAmount, monthlyPayment, totalPayed, interestAmount,
double numberOfPayments;
это вызывает неопределенное поведение.
Например, каково значение переменной interestRate
в этом выражении interestRate/12
? Поскольку переменная не была инициализирована (ни одно значение не было присвоено ей в ее объявлении), она содержит некоторый мусор.
Комментарии:
1. Я понятия не имею, какие неинициализированные переменные вызывают неопределенное поведение, если бы вы могли объяснить мне более подробно, если это возможно, поскольку я новичок в c .
2. @kirqy Видишь вопрос в моем ответе.
3. процентная ставка составляет 12, которая записана в текстовом файле «Lab4Data.txt» там написано Сара Коннорс 10000 12 3 //Сара Коннорс-это fName,Lname 10000-это количество кредитов, 12-процент и 3-это количество платежей// Количество платежей, которое, как я полагаю, определено, но я немного сомневаюсь в использовании этой переменной, как я это сделал.
4. @kirqy Программа считывает данные из файла ПОСЛЕ того, как она вычисляет
interestRate = interestRate/12;
Во время вычисления,interestRate
не имеет известного значения. Каково значениеy
iny = x 1
, если вы не знаете значения x?5. @kirqy Вы должны присвоить значение переменной перед ее использованием. Что непонятно?