2013-05-30 4 views
-3

Итак, я пытаюсь использовать цикл for для заполнения массива цифрами 1-8. Затем добавить:Для петель и добавления

1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + оцепенелым = х

, а затем сохранить его в переменной с именем х. Я заполнил массив, но я не знаю, как вычислить сводку массива + номер, который вы вводите. Поблагодарите за помощь.

#include <iostream> 

using namespace std; 

int main() 
{ 

int array[8]; 
int numb; 
int x; // x = summary of array + numb; 

cin >> numb; // insert an number 

for (int i = 0; i <= 8; i++) 
{ 
    array[i]=i+1; 

} 
for (int i = 0; i < 8; i++) 
{ 
    cout << array[i] << " + "; 
    } 

} 
+2

принять к сведению 'станд :: iota'. Не нужно изобретать его. Вы также получаете доступ к 'array [8]' и смотрите в 'std :: accumulate', чтобы суммировать его. – chris

ответ

3

Изменение Последняя часть:

x = numb; 
for (int i = 0; i < 8; i++) 
{ 
    x = x + array[i]; 
} 

cout<<x<<endl; 

Реалистично, хотя, если вы хотите добавить первые п целых чисел, есть формула:

(n*(n+1))/2; 

так что ваши всей программы будет:

#include <iostream> 

using namespace std; 

int main() 
{ 
int n = 8; 
int numb; 
cin >> numb; // insert an number 

int x = n*(n+1)/2+numb; 
cout<<x<<endl; 
} 
+0

+1 для формулы короткого вырезания –

1

Для начального цикла, удалить =:

for (int i=0; i<8; i++) { array[i]=i+1; } 

Для добавления всех элементов массива, а затем добавить онемение:

var x=0; 
for (int i=0; i<8; i++) { x += array[i]; } 
x+=numb; 

Затем вы можете COUT вы х переменную.

+0

+1, но для дальнейшего использования вам следует рассмотреть возможность объяснения * почему * он должен изменить '<=' на '<'. Это не поможет ему, если вы просто скажете ему, что исправить. Важно, чтобы он ** понимал **, что нужно исправлять. –

0

Если вы не обязаны использовать for циклы и массивы (например, это домашнее задание), вы можете рассмотреть код более как:

std::vector<int> array(8); 

// fill array: 
std::iota(begin(array), end(array), 1); 

int numb;  
std::cin >> numb; 

int total = std::accumulate(begin(array), end(array), numb); 

std::cout << "Result: " << total; 
Смежные вопросы