Что не так в программе?
Я хочу поделить многочлены с остатком, но при вызове функции delSOstM программа ломается (return -100765...). Наверное ошибка в логике цикла, но я не понимаю, почему. Вроде как я с каждой итерацией уменьшаю количество элементов, рано или поздно он должен прерваться. Код:
#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
void coutvec (vector <double> f1){
for (int i = 0; i < f1.size(); i++){
cout << "f1 " << i << " = " << f1[i];
}
}
void delSOstM (vector <double> f1, vector <double> f2){
vector <double> fvsp;
int n = 0;
while (true){
if (f1.size() < f2.size()) {break;}
fvsp[n] = f1[0]/f2[0];
f1.erase(f1.begin());
for (int i = 0; i < f1.size(); i++){
f1[i] = f1[i] - f2[i] * fvsp[n];
}
n++;
}
coutvec (fvsp);
}
int main (){
vector <double> f1 {1.1, 2.3, 3.6, 4.0};
vector <double> f2 {1.6, 2.2, 3.8};
delSOstM (f1, f2);
return 0;
}
Ответы (1 шт):
Автор решения: n1tr0xs
→ Ссылка
Вы просто не выделили память при создании вектора.
Замените эту строку
vector <double> fvsp;
на эту
vector <double> fvsp(f1.size());