Основная проблема заключается в функции, вы выполняете только 1 цикл (у вас есть также некоторые логические вещи, которые компилятор должен вам сказать, например, одинаковые имена переменных и функций ... например.),
, поэтому, если вы поставите 4 as the input
, цикл будет делать только 1+2+3+4
, но если ваш случай отличается, вы хотите сделать suma для всех итераций, таких как 1 + (1+2) + (1+2+3) + (1+2+3+4)
, которые вы делаете только последнимишаг в основном (1 + 2 + 3 + 4), 4 итерации (4x сума), но на самом деле вам нужно 10 итераций (из-за суммы всех конкретных сумм элементов)
Как предложено, попробуйте отладитьВаш код - Что такое отладчик и как он может помочь мне диагностировать проблемы? - это действительно поможет вам понять ваш код
Как уже упоминалось, проблема в
int sum(int n) {
int i, n, sum = 0;
scanf("%d", &n);
for (i = 1; i <= n; i += 1){
sum += i;
}
return n;
}
Вы должны сделать две петли, например.как показано ниже:
int sum,n = 0;
//scanf("%d", &n);
n = 4; //input simulation
//just for demonstration
int iterations = 0;
//counter for total loops (how many "brackets" needs to be count)
for(int loopsCounter = 1; loopsCounter <= n;loopsCounter++){
//counter for child elements in brackets (like 1+2 ,1+2+3, ..)
for (int sumaLoopCounter = 1; sumaLoopCounter <= loopsCounter; sumaLoopCounter++){
//simply make sum with the given number
/* first step 0 +1
second 1+2 added to previous suma = 1+3
third 1+2+3,.. added to previous = 4+6
...
*/
sum += sumaLoopCounter;
//just testing for demonstration
iterations++; //iterations = iterations + 1
}
}
printf("%i \n",iterations);
printf("%i",sum);
Затем вы получили результат, как и ожидалось - сумма всех «элементов скобок» и 10 итераций, что соответствует количеству необходимых дополнений
10
20