2015-04-21 3 views
-9

Я пытаюсь применить цикл «While» к следующей проблеме: спроектировать логику для программы, которая позволяет пользователю вводить число. Отображение суммы каждого номера от одного до введенного числа.C++ «While» Loop

Start 
    int userNumber; 
    Declarations 
     int number = 1 
    while number <= userNumber 
     ++number 
    endwhile 
    output number 
Stop 

Я знаю, что мой код не является правильным, поскольку это просто добавлением одного к исходному значению, пока число пользователя не будет достигнуто, таким образом, делая вывод номер пользователя. Как я могу добавить каждое последующее значение, не выписывая их, например. номер пользователя равен 10, поэтому программа добавит 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 и выведет итог 55?

Спасибо!

+0

'Start' /' Stop' ??!? –

+3

Просто аккумулируйте их в сумму. Что в этом такого сложного? –

+2

Ваш код не является C++, вы уверены, что правильно отметили вопрос? Также вы не получаете номер от пользователя и не накапливаете, а только вычисляете числа от 1 до заданного числа. – Guvante

ответ

1

Вот совет. Вы хотите, чтобы начать с числом пользователей и отсчитывать до 0. Как это:

int finalNum = 0; 
int userNum; 
//This is where you need to get the user's number.... 
while(userNum > 0) 
{ 
    finalNum += userNum; 
    userNum--; 
} 
//Do whatever you need to finalNum.... 

EDIT: Похоже, вы опубликовали псевдокод; обычно большой нет-нет здесь, если не указано иное. Лучше публиковать фактический код, так как проще сказать, что именно происходит.

+0

Благодарю вас за помощь. Я думаю, что именно так я пытался это сделать. Извините за псевдокод. Я не помню, чтобы читал что-то, что предупреждало об этом. – Anonymous

0

Функция вам нужно может выглядеть следующим образом для C++:

#include <iostream> 

using namespace std; 

void calc(unsigned x) 
{ 
    unsigned t = 0;    // Assume the result to be 0 (zero) 
    for (i = 1; i <= x; i++) // Continue until i is greater than x 
    { 
     t += i;    // Accumulate, i.e. t = t +i 
    } 
    cout << "sum=" << t << endl; // Print the result 
} 

int main() 
{ 
    calc(10); 
    return 0; 
} 

Альтернатива:

#include <iostream> 

using namespace std; 

void calc(unsigned x) 
{ 
    cout << "sum=" << (x*(x+1)/2) << endl; // Print the result 
} 

int main() 
{ 
    calc(10); 
    return 0; 
} 

Это работает, так как сумма всех целых чисел от 1 до п п * (п +1)/2