С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
DenMach
0 / 0 / 0
Регистрация: 15.09.2011
Сообщений: 10
1

Разбиение программы на файлы С++

18.09.2011, 02:11. Просмотров 3430. Ответов 10
Метки нет (Все метки)

Здравствуйте!

У меня не получается линейный алгоритм своей программы разбить на два файла именно следующим образом.
В первом будет функция main, содержащая операции ввода-вывода, во втором функция без параметров и без возвращаемого значения которая осуществляет вычислительные операции этого алгоритма.
По отдельности файлы компилируются без проблем, но вместе не получается, ругается на необьявленные переменные в файле с функцией, хотя они обьявлены глобально. Также не воспринимается константа M_PI, хотя соответствующая библиотека подключена.

Вот первый файл программы:
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
#include <iostream>
#include <windows.h>
#include <cstring>
#define _USE_MATH_DEFINES
#include <math.h>
using namespace std;
 
extern double p,n,r,a;
void count();
 
void main()
{
    char s[5];
    n=5;
    r=20;
    count();
    cout<<"\nFor radius=20 and sides count=5 perimeter of a polygon equals: "<<p;
    cout<<endl;
    do 
    {
        cout<<"\nInput the number sides of the polygon: ";
        cin>>n;
        cout<<endl;
        cout<<"Input radius of circle: ";
        cin>>r;
        cout<<endl;
        count();
        cout<<"The perimeter of a polygon equals: " <<p;
        cout<<endl;
        cout<<"\nAgain? (Yes/No): ";
        cin>>s;
    } while (!strcmp(s, "yes") || !strcmp(s, "Yes"));
}
Вот второй файл программы:
C++
1
2
3
4
5
6
7
8
#include <math.h>
#define _USE_MATH_DEFINES
 
void count()
{
    a=2*r*sin(3.14/n);
    p=n*a;
}
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.09.2011, 02:11
Ответы с готовыми решениями:

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

Разбиение программы на файлы (трудности с vector)
Возникли трудности при разбиении программы по файлам (прототипы в .h,...

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

Разбиение проекта на файлы
Не знаю почему не получается разбить проект на файлы. Пишет всё время fatal...

Разбиение проекта на файлы
Нужно разбить проект на файлы main.cpp, struct.cpp(здесь функции),...

10
MILAN
888 / 782 / 186
Регистрация: 21.02.2009
Сообщений: 1,722
18.09.2011, 02:17 2
DenMach, нужно подключить второй файл к первому
C++
1
#include "file2.h"
Добавлено через 58 секунд
Цитата Сообщение от DenMach Посмотреть сообщение
void count();
Етот прототип надо убрать
1
DenMach
0 / 0 / 0
Регистрация: 15.09.2011
Сообщений: 10
18.09.2011, 03:00  [ТС] 3
Извиняюсь за дублирование, это вышло случайно)


Попробовал файл подключить так:
C++
1
#include <File2.h>
К предыдущим ошибкам о необьявленных идентификаторах добавилась ошибка о том что данный файл не найден

Попробовал так:
C++
1
#include <File2.cpp>
Файл видит, но проблема с переменными осталась, ни одна не считается обьявленной.

Прототип убрал
0
res
85 / 9 / 1
Регистрация: 05.04.2010
Сообщений: 143
18.09.2011, 03:47 4
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
#include <iostream>
#include <windows.h>
#include <cstring>
#include "File2.h"
 
using namespace std;
 
 void main()
{
        char s[5];
        n=5;
        r=20;
        count();
        cout<<"\nFor radius=20 and sides count=5 perimeter of a polygon equals: "<<p;
        cout<<endl;
        do 
        {
                cout<<"\nInput the number sides of the polygon: ";
                cin>>n;
                cout<<endl;
                cout<<"Input radius of circle: ";
                cin>>r;
                cout<<endl;
                count();
                cout<<"The perimeter of a polygon equals: " <<p;
                cout<<endl;
                cout<<"\nAgain? (Yes/No): ";
                cin>>s;
        } while (!strcmp(s, "yes") || !strcmp(s, "Yes"));
}
C++
1
2
3
4
5
6
7
8
9
#include <math.h>
#define _USE_MATH_DEFINES
double p,n,r,a;
 
void count()
{
        a=2*r*sin(3.14/n);
        p=n*a;
}
1
DenMach
0 / 0 / 0
Регистрация: 15.09.2011
Сообщений: 10
18.09.2011, 19:01  [ТС] 5
res, сделал именно так, проблема с определением переменных решена, но файл он почему то не может найти.

fatal error C1083: Не удается открыть файл include: File2.h: No such file or directory

Добавлено через 5 часов 12 минут
Уважаемые форумчане, по прежнему нуждаюсь в вашей помощи, не могу решить эту задачу(((
0
IrineK
Заблокирован
18.09.2011, 20:41 6
DenMach, а как все-таки называется ваш второй файл?
0
DenMach
0 / 0 / 0
Регистрация: 15.09.2011
Сообщений: 10
18.09.2011, 21:15  [ТС] 7
Файл называется File2.cpp
0
IrineK
Заблокирован
18.09.2011, 21:32 8
А назовите-ка его File2.h
Глядишь, и жизнь наладится )
1
DenMach
0 / 0 / 0
Регистрация: 15.09.2011
Сообщений: 10
18.09.2011, 21:46  [ТС] 9
Спасибо большое IrineK !!! жизнь жизнь действительно наладилась)))

только вот не понятно почему я могу подключать только файлы .h? А файлы .cpp не подключаюся (я пробовол писать и #include "File2.сpp" )
0
IrineK
Заблокирован
18.09.2011, 22:20 10
Лучший ответ Сообщение было отмечено как решение

Решение

Вот полезная ссылка по данному вопросу: http://www.intuit.ru/department/pl/prcmsvs2010/17/

Цитирую:
Если поместить главную функцию main() в один файл, а определения собственной функции программиста – во второй файл, то первому файлу нужны прототипы функций. Для этого можно хранить прототипы функций в одном из заголовочных файлов.

Т.е., когда вы организовали ваш код в виде двух срр, второй cpp подключался, но без прототипов в хэдере первый срр не мог использовать ваши функции.
В простейшем случае в хэдер помещаем не только прототип, но и всю функцию (как в данном примере).
3
DenMach
0 / 0 / 0
Регистрация: 15.09.2011
Сообщений: 10
18.09.2011, 22:36  [ТС] 11
Еще раз спасибо вам огромное IrineK, разъяснили все доступно и толково)))
0
18.09.2011, 22:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.09.2011, 22:36

Разбиение проекта на файлы С++
Есть проект, нужно разбить на несколько файлов. Я то разбил, но есть ошибки...

глобальные static-переменные и разбиение на файлы
Подскажите как связываются файлы при работе со static-переменными? К примеру...

Двухсвязный список (разбиение кода на файлы)
Есть стандартный код реализации шаблонного двухсвязного списка: #include...


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

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

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