2015-02-27 2 views
-1

У меня возникли проблемы с проблемой из моей книги на C++. Он не должен был делать, но я хочу, чтобы заставить его работать:C++ add 1 + 2 + 3 + ... + N

Сумма чисел

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

* Я не прошу этот первый цикл, только второй. Но если вы чувствуете, что кодирование, оно идет вперед.

Это довольно просто, чтобы написать программу, которая уменьшает число до тех пор, пока не достигнет один:

#include <iostream> 
using namespace std; 

int main() 
{ 
    int number; 

    cout << "Enter a number: "; 

    cin >> number; 

    while(number >= 1) 
    { 
     cout << number << " "; 
     number--; 
    } 

    system("pause"); //I usually go with cin.get() but my current 
        //compiler doesn't handle it 
    return 0; 
} 

Но если добавить «номер - 1» в число, число становится больше, и теперь число - 1 будет увеличиваться от этого. Например, 7 + 6 = 13, 13 + 12 = 25, 25 + 24 = 49 и т.д. Вот программа, которую я пытаюсь приспособиться, чтобы сделать работу:

#include <iostream> 
using namespace std; 

int main() 
{ 
    int number; 

    cout << "Enter a number: "; 

    cin >> number; 

    for(count = 1; count <= number; count++) 
    { 
     number += number - 1; 
    } 

    cout << "The sum is" << number << endl; 

    system("pause"); // 
    return 0; 
} 

Это бесконечный цикл, к сожалению.

Любые идеи о том, как адаптировать эту программу, чтобы она удовлетворяла вопрос? Или ссылки на исходный код, который уже сделал это раньше, и т.д.


EDIT:

Так что это может быть другой вопрос полностью, но мой код не компиляции:

#include <iostream> 
using namespace std; 

int main() 
{ 
    int number, sum = 0; 

    cout << "Enter a number: "; 

    cin >> number; 

    for(count = 1; count <= number; count++) 
    {  
     number--; 
     sum += number; 
    } 

    cout << "The sum is" << sum << endl; 

    system("pause"); // 
    return 0; 
} 

enter image description here


EDIT 2: Я только что избавился от цикла for и изменил его на «while (number> = 1) "

+0

Мне не нравятся пустые голоса, поэтому, пожалуйста, попросите меня сначала добавить или изменить что-либо. Спасибо –

+2

Вам нужна дополнительная переменная для суммы и декремента, как и раньше. –

+0

Я пробовал это на самом деле, но мне не повезло –

ответ

2

Что-то вроде этого?

int sum = number; 
while (number-- > 0) { 
    sum += number; 
} 
+0

Для тех, кто не получает он, в основном, хранит номер, затем уменьшает число на 1 до нуля, добавляя его к сумме на каждом шаге. – Hotted24

+0

Может быть, только я, но я думаю, что цикл for лучше всего подходит, особенно новичкам. Хотя я знаю, что это значит, он все еще смотрит на меня. По крайней мере, должно быть пространство между постфиксным декрементом и большим, чем оператор. Формирование стрелки - ненужное обфускация imo. – Carcigenicate

+0

thx to SergeyBrunov для редактирования моего кода, как было предложено @Carcigenicate =) Я не знал об этой стрелке, пока вы не сказали об этом xD – Hotted24

0

Я нахожусь в петле, поэтому я отправлю пример для разнообразия.

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

Смежные вопросы