0

При попытке компиляции этого кода мне выдает какие-то две странные ошибки, что указывают на первую строку. Как решать их - ума не приложу, а решения этой проблемы нигде не нашел, поэтому в отчаянии заливаю его сюда :,). Прошу прощения, если мои комментарии кому-то будут резать глаз: мне было слегка не до грамматики в тот момент. Сами ошибки:

  1. LNK2019 ссылка на неразрешенный внешний символ "double __cdecl question1(int,double)" (?question1@@YANHN@Z) в функции "class std::vector<double,class std::allocator<double> > __cdecl add(class std::vector<double,class std::allocator<double> >,int,int,double)" (?add@@YA?AV?$vector@NV?$allocator@N@std@@@std@@V12@HHN@Z).
  2. LNK1120 неразрешенных внешних элементов: 1
#include <iostream>
#include <vector>
#include <math.h>
#include <random>

using namespace std;

/// func /// double question1(int a, double b); void output(vector<double> v); vector<double> add(vector<double> v, int size);

double question1(double a, double b) // first question { try { throw (3 * a * pow(b, 2) - pow(b, 3)); // checks denominator } catch (double check) { if (check != 0) // if denominator isn't a zero returns answer { return (pow((a + b), 3) - (pow(a, 3) - 3 * pow(a, 2) * b) / check); } else // if denominator is a zero doesn't return anything but output a error message { return 0; cout << "ERROR 001 : Zero in the denominator." << endl; } } }

void output(vector<double> v) // output vector { cout << "----------Start----------" << endl; for (int i = 0; i <= int(v.size()); i++) { cout << i << ". Answer is: " << v[i] << endl; } cout << "----------End----------" << endl; }

vector<double> add(vector<double> v, int size, int a, double b) // inputs random numbers to q1 and adds it to vector { for (int i = 0; i <= size; i++) { a += ((-9 + rand() % 9) / 10); b += ((-9 + rand() % 9) / 10); v.push_back(question1(a, b)); } return v; }

int main() // main { int a = 100; double b = 0.001; vector<double> answer; // vector where answers collect

answer.push_back(question1(a, b)); // adds a answer to the vector
answer = add(answer, 100, a, b);
output(answer);

system(&quot;pause&quot;); // end program
return 0;

}

Так же я там немного налажал с обработкой ошибки. Хоть в комментарии и написано, что он ничего кроме сообщения не возвращает, но это не так. Он возвращает ноль, ибо в противном случае ничего работать не будет. Кто знает, как это можно реализовать без костылей - отпишитесь, пожалуйста, а то переписывать ту часть не хочется.

скрин компилятора

Cixo
  • 41
  • 4
  • 1
    Проверьте, должно быть double question1(int a, double b); или double question1(double a, double b);. – maestro Mar 21 '21 at 02:40
  • 1
    https://ru.stackoverflow.com/q/536546/3380 – maestro Mar 21 '21 at 02:44
  • 1
    Указывает на первую строку, потому что это ошибка линкера, а не компилятора, а линкер о строках ничего не знает. – maestro Mar 21 '21 at 02:56
  • 1
    vector<double> add(vector<double> v, int size); -> vector<double> add(vector<double> v, int size, int a, double b) ??? –  Mar 21 '21 at 03:14
  • Черт, и вправду. Не стоило писать код быстро - стоило следить за ним повнимательнее ^^' – Cixo Mar 21 '21 at 08:47

0 Answers0