Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Изменить код Visual Studio под Borland C++ http://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 Во втором проекте подключаю и использую first.dll. Построение нормально происходит (second.exe). При запуске (F5) второго проекта предварительно необходимо копировать first.dll в папку Debug, где у нас находится second.exe. Очень... http://www.cyberforum.ru/cpp-beginners/thread847990.html
C++ Инфиксная форма
Написать программу которая вычисляет значение выражения заданного в инфиксной форме со скобками. Доя представления выражения в памяти компьютера использовать бинарное дерево . Помимо бинарных операций + -* / предусмотрены наличие в исходном выражении унарных операций, а также функций синус и косинус. Ребят выручайте, для ассов си, семечки наверное. Заранее благодарен!
C++ как получить конкатенацию времени?
как системное время получить в с++(не билдер) и преобразовать в int т.е. время 12:41:37 в int должно записаться 124137
C++ Расчёт дисперсии http://www.cyberforum.ru/cpp-beginners/thread847980.html
Привет! У меня возникла странная проблема - при считывании столбца данных из текстового файла (данных около 20 000) и расчёта дисперсии - она получается равной нулю (если считываю именно из второго столбца!). Если же считываю из первого, то, вроде, все нормально. В первом столбце числа порядка 0.04, во втором - порядка 7.0. Вот код: for (int i=0; i<10000; i++) { fscanf(f, "%lf %lf %lf",...
C++ перевести программу на С++ помогите перевести программу с паскаля на С++. uses crt; var i,n:integer; a1,a2,a,eps:real; l:boolean; begin clrscr; l:=false; writeln($$n,eps $$); подробнее

Показать сообщение отдельно
UrbanLynx
0 / 0 / 0
Регистрация: 13.02.2013
Сообщений: 29
25.04.2013, 17:39  [ТС]     Функция уже определена в другом файле
Цитата Сообщение от Байт Посмотреть сообщение
Т.е. реализация попадает в оба 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
 
Текущее время: 02:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru