Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
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++ Инфиксная форма Написать программу которая вычисляет значение выражения заданного в инфиксной форме со скобками. Доя представления выражения в памяти компьютера использовать бинарное дерево . Помимо бинарных... https://www.cyberforum.ru/ cpp-beginners/ thread847984.html C++ как получить конкатенацию времени? как системное время получить в с++(не билдер) и преобразовать в int т.е. время 12:41:37 в int должно записаться 124137 https://www.cyberforum.ru/ cpp-beginners/ thread847982.html
C++ Расчёт дисперсии
Привет! У меня возникла странная проблема - при считывании столбца данных из текстового файла (данных около 20 000) и расчёта дисперсии - она получается равной нулю (если считываю именно из второго...
C++ перевести программу на С++ https://www.cyberforum.ru/ cpp-beginners/ thread847973.html
помогите перевести программу с паскаля на С++. uses crt; var i,n:integer; a1,a2,a,eps:real; l:boolean; begin clrscr; l:=false; writeln($$n,eps $$);
C++ двоичный поиск https://www.cyberforum.ru/ cpp-beginners/ thread847967.html
Подскажите, пожалуйста, в вопросе: Какое дополнительное требование к массиву может быть применено при двоичном поиске, что бы определить положение нового элемента. То, что массив должен быть...
C++ найти наименьший номер последовательности
Найти наименьший номер члена последовательно*сти, для которого выполняется условие |{a}_{n}-{a}_{n-1}|<\varepsilon. Выве*сти на экран этот номер и все элементы аi, где i = 1, 2..... n. ε=0.001 ...
C++ Коментарий к челночной сортировки Помогите написать коментарий к челночной сортировке С++. Пожалуйста))) Словарный запас иссяк))) void CHELN_sort(int a,long N) { cout<<"CHELN_sort RUN\n"; for(int j=0;j<N-1;j++) { ... https://www.cyberforum.ru/ cpp-beginners/ thread847956.html C++ Три города В республике N городов пронумерованных с 1 до N. M городов связаны дорогами. Найти три города не связанных между собой дорогами. Формат входного файла Во входном файле записаны сначала два числа N... https://www.cyberforum.ru/ cpp-beginners/ thread847930.html
Расстояние от точки до луча (описание внутри) C++
Помогите люди добрые :) Расстояние от точки до луча Даны координаты точки (x,y) и координаты начала и конца вектора (x1,y1) и (x2,y2). Формат входных данных Шесть чисел x y x1 y1 x2 y2 —...
C++ Вставка в одномерный массив https://www.cyberforum.ru/ cpp-beginners/ thread847927.html
Есть массив cin.getline(m_text, 256) Например : "После завтра я еду домой." Нужно после слова "еду" вставить "на поезде" Результат: "После завтра я еду на поезде домой." При этом не...
1 / 1 / 0
Регистрация: 13.02.2013
Сообщений: 29
25.04.2013, 17:39  [ТС] 0

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

25.04.2013, 17:39. Показов 4666. Ответов 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

Вернуться к обсуждению:
Функция уже определена в другом файле C++
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.04.2013, 17:39
Помогаю со студенческими работами здесь

Локальная переменная или функция с именем "ran" уже определена в этой области
Заданы массивы А1(6), А2(7), А3(4), А4(6). Найти минимальное значение положительных чисел массива и...

Функция не определена. Хотя определена. =)
Добрый день! Есть несколько чекбоксов. На каждый из чекбоксов добавлено свойство...

Переменная уже определена в Form_5.obj
Здравствуйте, я наткнулся на следующую проблему и не могу решить. Вот имеется код файла Form_5.h:...

Локальная переменная уже определена в этой области
Доброго времени суток, почему если переменная объявлена в первой метке свича, то она будет доступна...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru