как взять значение переменной в цикле после каждой итерации? - PullRequest
0 голосов
/ 30 сентября 2019

Я пишу некоторый код, чтобы вычислить итоговую оценку. В настоящее время он может принимать все необходимые входные данные, но я не знаю, как взять сумму после каждой итерации, чтобы я мог сложить их все вместе перед выводом итоговой оценки. Есть ли какой-нибудь простой способ сделать это?

#include <iostream>
#include <math.h>
#include <vector> 

using namespace std;

int main()
{
    vector<int> v;

    double y;
    double z;
    double sum;
    double o;
    int n;

    cout << "how many quizzes/projects/major assignments do you have?" << endl;
    cin >> n;

    for (int i = 0; i <= n; i++)
        v.push_back(i);

    z = v.front();
    while (z != v.back()) {

        cout << "what is the weight of test # " << z + 1 << " as a decimal" << endl;

        cin >> y;

        cout << "what was your grade on test # " << z + 1 << endl;

        cin >> o;

        sum = y * o;

        z = z + 1;
    }

    cout << sum << endl;
}

Ответы [ 2 ]

1 голос
/ 30 сентября 2019

Есть некоторые проблемы с вашим кодом:

  • Ваши циклы закодированы неправильно.

    for (int i = 0; i <= n; i++) должно быть for (int i = 0; i < n; i++), в противном случае вы получите +На 1 элемент больше, чем указано пользователем.

    И z = v.front(); while (z != v.back()) { ... z = z + 1; } фактически совпадает с for(z = 0; z < n; z++)

  • , когда вы заполняете std::vector индексными числами, новы на самом деле не используете эти значения для чего-либо значимого, что вы не можете использовать другие переменные для того же самого, поэтому вы можете просто исключить vector в целом.

  • вашПеременная sum содержит взвешенную оценку только 1 назначения за раз, поэтому, когда вы ее cout, она выводит оценку последней введенной записи. Вы не сохраняете совокупный результат всех введенных назначений.

Вместо этого попробуйте что-нибудь подобное:

#include <iostream>

using namespace std;

int main()
{
    double weight;
    double grade;
    double sum = 0.0;
    int n;

    cout << "how many quizzes/projects/major assignments do you have?" << endl;
    cin >> n;

    for (int i = 0; i < n; i++)
    {
        cout << "what is the weight of test # " << i + 1 << " as a decimal" << endl;
        cin >> weight;

        cout << "what was your grade on test # " << i + 1 << endl;
        cin >> grade;

        sum += (weight * grade);
    }

    cout << sum << endl;
}

Если выесли вы действительно хотите использовать std::vector, вы должны заполнить его фактическими значениями, а затем суммировать их вместе, например:

#include <iostream>
#include <vector> 

using namespace std;

struct assignment
{
    double weight;
    double grade;
};

int main()
{
    vector<assignment> v;

    double sum = 0.0;
    int n;

    cout << "how many quizzes/projects/major assignments do you have?" << endl;
    cin >> n;

    for (int i = 0; i < n; i++)
    {
        assignment a;

        cout << "what is the weight of test # " << i + 1 << " as a decimal" << endl;
        cin >> a.weight;

        cout << "what was your grade on test # " << i + 1 << endl;
        cin >> a.grade;

        v.push_back(a);
    }

    for (int i = 0; i < n; i++)
    {
        sum += (v[i].weight * v[i].grade);
    }

    cout << sum << endl;
}

или:

#include <iostream>
#include <vector> 

using namespace std;

int main()
{
    vector<double> v;

    double weight;
    double grade;
    double sum = 0.0;
    int n;

    cout << "how many quizzes/projects/major assignments do you have?" << endl;
    cin >> n;

    for (int i = 0; i < n; i++)
    {
        cout << "what is the weight of test # " << i + 1 << " as a decimal" << endl;
        cin >> weight;

        cout << "what was your grade on test # " << i + 1 << endl;
        cin >> grade;

        v.push_back(weight * grade);
    }

    for (int i = 0; i < n; i++)
    {
        sum += v[i];
    }
    // or simply:
    // #include <numeric>
    // sum = accumulate(v.begin(), v.end(), 0.0);

    cout << sum << endl;
}
0 голосов
/ 30 сентября 2019

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

   /******************************************************************************

                          Online C++ Compiler.
           Code, Compile, Run and Debug C++ program online.
       Write your code in this editor and press "Run" button to compile and execute it.

     ******************************************************************************/

#include <iostream>
#include <math.h>
#include <vector> 

using namespace std;

int main()
{
vector<int> v;
double y;
double z;
double sum=0;
double o;
int n;

cout << "how many quizzes/projects/major assignments do you have?" << endl;
cin >> n;

for (int i = 0; i <= n; i++)
    v.push_back(i);

z = v.front();
while (z != v.back()) {

    cout << "what is the weight of test # " << z + 1 << " as a decimal" << endl;

    cin >> y;

    cout << "what was your grade on test # " << z + 1 << endl;

    cin >> o;

    sum = sum+(y * o);

    z = z + 1;
}


cout<<"SUm is :" << sum << endl;


}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...