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

Как связать несколько файлов одной программы - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
Starscream
 Аватар для Starscream
55 / 43 / 2
Регистрация: 04.11.2012
Сообщений: 106
15.12.2012, 20:24     Как связать несколько файлов одной программы #1
есть 3 файла

MainFile.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
#include <iostream>
#include <windows.h>
#include <fstream>
#include "BankAccounts.h"
 
using namespace std;
 
int main()
{   
    ofstream out_stream;
    
    system("chcp 1251>text");
    BankAccount account1(190,50,3.5),account2(200,3.6);
    BankAccount account3;
    account3 = account1 + account2;
    account3.output(cout);
   
    account1.update();
    account1.update();
    account2.update();
    
    comparison(account1,account2,account3);
    
        
        
    system("pause");
    return 0;
}

BankAccounts.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
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
#include <iostream>
#include <windows.h>
#include <fstream>
 
using namespace std;
 
class BankAccount
{
public:
   //Новые функции    
       
   //Конструкторы    
   BankAccount(int new_dollars,int new_cents,double new_rate);    
   BankAccount(int new_dollars,double new_rate);  
   BankAccount();
   //Дружественные функции
   friend bool equal_balance(BankAccount object1, BankAccount object2);
   friend bool equal_rate(BankAccount object1, BankAccount object2);
   friend BankAccount operator + (BankAccount object1, BankAccount object2);  
   /////*********************
   
   //Функции добавленные самостоятельно
   
   //Сравнение на больше
   friend bool bigest_balance(BankAccount object1 , BankAccount object2);
   friend bool bigest_rate(BankAccount object1 , BankAccount object2);
   //Конечная функция на равно и больше
   friend void comparison(BankAccount object1 , BankAccount object2, BankAccount object3);
   
   
   ///////*******************
   void update();
   // Постусловие: к балансу счета прибавлены процентные
   // начисления за один год.
   double get_balance();
   // Возвращает текущий баланс счета.
   double get_rate();
   // Возвращает текущую процентную ставку.
   void output(ostream& outs);
   // Предусловие: если оuts - выходной файловый поток.
   // он уже соединен с файлом.
   // Постусловие: значения баланса счета и процентной ставки
   // записаны в поток оuts.
   //***************************************************
   
private:
   string name;
   double balance;//баланс на счете
   double interest_rate;//процентная ставка
   double fraction(double persent);
   // Преобразует проценты в дробь. Например,
   // функция frаctiоn(50.3) возвращает значение 0.503.
};

и BankAccounts.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
#include <iostream>
#include <windows.h>
#include <fstream>
#include "BankAccounts.h"
 
using namespace std;
 
//Конструкторы
 
//Конструктор для первого вклада
BankAccount::BankAccount(int new_dollars,int new_cents,double new_rate)
{
  balance=new_dollars+(0.01*new_cents);
  interest_rate=new_rate;
}
//для второго
BankAccount::BankAccount(int new_dollars,double new_rate)
{
  balance=new_dollars;
  interest_rate=new_rate;
}
//поумолчанию
BankAccount::BankAccount()
{
  balance=0.00;
  interest_rate=0.01;
}
 
//===============//Функции на сравнение
 
//Сравнивает баллансы
bool equal_balance(BankAccount object1, BankAccount object2)
{
  return(object1.balance==object2.balance);
}
 
//Сравнивает процентные ставки
bool equal_rate(BankAccount object1, BankAccount object2)
{
  return(object1.interest_rate==object2.interest_rate);
}
//Сложение баланса первого и второго с процентной ставкой 0.01%
BankAccount operator + (BankAccount object1, BankAccount object2)
{
  BankAccount new_account;
  new_account.balance=object1.balance + object2.balance;
  new_account.interest_rate = 0.01;
  return(new_account);
} 
//Сравнение на больший баланс
bool bigest_balance(BankAccount object1 , BankAccount object2)
{
    return(object1.balance > object2.balance);
}
//Сравнение на больший процент
bool bigest_rate(BankAccount object1 , BankAccount object2)
{
    return(object1.interest_rate > object2.interest_rate);
}
 
 
//Конечная функция на равно и больше
void comparison(BankAccount object1 , BankAccount object2, BankAccount object3)
{
  //Сравнение на равно
    if(equal_balance(object1,object2) && equal_balance(object1,object3))
      { cout.width(100);
        cout.fill('-');
        cout<<"\nВсе вклады равны\n";
        object1.output(cout);
      }
    else 
      if(equal_balance(object1,object2))
      { cout.width(100);
        cout.fill('-');
        cout<<"\nПервый и второй вклады равны "<<endl;
        object1.output(cout);
      }
      else
        if(equal_balance(object1,object3))
        { cout.width(100);
          cout.fill('-');
          cout<<"\nПервый и третий вклады равны "<<endl;
          object1.output(cout);
        }
        else 
          if(equal_balance(object2,object3))
            { cout.width(100);
              cout.fill('-');
              cout<<"\nВторой и третий вклады равны "<<endl;
              object2.output(cout);
            }
    //Сравнение на больше баланс
    if(bigest_balance(object1,object2) && bigest_balance(object1,object3))
    { cout.width(100);
      cout.fill('-');
      cout<<"\nБаланс первого вклада больше всех "<<endl;
      object1.output(cout);
    } 
    else
      if(bigest_balance(object2,object1) && bigest_balance(object2,object3))   
      { cout.width(100);
        cout.fill('-');
        cout<<"\nБаланс второго вклада больше всех "<<endl;
        object2.output(cout);
      }  
      else
         if(bigest_balance(object3,object1) && bigest_balance(object3,object2))   
         { cout.width(100);
           cout.fill('-');
           cout<<"\nБаланс третьего вклада больше всех "<<endl;
           object3.output(cout);
         }   
     //Сравнение на больше процентная ставка
     if(bigest_rate(object1,object2) && bigest_rate(object1,object3))
    { cout.width(100);
      cout.fill('-');
      cout<<"\nУ первого вклада процентная ставка больше всех "<<endl;
      object1.output(cout);
    } 
    else
      if(bigest_rate(object2,object1) && bigest_rate(object2,object3))   
      { cout.width(100);
        cout.fill('-');
        cout<<"\nУ второго вклада процентная ставка больше всех "<<endl;
        object2.output(cout);
      }  
      else
         if(bigest_rate(object3,object1) && bigest_rate(object3,object2))   
         { cout.width(100);
           cout.fill('-');
           cout<<"\nУ третьего вклада процентная ставка больше всех "<<endl;
           object3.output(cout);
         }      
}
//===========//
 
double BankAccount::get_balance()
{
  return balance;
}
 
double BankAccount::get_rate()
{
  return interest_rate;
}
 
void BankAccount::update()
{
  double year_balance=0;
  
  year_balance=((balance*interest_rate)/100);
  balance=balance+year_balance;
}
 
void BankAccount::output(ostream& outs)
{ 
  outs<<"На момент закрытия вклада, на нем было "<<balance<<" долларов, "
      <<"\nпри процентной ставке "<<interest_rate<<" процентов\n"<<endl; 
}


В 10ой студии все работает а вот под dev c++ запускаться нехочет
помогите разобраться что нетак и как с этим бороться ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
15.12.2012, 20:26     Как связать несколько файлов одной программы #2
так что конкретно не работает? создай проект, прикрепи к нему файлы.
Starscream
 Аватар для Starscream
55 / 43 / 2
Регистрация: 04.11.2012
Сообщений: 106
15.12.2012, 20:35  [ТС]     Как связать несколько файлов одной программы #3
проблема как раз в прикреплении файлов
советуют использовать #define #endif но как с ними работать незнаю
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
15.12.2012, 20:37     Как связать несколько файлов одной программы #4
так ничего не надо переделывать просто добавь файлы в проект в списке, который обычно слева.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11841 / 6820 / 771
Регистрация: 27.09.2012
Сообщений: 16,911
Записей в блоге: 2
Завершенные тесты: 1
15.12.2012, 20:41     Как связать несколько файлов одной программы #5
Цитата Сообщение от Starscream Посмотреть сообщение
советуют использовать #define #endif но как с ними работать незнаю
C++
1
2
3
4
5
6
#ifndef _MY_HEADER_BA_H_
#define _MY_HEADER_BA_H_ //Да хоть как обзовите - Вам решать
 
//Код h файла
 
#endif
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
15.12.2012, 20:44     Как связать несколько файлов одной программы #6
Цитата Сообщение от Starscream Посмотреть сообщение
проблема как раз в прикреплении файлов
советуют использовать #define #endif но как с ними работать незнаю
да не нужно файлы как-то особенно "прикрепять". Если работаешь в IDE просто добавь их в список файлов проекта и всё.
Starscream
 Аватар для Starscream
55 / 43 / 2
Регистрация: 04.11.2012
Сообщений: 106
15.12.2012, 20:48  [ТС]     Как связать несколько файлов одной программы #7
теперь выходят вот такие ошибки
Как связать несколько файлов одной программы
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
15.12.2012, 20:53     Как связать несколько файлов одной программы #8
дефайны никак не влияют на добавление файлов в программу. прежде чем компилятор начнет обрабатывать дефайн или любую другую писанину в файле, ему нужно "сказать", что этот файл нужно обрабатывать.
как сказать - зависит от компилятора и т.п. обычно с этим не заморачиваются, добавляя файлы в IDE и IDE уже сама говорит компилятору что нужно компилировать. в приатаченной картинке - ругается линкер. раз так, значит компилятор не компилировал спп файл, в котором эти функции определены. чтобы в этом убедится, можете в свой
BankAccounts.cpp добавить какой-нибудь бред заведомо некомпилируемый. И компилятор на этот бред ничего не скажет, потому что файл не компилировался.
Как добавлять файлы к проекту в Dev c++ - хз
Gus
 Аватар для Gus
24 / 35 / 2
Регистрация: 17.02.2009
Сообщений: 364
15.12.2012, 20:56     Как связать несколько файлов одной программы #9
если вы имете ввиду,использовать совместно несколько cpp файлов, для этого нужно создать хидеры (header) и создать в хидерах класс, с прототипами ф-ций, функции описать в соответствующих cpp файлах, и вызвать в главном cpp (main.cpp) учтите все файлы должны компилироваться вместе.
это можно сделать путем IDE а можно написать простой makefile
в линуксе это так...
C++
1
g++ main.cpp you.cpp my.cpp -0 myprog  -l youlib(if need)
запуск
C++
1
sh makefile , ./makefile (если установлено право на исполнение)
в makefile упоминать header файлы не нужны, т.к это сделает линковщик.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.12.2012, 21:07     Как связать несколько файлов одной программы
Еще ссылки по теме:

C++ Как объединить несколько больших файлов?
Несколько окон консоли для одной программы C++
Как создать несколько пронумерованных файлов C++

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

Или воспользуйтесь поиском по форуму:
defer
15.12.2012, 21:07     Как связать несколько файлов одной программы
  #10

Не по теме:


тему не читай, сразу отвечай

Yandex
Объявления
15.12.2012, 21:07     Как связать несколько файлов одной программы
Ответ Создать тему
Опции темы

Текущее время: 23:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru