Сумма чисел C ++ - PullRequest
       41

Сумма чисел C ++

4 голосов
/ 18 сентября 2011

Я должен написать программу, которая запрашивает у пользователя положительное целочисленное значение. Программа должна использовать цикл, чтобы получить сумму все целые числа от 1 до введенного числа. Например, если пользователь вводит 50, цикл найдет сумму 1, 2, 3, 4, ... 50.

Но по какой-то причине это не работает, у меня проблемы с моими циклами for, но это то, что у меня до сих пор.

#include <iostream>
using namespace std;

int main()
{
    int positiveInteger;
    int startingNumber = 1;
    int i = 0;

    cout << "Please input an integer up to 100." << endl;

    cin >> positiveInteger;

    for (int i=0; i < positiveInteger; i++)
    {
        i = startingNumber + 1;
        cout << i;
    }

    return 0;

}

Я сейчас в растерянности, почему он не работает должным образом

Ответы [ 8 ]

11 голосов
/ 18 сентября 2011

Цикл отличный;это то, что внутри цикла, это неправильно.Вам нужна переменная с именем sum, и на каждом шаге добавляйте i+1 к sum.В конце цикла sum будет иметь правильное значение, поэтому выведите его.

4 голосов
/ 18 сентября 2011

попробуйте это:

#include <iostream>
using namespace std;

int main()
{
    int positiveInteger;
    int startingNumber = 1;

    cout << "Please input an integer upto 100." << endl;

    cin >> positiveInteger;

    int result = 0;
    for (int i=startingNumber; i <= positiveInteger; i++)
    {
        result += i;
        cout << result;
    }

    cout << result;

    return 0;

}
1 голос
/ 16 января 2016

У меня есть следующая формула, которая работает без циклов. Я обнаружил это, пытаясь найти формулу для факториалов:

#include <iostream>
using namespace std;

int main() {
    unsigned int positiveInteger;
    cout << "Please input an integer up to 100." << endl;
    cin >> positiveInteger;

    cout << (positiveInteger * (positiveInteger + 1)) / 2;
    return 0;
}
1 голос
/ 18 сентября 2011

Вы можете попробовать:

int sum = startingNumber; 
for (int i=0; i < positiveInteger; i++) {     
    sum += i;
}
cout << sum;

Но гораздо проще заметить, что сумма 1+2+...+n = n*(n+1) / 2, поэтому вам не нужен цикл вообще, просто используйте формулу n*(n+1)/2.

0 голосов
/ 18 сентября 2011

Вы просто обновляете значение i в цикле.Значение i также следует добавлять каждый раз.

Никогда не рекомендуется обновлять значение i внутри цикла for.Индекс цикла for следует использовать только в качестве счетчика.В вашем случае изменение значения i внутри цикла вызовет всевозможную путаницу.

Создайте переменную total, которая содержит сумму чисел до i.

Итак

 for (int i = 0; i < positiveInteger; i++)
        total += i;
0 голосов
/ 18 сентября 2011

Во-первых, у вас есть две переменные с одинаковым именем i. Это требует путаницы.

Во-вторых, вы должны объявить переменную с именем sum, которая изначально равна нулю. Затем в цикле вы должны добавить к нему числа от 1 до * включительно positiveInteger. После этого вы должны вывести sum.

0 голосов
/ 18 сентября 2011
int result = 0;


 for (int i=0; i < positiveInteger; i++)
    {
        result = startingNumber + 1;
        cout << result;
    }
0 голосов
/ 18 сентября 2011

mystycs, вы используете переменную i для управления вашим циклом, однако вы редактируете значение i внутри цикла:

for (int i=0; i < positiveInteger; i++)
{
    i = startingNumber + 1;
    cout << i;
}

Попробуйте вместо этого:

int sum = 0;

for (int i=0; i < positiveInteger; i++)
{
    sum = sum + i;
    cout << sum << " " << i;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...