Я попытался сделать короткую программу в C, чтобы создать функции для вычисления суммы куба чисел (например, 2 * 2 * 2, например), но я получил это сообщение, когда я попытался запустить программу:C - Check_expect_i и ошибка сегментации (ядро сбрасывается)
"сегментации по умолчанию (основной сбрасывали)"
sum_even_cubes.c, строка 14: проверка прошла sum_even_cubes.c, строка 15: проверка прошла sum_even_cubes. c, строка 16: проверка пройдена sum_even_cubes.c, строка 17: проверка прошла sum_even_cubes.c, строка 18: проверка прошла
sum_even_cubes.c, строка 56: проверка прошла sum_even_cubes.c, строка 57: проверка прошла ошибка сегментирования (ядро сбрасывали)
Ниже моей программы в C: (эта ошибка происходит, вероятно, на функция sum_even_cubes_rec())
#include "base.h"
int sum_even_cubes(int n);
void sum_even_cubes_test(void) {
// a)
check_expect_i(sum_even_cubes(0), 0);
check_expect_i(sum_even_cubes(1), 0);
check_expect_i(sum_even_cubes(2), 8);
check_expect_i(sum_even_cubes(3), 8);
check_expect_i(sum_even_cubes(4), 72);
}
int sum_even_cubes(int n) {
// b)
int sum_even_cubes = 0 ;
if(n%2==0){
for(int i=0 ; i<=n ; i+=2){
sum_even_cubes = (sum_even_cubes + (i*i*i));
}
return sum_even_cubes;
}
if(n%2!=0){
for(int i=0 ; i<=(n-1) ; i+=2){
sum_even_cubes = (sum_even_cubes + (i*i*i));
}
return sum_even_cubes;
}
return 404;
}
int sum_even_cubes_rec(int n);
void sum_even_cubes_rec_test(void) {
// a)
check_expect_i(sum_even_cubes_rec(0), 0);
check_expect_i(sum_even_cubes_rec(1), 0);
check_expect_i(sum_even_cubes_rec(2), 8);
check_expect_i(sum_even_cubes_rec(3), 8);
check_expect_i(sum_even_cubes_rec(4), 72);}
int sum_even_cubes_rec(int n) {
// c)
if(n%2==0){
if(n==0){return 0;}
if(n!=0){return (sum_even_cubes_rec(n) + sum_even_cubes_rec((n-2)) ) ;}
}
if(n%2!=0){
if(n==1){return 0;}
if(n!=1){return (sum_even_cubes_rec((n-1)) + sum_even_cubes_rec((n-3))) ;}
}
return 404;
}
int sum_even_cubes_rec2(int n, int acc);
void sum_even_cubes_rec2_test(void) {
// a)
check_expect_i(sum_even_cubes_rec2(0,0), 0);
check_expect_i(sum_even_cubes_rec2(1,0), 0);
check_expect_i(sum_even_cubes_rec2(2,0), 8);
check_expect_i(sum_even_cubes_rec2(3,0), 8);
check_expect_i(sum_even_cubes_rec2(4,0), 72);
}
int sum_even_cubes_rec2(int n, int acc) {
// d)
if(n%2==0){
if(n==0){return acc;}
if(n!=0){return (sum_even_cubes_rec2(n-2, acc + n*n*n));}
}
if(n%2!=0){
if(n==1){return acc;}
if(n!=1){return (sum_even_cubes_rec2(n-2, acc + (n-1)*(n-1)*(n-1))) ;}
}
return 404;
}
int main(void) {
sum_even_cubes_test();
printf("\n");
sum_even_cubes_rec_test();
printf("\n");
sum_even_cubes_rec2_test();
}
Извините за исходный код, я не понимаю, как выделить его полностью, как C программирования исходного кода.
Что это нужно делать с Expect инструментом сценариев? – Barmar
'sum_even_cubes_rec (n)' in 'sum_even_cubes_rec (n)' – BLUEPIXY