Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Kotelliada
1 / 1 / 8
Регистрация: 01.11.2015
Сообщений: 52
#1

Ошибка при компиляции многофайлового проекта - C++

29.03.2016, 19:05. Просмотров 180. Ответов 5
Метки нет (Все метки)

Добрый вечер.
Возникает ошибка при компиляции проекта, состоящего из 3-х файлов. В программе использованы структуры и списки.
Файл main.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
#include "Header.h"
#include <iostream>
#include <fstream>
#include "windows.h"
using namespace std;
 
int main()
{
    int choice;
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    head = last = NULL;
    for (;;)
    {
        cout << endl;
        cout << "1. Ввод данных" << endl;
        cout << "2. Удаление данных" << endl;
        cout << "3. Удалить повторяюшиеся данные" << endl;
        cout << "4. Вывод данных" << endl;
        cout << "5. Поиск" << endl;
        cout << "6. Сохранить в файл" << endl;
        cout << "7. Загрузить из файла" << endl;
        cout << "8. Выход" << endl;
        cout << "Номер операции: ";
        cin >> choice;
        system("cls");
        switch (choice)
        {
        case 1: system("cls");
            Enter_data();
            break;
        case 2: system("cls");
            Delete_data(&head, &last);
            break;
        case 3: system("cls");
            Delete_double(&head);
            break;
        case 4: system("cls");
            Data_output();
            break;
        case 5: system("cls");
            Search();
            break;
        case 6: Save_file();
            break;
        case 7: Read_file();
            break;
        case 8: exit(0);
        }
    }
    return 0;
}
Файл executable_file.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
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
#define _CRT_SECURE_NO_WARNINGS
#include "Header.h"
#include <iostream>
#include <fstream>
#include "windows.h"
using namespace std;
 
void Create_list(Address *i, Address **head, Address **last)
{
    struct Address *old, *p;
    if (*last == NULL)
    {
        i->next = NULL;
        i->prev = NULL;
        *last = i;
        *head = i;
        return;
    }
    p = *head;
    old = NULL;
    while (p)
    {
        if (strcmp(p->name, i->name) < 0)
        {
            old = p;
            p = p->next;
        }
        else
        {
            if (p->prev)
            {
                p->prev->next = i;
                i->next = p;
                i->prev = p->prev;
                p->prev = i;
                return;
            }
            i->next = p;
            i->prev = NULL;
            p->prev = i;
            *head = i;
            return;
        }
    }
    old->next = i;
    i->next = NULL;
    i->prev = old;
    *last = i;
}
 
void Input(char *prompt, char *s, int count)
{
    int str_lenght;
    char data[30];
    do
    {
        cout << (prompt);
        cin >> data;
        str_lenght = strlen(data);
        if (str_lenght > count)
        {
            cout << ("Слишком длинная строка");
        }
    } while (str_lenght > count);
    data[str_lenght] = 0;
    strcpy(s, data);
}
 
void Enter_data()
{
    Address *point = new Address;
    if (!point)
    {
        cout << ("Нет свободной памяти");
        return;
    }
    Input("Введите имя: ", point->name, 15);
    Input("Введите город: ", point->city, 20);
    Input("Введите улицу: ", point->street, 25);
    Create_list(point, &head, &last);
    cout << endl;
    cout << "Данные успешно введены!" << endl << endl;
}
 
void Data_output()
{
    Address *point;
    point = head;
    while (point)
    {
        cout << "Имя: " << point->name << endl;
        cout << "Город: " << point->city << endl;
        cout << "Улица: " << point->street << endl;
        cout << endl;
        point = point->next;
    }
}
 
void Search()
{
    char name[15];
    Address *point;
    point = head;
    cout << "Введите имя: ";
    cin >> name;
    while (point)
    {
        if (!strcmp(name, point->name))
        {
            break;
        }
        point = point->next;
    }
    if (!point)
    {
        cout << "Имя не найдено" << endl;
    }
    else
    {
        cout << "Имя: " << point->name << endl;
        cout << "Город: " << point->city << endl;
        cout << "Улица: " << point->street << endl;
    }
}
 
void Delete_data(Address **head, Address **last)
{
    Address *point;
    char name[15];
    point = *head;
    cout << "Введите имя: ";
    cin >> name;
    while (point)
    {
        if (!strcmp(name, point->name))
        {
            break;
        }
        point = point->next;
    }
    if (point)
    {
        if (*head == point)
        {
            *head = point->next;
            if (*head)
            {
                (*head)->prev = NULL;
            }
            else
                *last = NULL;
        }
        else
        {
            point->prev->next = point->next;
            if (point != *last)
            {
                point->next->prev = point->prev;
            }
            else
                *last = point->prev;
        } delete point;
    }
}
 
void Delete_double(Address **begin)
{
    Address *point = *begin;
    if (point == NULL)
    {
        return;
    }
    while (point->next != NULL)
    {
        if (strcmp(point->name, point->next->name) == 0)
        {
            Address *Next_next = point->next->next;
            delete point->next;
            point->next = Next_next;
        }
        else
            point = point->next;
    }
}
 
void Save_file()
{
    struct Address *point;
    ofstream write("data.txt", ios::trunc);
    point = head;
    while (point)
    {
        write << point->name << '\n';
        write << point->city << '\n';
        write << point->street << '\n';
        write << '\n';
        point = point->next;
    }
    write.close();
    cout << "Данные успешно сохранены в файл!" << endl << endl;
}
 
void Read_file()
{
    char string[30];
    ifstream read("data.txt");
    if (!read.is_open())
    {
        cout << "Ошибка открытия файла! " << endl;
    }
    while (!read.eof())
    {
        read >> string;
        cout << string << endl;
    }
    read.close();
}
Файл Header.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
#ifndef _HEADER_H_
#define _HEADER_H_
 
struct Address
{
    char name[15];
    char city[20];
    char street[25];
    Address *next;
    Address *prev;
};
 
Address *head;
Address *last;
 
void Enter_data();
void Create_list(Address *i, Address **head, Address **last);
void Input(char *prompt, char *s, int count);
void Data_output();
void Search();
void Delete_data(Address **head, Address **last);
void Delete_double(Address **begin);
void Save_file();
void Read_file();
#endif

http://www.cyberforum.ru/cpp-beginners/thread1648303.html
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.03.2016, 19:05
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Ошибка при компиляции многофайлового проекта (C++):

Ошибка при компиляции проекта
Всем здравствуйте! Подскажите пожалуйста, как мне исправить ошибку, которая...

Странная ошибка при компиляции проекта
Доброго времени суток Господа. Работаю над проектиком, решил слегка его...

Ошибка при компиляции проекта VS10 на VS13
вообщем у меня VS 13 а проект 10 ошибки качать 10 версию?

Ошибка при компиляции проекта md5 в VS 2010
Привет чуваки. Есть рабочий код...

Работа многофайлового проекта
С++ позволяет создавать многофайловые проект. Это повышает производительность,...

5
Croessmah
++Ͻ
14158 / 8083 / 1513
Регистрация: 27.09.2012
Сообщений: 19,919
Записей в блоге: 3
Завершенные тесты: 1
29.03.2016, 19:26 #2
Цитата Сообщение от Kotelliada Посмотреть сообщение
Возникает ошибка при компиляции проекта,
Какая?
Где?

Или мы должны всё это сейчас бежать и компилировать?
0
SolidCoder
19 / 19 / 14
Регистрация: 21.03.2016
Сообщений: 60
Завершенные тесты: 2
29.03.2016, 19:28 #3
Я пророчу:

Ошибка у Вас в коде. Аминь.

P.S. Для тех кто в танке - ошибку скидывайте, сколько раз повторять?
0
Kotelliada
1 / 1 / 8
Регистрация: 01.11.2015
Сообщений: 52
29.03.2016, 19:33  [ТС] #4
Croessmah,
SolidCoder,
0
Миниатюры
Ошибка при компиляции многофайлового проекта  
Croessmah
++Ͻ
14158 / 8083 / 1513
Регистрация: 27.09.2012
Сообщений: 19,919
Записей в блоге: 3
Завершенные тесты: 1
29.03.2016, 19:35 #5
Лучший ответ Сообщение было отмечено Kotelliada как решение

Решение

Файл Header.h
C++
1
2
extern Address *head;
extern Address *last;
Файл executable_file.cpp
C++
1
2
Address *head;
Address *last;
2
Kotelliada
1 / 1 / 8
Регистрация: 01.11.2015
Сообщений: 52
29.03.2016, 19:39  [ТС] #6
Croessmah,
Спасибо.
А почему так делать надо?
0
29.03.2016, 19:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.03.2016, 19:39
Привет! Вот еще темы с решениями:

Создание многофайлового проекта в Borland 5.02
Кто знает как создать многофайловый проект в среде Borland 5.02

Компиляция и сборка многофайлового проекта
Допустим, у меня есть такие файлы. SuperClass h - объявление, SuperClass cpp...

Функция класса многофайлового проекта
Всем доброго времени суток! Создал проект с классом, сделал *.h для функций,...

Как разобраться со сборкой многофайлового проекта
В теории я считал что понимаю как происходят подключения файлов, их сборка (те...


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

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

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