0 / 0 / 0
Регистрация: 11.03.2015
Сообщений: 30
1

Перегрузка операторов. Работа с файлами

13.05.2015, 22:15. Показов 386. Ответов 0
Метки нет (Все метки)

Мужики, выручайте, залип на всю ночь с отчетом в конце такая запара, задание было сделать перегрузку операторов , я сделал, в отчете нужно выполнить тестирование с помощью файлового потока, открыть 1 файл из него взять значения и отправить во второй файл, из второго файла взять значения и сложить с новыми значениями которые получаются при сложение..
Помогите пожалуйста, отчет не могу из-за этого дописать, всю ночь е**сь, на этом уже 3 часа сижу, ошибки одни, сдавать в 8 утра((
1 код тут как примерно должно это выглядеть с файлами.
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
#include <cmath>
#include <iostream>
#include <fstream>
using namespace std;
class Calc{ 
    float  arg,value;
    Calc* mas;
    int n;  
    double start,end, step;
public: 
    void setCalculate ();         
    bool proverkaCalculate();
    void printCalculate (ostream & ostream = cout);
    friend ostream& operator<<(ostream & ostream, Calc &t);
    friend istream& operator>>(istream & istream, Calc &t);
    friend Calc operator+ (Calc t, double a);
};
int main()
{
    Calc a;
    setlocale (LC_ALL, "russian");
    cout<<"Введите начало, конец и шаг диапазона"<<endl;
    ifstream fout;
    fout.open("cppstudio.txt");
    ofstream fout1;
    fout1.open("cppstudio2.txt", ios::app||ios::out);
    fout>>a;
    cout<<"Внимание! \nПри вводе некоректных значений диапазона, знак шага может быть изменен."<<endl;
    if (a.proverkaCalculate())
    {a.setCalculate();
    cout<<a;
    }
    Calc b;
    double x;
    cin>>x;
    b=a+x;
    ofstream fout2;
    fout2.open("cppstudio3.txt", ios::app||ios::out);
    fout2<<b;
    cout<<b;
    return 0;
}
 
void Calc::setCalculate()         
{   
    const double PI = 3.1415;
    n =  (end - start) / step;
    Calc* m=new Calc[n];
    for( int i = 0; i <=n; ++i )
    {
        m[i].arg = start + i*step;
        m[i].value=  sqrt(3.0/2.0) * sin(3.0 *(m[i].arg)+ PI);
    }
    mas=m;
 
}
bool Calc::proverkaCalculate()
{
    if (step==0)
    {
        cout<<"Ошибка. Шаг не может быть равен 0 "<<endl;
        return 0;
    }
    else 
        return 1;
}
void Calc::printCalculate (ostream &ostream)
{
    int i=0;
    while (i<=n)
    {
        ostream<<"Аргумент \t"<<mas[i].arg <<" \t Значение \t"<<mas[i].value<<endl;
        i++;
    }
    cout<<"Диапазон закончился "<<endl;
}
ostream& operator<<(ostream &ostream , Calc &t)
{
    t.printCalculate();
    return ostream;
}
istream& operator>>(istream & istream, Calc &t)
{
    istream>>t.start>>t.end>>t.step;
    return istream;
}
Calc operator+ (Calc t, double a)
{
    Calc temp;
    temp.start=t.start+a;
    temp.end=t.end+a;
    temp.step=t.step;
    temp.setCalculate();
    return temp;
}
А тут рабочая программа ,но без файлов , чтобы понять как она вообще работает...
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
#include <cmath>
#include <iostream>
#include <fstream>
using namespace std;
class Calc{ 
    float  arg,value;
    Calc* mas;
    int n;  
    double start,end, step;
public: 
    void setCalculate ();         
    bool proverkaCalculate();
    void printCalculate (ostream & ostream = cout);
    friend ostream& operator<<(ostream & ostream, Calc &t);
    friend istream& operator>>(istream & istream, Calc &t);
    friend Calc operator+ (Calc t, double a);
};
int main()
{
    Calc a;
    setlocale (LC_ALL, "russian");
    cout<<"Введите начало, конец и шаг диапазона"<<endl;
    cin>>a;
    cout<<"Внимание! \nПри вводе некоректных значений диапазона, знак шага может быть изменен."<<endl;
    if (a.proverkaCalculate())
    {a.setCalculate();
    cout<<a;
    }
    Calc b;
    double x;
    cin>>x;
    b=a+x;
    cout<<b;
}
 
void Calc::setCalculate()         
{   
    const double PI = 3.1415;
    n =  (end - start) / step;
    Calc* m=new Calc[n];
    for( int i = 0; i <=n; ++i )
    {
        m[i].arg = start + i*step;
        m[i].value=  sqrt(3.0/2.0) * sin(3.0 *(m[i].arg)+ PI);
    }
    mas=m;
 
}
bool Calc::proverkaCalculate()
{
    if (step==0)
    {
        cout<<"Ошибка. Шаг не может быть равен 0 "<<endl;
        return 0;
    }
    else 
        return 1;
}
void Calc::printCalculate (ostream &ostream)
{
    int i=0;
    while (i<=n)
    {
        ostream<<"Аргумент \t"<<mas[i].arg <<" \t Значение \t"<<mas[i].value<<endl;
        i++;
    }
    cout<<"Диапазон закончился "<<endl;
}
ostream& operator<<(ostream &ostream , Calc &t)
{
    t.printCalculate();
    return ostream;
}
istream& operator>>(istream & istream, Calc &t)
{
    istream>>t.start>>t.end>>t.step;
    return istream;
}
Calc operator+ (Calc t, double a)
{
    Calc temp;
    temp.start=t.start+a;
    temp.end=t.end+a;
    temp.step=t.step;
    temp.setCalculate();
    return temp;
}
Мужики спасайте пожалуйста

Добавлено через 16 часов 43 минуты
закрывайте , уже не надо
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.05.2015, 22:15
Ответы с готовыми решениями:

Что такое "перегрузка операторов"? Каковы принципы работы перегруженных операторов и назначение указателя this
Добрый день . Помогите понять принцип работы перегрузки операторов. объясните пожалуйста в...

Перегрузка операторов
Здравствуйте. Есть класс, переменной членом которого является массив. Необходимо, перегрузить...

Перегрузка операторов
вот есть такое задание Для заданного по варианту класса выполнить следующие действия: 1) описать...

Перегрузка операторов
ifstream ifile(&quot;open.txt&quot;); if(! ifile) { } Как реализовать класс, что бы можно было...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.05.2015, 22:15
Помогаю со студенческими работами здесь

Перегрузка операторов
Привет всем.Вот и начался новый учебный год,и значит началось програмирование, и значит начались...

Перегрузка операторов
Столкнулся с проблемой при написании лабораторной по перегрузке операторов. Задание таково:...

Перегрузка операторов
Задание такое-Составить описание класса для представления комплексных чисел. Обеспечить выполнение...

Перегрузка операторов +=, -=, *=
Доброе время суток! Начал писать одно лабораторную роботу,с начала показалось что она крайне...

Перегрузка операторов
Доброй ночи! Изучаю перегрузку операторов. Создал класс Дробь, где в качестве данных выступают...

Перегрузка операторов
Доброго времени суток. на завтра надо сделать работу, а я не могу понять как использовать...


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

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

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