Когда функция get_poly запущена, она дает мне ошибку сегментации. Некоторые из заполнителей и прочее были попыткой исправить ошибку. Я действительно не знаю, что вызывает это.Ошибка сегментации при использовании указателя на массив
//Weston Sapusek, cop3515
//This program outputs the polynomial of a number given coefficients for each exponent.
#include <stdio.h>
#include <math.h>
void get_poly(double *coeff, int N);
void eval_poly(double *coeff, double base, int N);
int main(void)
{
int N; //max exponent
double base;
printf("Please enter the power of your polynomial: ");
scanf("%d", &N);
printf("Please enter the base number: ");
scanf("%lf", &base);
double a[N];
double *coeff;
coeff = &a[0];
get_poly(coeff, N);
coeff = 0; //reset the coefficient pointer
eval_poly(coeff, base, N);
return 0;
}
void get_poly(double *coeff, int N) {
printf("Enter %d coeffecients of the function, in order: ", N);
int i = 0;
double placeholder;
for (i = 0; i < N; i++){
scanf("%lf", &placeholder);
*coeff = placeholder;
coeff++;
}
}
void eval_poly(double *coeff, double base, int N)
{
int i = 0;
double x = 0; //total
for (i = 0; i < N; i++){
x+= *coeff * base;
}
printf("%lf", x);
}
Составляет ли он? double a [N]; здесь N должно быть постоянным – Asesh
Правильным инструментом для решения таких проблем является ваш отладчик. Перед тем, как просить о переполнении стека, вы должны пропустить свой код по очереди *. Для получения дополнительной информации, пожалуйста, прочтите [Как отлаживать небольшие программы (Эрик Липперт)] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs/). Как минимум, вы должны \ [изменить] ваш вопрос, чтобы включить пример [Минимальный, полный и проверенный] (http://stackoverflow.com/help/mcve), который воспроизводит вашу проблему, а также замечания, сделанные вами в отладчик. –
@Asesh: переменная длина массива, сомнительная функция C99, которую по умолчанию можно использовать как расширение в C++ с помощью GCC. –