Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 21.09.2013
Сообщений: 18
1

LNK2019 and LNK1120

06.10.2014, 11:34. Показов 1245. Ответов 11
Метки нет (Все метки)

Помогите пофиксить 2 ошибки. Не могу понять что от меня требуется. Вот код программы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
// det.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
 
using namespace std;
int minor(int **submatr, int num, int i, int n);
int Det(int **Matrix, int n) 
    {
        if (n < 3) return Matrix[0][0]*Matrix[1][1]-Matrix[0][1]*Matrix[1][0];
        int sum = 0;
        for (int j = 0; j < n; j++)//перебор 1 строки (вычеркивание столбца) 
        {
            int razm = n - 1; //размер подматрицы (матрицы для нахождения минора)
            int **submatr = new int*[razm];
            for(int k = 0; k < razm; k++)
                submatr[k] = new int[razm]; //создание пустого массива будущей подматрицы
            int subj = 0; // j элемент в субматрице
            for (int st = 1; st < n; st++) //перебор строки в матрице, начинается с 1 так как нулевую "вычеркиваем"
            {
                for (int i = 0; i < n; i++) // перебор всех элементов в строке
                {
                    if (j != i) //проверка на "вычеркивание" столбца
                    {
                        submatr[(st-1)][subj] = Matrix[st][i];
                        subj++;
                    }
                }
                subj = 0; //обнуляем для начала следующей строки
            }
            sum += minor(submatr, Matrix[0][j], j, n-1); //нахождение минора
        }
        return sum;
    }
 
int detminor(int **submatr, int num, int i, int n) 
{
    if (i%2 == 0) return num*Det(submatr, n);
    else return (-num)*Det(submatr, n);
}
 
int detGauss(int **Matrix, int n)
{
    int i,st;
    for (int j = 0; j < n-1; j++) 
    {
        if (Matrix[j][j] == 0) 
        {
            for (int st = j+1; st < n; st++) 
            {
                if (Matrix[st][j] != 0) 
                {
                    for (int i = 0; i < n; i++)
                    {
                        Matrix[j][i] += Matrix[st][i];
                    }
                    break;
                }
            }
            if (Matrix[j][j] == 0) return 0;
        }
        for (st = j+1; st < n; st++) 
        {
            if (Matrix[st][j] == 0)
            {
            int mnoj = (-Matrix[st][j])/Matrix[j][j];
            for (i = j; i < n; i++)  
            {
            Matrix[st][i] = Matrix[st][i]+mnoj*Matrix[j][i];
            }
            }
        }
    }
    int res = 1;
    for (i = 0; i < n; i++) res *= Matrix[i][i];
    return res;
}
 
int main()
{
    int n;
    int sum = 0;
    int number; // Выбор метода решения
    setlocale(LC_ALL, "Russian");
cout << "Пожалуйста выберите способ.\n1 - Нахождение det 2 - Метод Гаусса 3 - Метод Краммера" << endl;
cin >> number;
cout << "Какой размер матрицы желаете?" << endl;
cin >> n;
int **Matrix = new int*[n];
cout << "Заполняем матрицу..." << endl;
for(int i = 0; i < n; i++)
    Matrix[i] = new int[n];
 
 
for(int i = 0; i < n; i++)
    for(int j = 0; j < n; j++)
    {
        cin >> Matrix[i][j];
    }
 
cout << "Вывод начального массива" << endl;
 
for(int i = 0; i < n; i++)
{
    for(int j = 0; j < n; j++)
    {
        cout << "|" << Matrix[i][j]<< "|" << "\t";
    }
    cout << endl;
}
switch (number)
{
case 1:
    {
cout << "Начнем нахождение детерминанта" << endl;
 
cout << "Определитель равен " << Det(Matrix, n) << endl;
 
    delete [] Matrix;
    }
 
case 2:
    {
 
cout << "Начинаем решение методом Гаусса" << endl;
 
cout << "Ответ, методом Гаусса " << detGauss(Matrix, n) << endl;
 
delete [] Matrix;
    }
}
    system("pause");
    return 0;
}
Добавлено через 7 минут
C++
1
2
1>det.obj : error LNK2019: ссылка на неразрешенный внешний символ "int __cdecl minor(int * *,int,int,int)" (?minor@@YAHPAPAHHHH@Z) в функции "int __cdecl Det(int * *,int)" (?Det@@YAHPAPAHH@Z)
1>C:\Users\Hetheron\Documents\Visual Studio 2008\Projects\det\Debug\det.exe : fatal error LNK1120: 1 неразрешенных внешних элементов
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.10.2014, 11:34
Ответы с готовыми решениями:

LNK1120 и LNK2019
1&gt;------ Сборка начата: проект: Win32Project3, Конфигурация: Debug Win32 ------ 1&gt;stdAfx.cpp...

LNK2019 и LNK1120
Программа состоит из 3ех файлов: names.h #ifndef NAMES_H_ #define NAMES_H_ namespace SALES {...

Error LNK2019 и LNK1120
Форумчане, помогите кто чем может. изучать язык только начал, поэтому куча вопросов и ошибок, а...

Ошибка error LNK2019 & LNK1120 и md5()
Добавил поддержку md5(), код с сайта http://www.zedwood.com/article/cpp-md5-function Пробую...

11
Эксперт С++
4974 / 3081 / 456
Регистрация: 10.11.2010
Сообщений: 11,160
Записей в блоге: 10
06.10.2014, 11:34 2
Текст ошибок покажи.
0
6014 / 2136 / 744
Регистрация: 10.12.2010
Сообщений: 5,979
Записей в блоге: 3
06.10.2014, 11:40 3
Нет реализации функции minor -- только прототип.
0
0 / 0 / 0
Регистрация: 21.09.2013
Сообщений: 18
06.10.2014, 11:57  [ТС] 4
Можешь подсказать где конкретно?) Я просто ток изучаю с++ и сложно найти что-то))
0
6014 / 2136 / 744
Регистрация: 10.12.2010
Сообщений: 5,979
Записей в блоге: 3
06.10.2014, 12:03 5
Лучший ответ Сообщение было отмечено SnapSh0t как решение

Решение

Строка 8 -- прототип. Строка 32 -- вызов. Реализация отсутствует.
1
0 / 0 / 0
Регистрация: 21.09.2013
Сообщений: 18
06.10.2014, 12:16  [ТС] 6
Можно последний вопрос? Почему когда я убираю функцию detGauss - все работает без ошибок? оО
0
6014 / 2136 / 744
Регистрация: 10.12.2010
Сообщений: 5,979
Записей в блоге: 3
06.10.2014, 12:22 7
Смотря как убрали и что осталось...
0
0 / 0 / 0
Регистрация: 21.09.2013
Сообщений: 18
06.10.2014, 12:29  [ТС] 8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
int detGauss(int **Matrix, int n)
{
    int i,st;
    for (int j = 0; j < n-1; j++) 
    {
        if (Matrix[j][j] == 0) 
        {
            for (int st = j+1; st < n; st++) 
            {
                if (Matrix[st][j] != 0) 
                {
                    for (int i = 0; i < n; i++)
                    {
                        Matrix[j][i] += Matrix[st][i];
                    }
                    break;
                }
            }
            if (Matrix[j][j] == 0) return 0;
        }
        for (st = j+1; st < n; st++) 
        {
            if (Matrix[st][j] == 0)
            {
            int mnoj = (-Matrix[st][j])/Matrix[j][j];
            for (i = j; i < n; i++)  
            {
            Matrix[st][i] = Matrix[st][i]+mnoj*Matrix[j][i];
            }
            }
        }
    }
    int res = 1;
    for (i = 0; i < n; i++) res *= Matrix[i][i];
    return res;
}
это
0
Эксперт С++
4974 / 3081 / 456
Регистрация: 10.11.2010
Сообщений: 11,160
Записей в блоге: 10
06.10.2014, 12:32 9
Этого не может быть.
0
0 / 0 / 0
Регистрация: 21.09.2013
Сообщений: 18
06.10.2014, 12:41  [ТС] 10
ну и смысл мне обманывать вас. Попробуйте даже сами.
0
Эксперт С++
4974 / 3081 / 456
Регистрация: 10.11.2010
Сообщений: 11,160
Записей в блоге: 10
06.10.2014, 12:52 11
Лучший ответ Сообщение было отмечено SnapSh0t как решение

Решение

У тебя нет реализации функции minor, программа в этом случае скомпилироваться не сможет.
Проверить у меня нет возможности, т.к. с телефона.
Покажите рабочий код без функции detGauss.
1
0 / 0 / 0
Регистрация: 21.09.2013
Сообщений: 18
06.10.2014, 12:59  [ТС] 12
я баран, все верно подсказывали. Просто при редактировании проекта изменил название вместо minor на detminor, а в других местах изменить забыл. Все работает. Извини пожалуйста за такие глупые вопросы и ошибки) Просто я только начинаю знакомиться с С++. Спасибо всем огромное за помощь
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.10.2014, 12:59

Error LNK2028, LNK2019, LNK1120: 2 неразрешенных внешних элементов
Всем привет. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;iomanip&gt; #include &quot;conio.h&quot;...

Error LNK2019 и fatal error LNK1120
Копаюсь в гугле уже часа 2. Не понимаю, в чем проблема. Вроде нигде ошибок в коде нету, но выдает:...

Error LNK1120, Error LNK2019
Здравствуйте . У меня проблема с кодом . #include &quot;stdafx.h&quot; #include &lt;conio.h&gt; #include...

Error LNK1120, error LNK2019, error LNK2028, queue
// свойство класса Parser queue&lt;elem*&gt;* postfix = new queue&lt;elem*&gt;; // строка, из-за...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.