Sono molto scarso in c++ e sto cercando di creare un programma che mi divida due polinomi di grado n ma ottengo sempre un errore di segmentazione. nel programma che mando i polinomi sono rappresentati con i vettori che contengono solo il coefficiente, ho un programma a parte, e funzionante, per creare e stampare i polinomi di grado n a scelta ma non riesco a far funzionare la divisione(so che non è completo il processo ma voglio solo cercare di far funzionare questa parte che ho scritto per poi completarlo). per favore aiutatemi che ho una scommessa in gioco con un amico e di questo passo perdo sicuro
#include <iostream>
#include <vector>
/*i vettori utilizzati sono da considerare come i coefficienti di un polinomio, il vettore [2,2] sarà quindi uguale a 2x+2; il vettore [4,3,2,1] sarà 4x^3+3x^2+2x+1*/
std::vector <double> division (std::vector <double> v1, std::vector <double>v2, int c){
std::vector<double> partial_subtructor (v2.size());
std::vector<double> divisor(v1.size());
std::vector<double> result;
std::vector<double> k;
for(int i=0; i<v1.size();i++){
divisor[i]= v1[i];//copia il vettore v1 su divisor che diventa [2,2]
};
while(divisor.size()>=v2.size()){
double multiplier = divisor[0]/v2[0]; //calcola il primo coefficiente del risultato
for (int i=0; i<divisor.size(); i++){
partial_subtructor[i]= (v2[i]*multiplier);//calcola partial_subrtuctor[2,2], moltiplicando il moltiplicatore al vettore 2
}
for (int i=0; i<partial_subtructor.size(); i++){
divisor[i]= (divisor[i] - partial_subtructor[i]);//sottrae e sostituisce al divisor il partial_subtractor [0,0]
}
while (divisor[0]==0){
divisor.erase(divisor.begin());//cancella dal divisor i coefficienti uguali a 0 prima del primo valore diverso da 0
}
result.push_back(multiplier);//salva il coeffiente del risultato su result
};
switch (c)//permette di scegliere se restituire il resto o il risultato
{
case 1:
for(int i=0; i<result.size();i++){
k[i]= result[i];//restituisce il risultato
}
break;
case 2:
for(int i=0; i<divisor.size();i++){
k[i]= divisor[i];//restituisce il resto
break;
}
}
return k;
};
int main () {
std::vector<double> u1{2,2};//v1
std::vector<double> u2{1,1};//v2
std::vector<double> result;
int a=1;//indicatore per la scelta del risultato o del resto
result = division(u1,u2,a);
std::cout<< result[0]<<'\n';
}