Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

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

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

15.12.2012, 20:24. Просмотров 1791. Ответов 9
Метки нет (Все метки)

есть 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++ запускаться нехочет
помогите разобраться что нетак и как с этим бороться ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.12.2012, 20:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как связать несколько файлов одной программы (C++):

Несколько окон консоли для одной программы - C++
Добрый вечер, форум. Вот какой вопрос, есть ли кросс-платформенный способ для создания дополнительного окна консоли?

Разбиение программы на несколько файлов - C++
Ребят, помогите пожалуйста код разбить на несколько файлов. Чтобы в основном остался только main. Не соображаю как разделить ...

Разделение программы на несколько файлов - C++
Всем доброго времени суток! Возникла проблема - я написал небольшую програмку в main. #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt;...

Как связать несколько output потоков? - C++
Можно ли создать поток, который будет связан с несколькими потоками, что-бы при записи в него производиласт запись и во все связаные...

Как связать несколько классов через один общий класс? - C++
Здравствуйте. Есть несколько несвязанных классов, каждый из которых хранит указатель на один общий класс (посредник, устанавливается в...

Как связать 2 программы - C++
Как одной программе считывать значения из другой программы и выводить результат исходя из взятых значений?

9
Kuzia domovenok
1951 / 1804 / 140
Регистрация: 25.03.2012
Сообщений: 6,245
Записей в блоге: 1
15.12.2012, 20:26 #2
так что конкретно не работает? создай проект, прикрепи к нему файлы.
0
Starscream
55 / 43 / 2
Регистрация: 04.11.2012
Сообщений: 106
15.12.2012, 20:35  [ТС] #3
проблема как раз в прикреплении файлов
советуют использовать #define #endif но как с ними работать незнаю
0
Kuzia domovenok
1951 / 1804 / 140
Регистрация: 25.03.2012
Сообщений: 6,245
Записей в блоге: 1
15.12.2012, 20:37 #4
так ничего не надо переделывать просто добавь файлы в проект в списке, который обычно слева.
0
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 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
0
Kuzia domovenok
1951 / 1804 / 140
Регистрация: 25.03.2012
Сообщений: 6,245
Записей в блоге: 1
15.12.2012, 20:44 #6
Цитата Сообщение от Starscream Посмотреть сообщение
проблема как раз в прикреплении файлов
советуют использовать #define #endif но как с ними работать незнаю
да не нужно файлы как-то особенно "прикрепять". Если работаешь в IDE просто добавь их в список файлов проекта и всё.
0
Starscream
55 / 43 / 2
Регистрация: 04.11.2012
Сообщений: 106
15.12.2012, 20:48  [ТС] #7
теперь выходят вот такие ошибки
Как связать несколько файлов одной программы
0
DU
1484 / 1130 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
15.12.2012, 20:53 #8
дефайны никак не влияют на добавление файлов в программу. прежде чем компилятор начнет обрабатывать дефайн или любую другую писанину в файле, ему нужно "сказать", что этот файл нужно обрабатывать.
как сказать - зависит от компилятора и т.п. обычно с этим не заморачиваются, добавляя файлы в IDE и IDE уже сама говорит компилятору что нужно компилировать. в приатаченной картинке - ругается линкер. раз так, значит компилятор не компилировал спп файл, в котором эти функции определены. чтобы в этом убедится, можете в свой
BankAccounts.cpp добавить какой-нибудь бред заведомо некомпилируемый. И компилятор на этот бред ничего не скажет, потому что файл не компилировался.
Как добавлять файлы к проекту в Dev c++ - хз
0
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 файлы не нужны, т.к это сделает линковщик.
0
defer
15.12.2012, 21:07     Как связать несколько файлов одной программы
  #10

Не по теме:


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

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.12.2012, 21:07
Привет! Вот еще темы с ответами:

Сохранить в одной коллекции несколько объектов классов одной ветви иерархии - C++
Написала программу с иерархией. Для её демонстрации нужно написать 2 класса-коллекции. Но у меня не получается коллекционировать в одной...

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

Как создать несколько пронумерованных файлов - C++
Например я хочу создать 10 файлов с именами file0, file1 и так далее до 9 for(int i=0; i&lt;10; i++) { ofstream fout(); // В...

Как правильно использовать несколько файлов - C++
Доброе время суток, появилась необходимость разбить программу на несколько файлов в которых выполняются какие то действия. раньше...


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

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

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