#include <stdio.h>
#include <stdlib.h>
void del(int *a,int *b,int n,int k,int q){
int *ap,*bp,*c;
int i,t,j,x,l;
ap=(int*)malloc((n+1)*sizeof(int));
t=n+1;
for (i= 0;i<=n;i++){
ap=a;
}
if (t-1<k) { printf("0 \n");}
else if (t-1>=k) {
c=(int*)malloc((n-k+1)*sizeof(int));
x=0;
do{
for (i= 0;i<=t-1;i++){
if (ap<0) { ap=q+ap;}}
for (i= 1;i<=q-1;i++){
if (((b[0]*i) % q) == ap[0]) { l=i;}}
bp=(int*)malloc((t)*sizeof(int));
c[x]=l;
for (i= 0;i<=k;i++){
bp=(l*b) % q;}
for (i= k+1;i<=t-1;i++){
bp=0;}
for (i= 0;i<=t-1;i++){
bp=(ap-bp) % q;}
i=0;
do{
i++;}
while ((bp>0) || (bp<0) || (i==t));
if (t-i>0){
ap=(int*)malloc((t-i)*sizeof(int));}
for (j= 0;j<=t-i-1;j++){
ap[j]=0;}
for (j= i;j<=t-1;j++){
ap[j-i]=bp[j];}
t=t-i;
x++;}
while ((t-1)<k);
}
if (t==0) { printf("1 \n");}
else {printf("0 \n");}
}
int main(){
int *a,*b;
a=(int*)malloc(3*sizeof(int));
b=(int*)malloc(2*sizeof(int));
b[0]=1;
b[1]=1;
a[0]=1;
a[1]=2;
a[2]=1;
int k;
del(a,b,2,1,5);
}
Ошибка Сегментирования C
Программа делит многочлен на многочлен над полем вычетов, компилируется и при запуске выдает ошибку сигментации, знаю что это, совершенно не могу понять, где.
Меньше минуты надо, чтобы определить место возникновения проблемы:
Код:
bp=(int*)malloc((t)*sizeof(int));
Где-то ошибка в алгоритме.
Поставьте перед проблемной строкой:
Код:
printf("%d ", t);
Кстати, нужно проверять, что вернула функция malloc.