Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Изменить код Visual Studio под Borland C++ https://www.cyberforum.ru/ cpp-beginners/ thread847999.html
Исходный код: #include<iostream> #include<string> #include<fstream> #include <ctype.h> #include<stdio.h> #include"модуль.h" using namespace std;
C++ Копирование dll в целевую папку
Приветствую всех! Вопрос в следующем. Есть два проекта. Использую Visual Studio 2012, windows. В первом: Компилирую dll. На выходе получаю условно first.dll Во втором проекте подключаю и...
C++ Инфиксная форма
Написать программу которая вычисляет значение выражения заданного в инфиксной форме со скобками. Доя представления выражения в памяти компьютера использовать бинарное дерево . Помимо бинарных...
C++ как получить конкатенацию времени? как системное время получить в с++(не билдер) и преобразовать в int т.е. время 12:41:37 в int должно записаться 124137 https://www.cyberforum.ru/ cpp-beginners/ thread847982.html
C++ Расчёт дисперсии https://www.cyberforum.ru/ cpp-beginners/ thread847980.html
Привет! У меня возникла странная проблема - при считывании столбца данных из текстового файла (данных около 20 000) и расчёта дисперсии - она получается равной нулю (если считываю именно из второго...
перевести программу на С++ C++
помогите перевести программу с паскаля на С++. uses crt; var i,n:integer; a1,a2,a,eps:real; l:boolean; begin clrscr; l:=false; writeln($$n,eps $$);
двоичный поиск C++
Подскажите, пожалуйста, в вопросе: Какое дополнительное требование к массиву может быть применено при двоичном поиске, что бы определить положение нового элемента. То, что массив должен быть...
C++ найти наименьший номер последовательности Найти наименьший номер члена последовательно*сти, для которого выполняется условие |{a}_{n}-{a}_{n-1}|<\varepsilon. Выве*сти на экран этот номер и все элементы аi, где i = 1, 2..... n. ε=0.001 ... https://www.cyberforum.ru/ cpp-beginners/ thread847964.html
C++ Коментарий к челночной сортировки https://www.cyberforum.ru/ cpp-beginners/ thread847956.html
Помогите написать коментарий к челночной сортировке С++. Пожалуйста))) Словарный запас иссяк))) void CHELN_sort(int a,long N) { cout<<"CHELN_sort RUN\n"; for(int j=0;j<N-1;j++) { ...
C++ Три города В республике N городов пронумерованных с 1 до N. M городов связаны дорогами. Найти три города не связанных между собой дорогами. Формат входного файла Во входном файле записаны сначала два числа N... https://www.cyberforum.ru/ cpp-beginners/ thread847930.html
1 / 1 / 0
Регистрация: 13.02.2013
Сообщений: 29
25.04.2013, 17:39  [ТС] 0

Функция уже определена в другом файле

25.04.2013, 17:39. Просмотров 3441. Ответов 21
Метки (Все метки)

Ответ

Цитата Сообщение от Байт Посмотреть сообщение
Т.е. реализация попадает в оба obj-файла.
Так вот как она попадает во второй файл? Там же защита стоит, он смотрит что этот хедер уже включен и не трогает его больше. Нет?

Даже растаскивание на файлы не помогает - уже пробывал вот так:
sparseMatrix.h
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
#pragma once
 
#include <vector>
#include <iostream>
#include <iomanip>
#include <sstream>
 
using namespace std;
 
class RowFormatMatrix
{
public:
    RowFormatMatrix(int c=0, int r=0):col(c),row(r),ia(0),ja(0),an(0){};
    RowFormatMatrix(const vector<int>& i, const vector<int>& j, const vector<double>& n, int c, int r):ia(i),ja(j),an(n),col(c),row(r){};
    ~RowFormatMatrix(){}
 
    friend RowFormatMatrix operator+(const RowFormatMatrix& a, const RowFormatMatrix& b);
    friend void printUsualMatrix(const RowFormatMatrix& matrix);
    friend void symbolicPart(const RowFormatMatrix& a, const RowFormatMatrix& b, RowFormatMatrix& c);
    friend void numericalPart(const RowFormatMatrix& a, const RowFormatMatrix& b, RowFormatMatrix& c);
protected:
    vector<int> ia; // номер компонента в ja и an, с которого начинается текущая строка
    vector<int> ja; // номера столбцов
    vector<double> an;
    int col, row;
};
sparseMatrixRealisation.h
C++
1
2
3
4
5
6
7
8
9
10
#pragma once
 
#include "sparseMatrix.h"
 
void symbolicPart(const RowFormatMatrix& a, const RowFormatMatrix& b, RowFormatMatrix& c);
void numericalPart(const RowFormatMatrix& a, const RowFormatMatrix& b, RowFormatMatrix& c);
RowFormatMatrix operator+(const RowFormatMatrix& a, const RowFormatMatrix& b);
void enterUsualMatrix(RowFormatMatrix& matrix);
void enterRowFormatMatrix(RowFormatMatrix& matrix);
void printUsualMatrix(const RowFormatMatrix& matrix);
sparseMatrixRealisation.cpp
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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
#include <vector>
#include <iostream>
#include <iomanip>
#include <sstream>
 
#include "sparseMatrix.h"
#include "sparseMatrixRealisation.h"
 
using namespace std;
 
// символическая часть
void symbolicPart(const RowFormatMatrix& a, const RowFormatMatrix& b, RowFormatMatrix& c)
{
    int firstA, lastA, firstB, lastB;
    int num;
    vector<int> ix(a.col,-1);
 
    for (int i=0; i<c.row; i++) // i - номер строки
    {
        firstA = a.ia[i];
        lastA = a.ia[i+1];
        firstB = b.ia[i];
        lastB = b.ia[i+1];
 
        c.ia.push_back(c.ja.size());
        for (int j=firstA; j<lastA; j++)
        {
            num = a.ja[j];
            c.ja.push_back(num);
            ix[num] = i;
        }
        for (int j=firstB; j<lastB; j++)
        {
            num = b.ja[j];
            if (ix[num] != i)
            {
                c.ja.push_back(num);
            }
        }
    }
    c.ia.push_back(c.ja.size());
}
 
// численная часть
void numericalPart(const RowFormatMatrix& a, const RowFormatMatrix& b, RowFormatMatrix& c)
{
    int firstA, lastA, firstB, lastB, firstС, lastС;
    int num;
    vector<double> ix(a.col);
 
    for (int i=0; i<c.row; i++) // i - номер строки
    {
        firstA = a.ia[i];
        lastA = a.ia[i+1];
        firstB = b.ia[i];
        lastB = b.ia[i+1];
        firstС = c.ia[i];
        lastС = c.ia[i+1];
 
        for (int j=firstС; j<lastС; j++)
        {
            num = c.ja[j];
            ix[num] = 0;
        }
        for (int j=firstA; j<lastA; j++)
        {
            num = a.ja[j];
            ix[num] += a.an[j];
        }
        for (int j=firstB; j<lastB; j++)
        {
            num = b.ja[j];
            ix[num] += b.an[j];
        }
        for (int j=firstС; j<lastС; j++)
        {
            num = c.ja[j];
            c.an.push_back(ix[num]);
        }
    }
}
 
RowFormatMatrix operator+(const RowFormatMatrix& a, const RowFormatMatrix& b)
{
    if (a.col != b.col || a.row != b.row) // проверка на соответствие
    {
        return RowFormatMatrix(0,0);
    }
 
    RowFormatMatrix c(a.col,a.row);
    symbolicPart(a,b,c);
    numericalPart(a,b,c);
    return c;
}
 
void enterUsualMatrix(RowFormatMatrix& matrix)
{
    vector<int> ia; 
    vector<int> ja; 
    vector<double> an;
    int col, row;
    double element;
 
    cout<<"Введите количество строк и столбцов матрицы\n";
    cin>>col>>row;
    cout<<"Введите матрицу "<<col<<"x"<<row<<":\n";
    for (int i=0; i<row; i++)
    {
        cout<<i<<"я строка ";
        ia.push_back(i);
        for (int j=0; j<col; j++)
        {
            cin>>element; 
            if (element!=0) // возможно нужно заменить на element-eps<0
            {
                ja.push_back(j);
                an.push_back(element);
            }
        }
    }
 
    RowFormatMatrix tempMatrix(ia,ja,an,col,row);
    matrix = tempMatrix;
    cout<<"Матрица задана\n";
}
 
void enterRowFormatMatrix(RowFormatMatrix& matrix)
{
    vector<int> ia; 
    vector<int> ja; 
    vector<double> an;
    int col, row;
    double element;
    int num;
 
    string line;
    istringstream stream;
 
    cout<<"Введите количество строк и столбцов матрицы: ";
    cin>>row>>col;
    cout<<"Введите матрицу в разрежено строчном формате:\n";
 
    cout<<"Введите массив ia: ";
    getline(cin,line);
    getline(cin,line);
    stream.str(line);
    while (stream >> num)
    {
        ia.push_back(num);
    }
 
    cout<<"Введите массив ja: ";
    getline(cin,line);
    stream.str(line);
    while (stream >> num)
    {
        ja.push_back(num);
    }
 
    cout<<"Введите массив an: ";
    getline(cin,line);
    stream.str(line);
    while (stream >> element)
    {
        an.push_back(element);
    }
 
    RowFormatMatrix tempMatrix(ia,ja,an,col,row);
    matrix = tempMatrix;
    cout<<"Матрица задана\n";
}
 
void printUsualMatrix(const RowFormatMatrix& matrix)
{
    int first,last, num;
 
    vector< vector<double> > usualMatrix(matrix.row,matrix.col);
    for (int i=0; i<matrix.row; i++)
    {
        first = matrix.ia[i];
        last = matrix.ia[i+1];
 
        for (int j=first; j<last; j++)
        {
            num = matrix.ja[j];
            usualMatrix[i][num] = matrix.an[j];
        }
    }
 
    cout.precision(2);
    for (int i=0; i<matrix.row; i++)
    {
        for (int j=0; j<matrix.col; j++)
        { 
            cout.width(5);
            cout<<fixed<<usualMatrix[i][j]<<" ";
        }
        cout<<"\n";
    }
    cout.precision(0);
}
И потом включаю оба хедера и в main и в support.
Могу даже сам проект кинуть http://rghost.ru/45544528

Вернуться к обсуждению:
Функция уже определена в другом файле
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.04.2013, 17:39
Готовые ответы и решения:

Платформа 8.3.11 Не победить ошибку - процедура или функция уже определена
В 8.3.11 появились очень интересные возможности по работе с расширениями. С выходом первого же...

Ошибка "Функция-член уже определена или объявлена"
Здравствуйте! Делаю класс для работы с векторами (Vector3) При попытке скомпилировать почти для...

Сообщение об ошибке "функция-член уже определена"
Вот код #include &lt;iostream&gt; using namespace std; class Matrix { private: int **Array;...

Ошибка - "Функция _main уже определена"
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; void check_weekday(string day) { if...

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