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

Перегрузить операции - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Задание на С++ http://www.cyberforum.ru/cpp-beginners/thread263036.html
Добрый день. Помогите пожалуйста с решением задания для курсовой на Borland c++. Суть такова. Есть текстовый файл такими полями: Фамилия, год установки телефона, номер телефона, адреса. Задание написать программу на с++ чтоб: За фамилией что вводится, выводился номер телефона, За номером что вводится, выводилась фамилия и адрес. Вычислить количество установленных телефонов с XXXX года,...
C++ Пусть дано 100 целых чисел... . 1) Пусть . Среди найти ближайшее к какому-либо целого. 2) Пусть дано 100 целых чисел. Напечатайте сначала все отрицательные из них, а потом все остальные. C++ http://www.cyberforum.ru/cpp-beginners/thread263034.html
C++ тестирующая программа на с
помогите,пожалуйста,очень срочно! нужно на С сложить и отладить программу тестирования знаний студентов с алгебры! заранее спасибо!
вычисление погрешности - циклы. C++
Задание во вложении. мой код приложен. не правильно работает ряд, точнее его накопление, на сколько я понимаю - поправте что ни так.. #include <cstdlib> #include <iostream> #include <cmath> #include <clocale> using namespace std; int main(int argc, char *argv) {
C++ Вывод массива без использования цикла на C(pure)) http://www.cyberforum.ru/cpp-beginners/thread263020.html
Какие есть мысли и/или готовые решения по сабжу ?
C++ Доработайте пожайлуста!!! int zad(float a, float b, float c, float Xn, float Xk, float dx) { scanf ("%f %f %f %f %f %f",&a,&b,&c,&Xn,&Xk,&dx); for( ;Xp<=Xk;Xp+=dx) if (c<0 && b!=0) rez=a-Xn/(10-b); else if (Xn>0 && b==0) rez=(Xp-a)/(Xp-c); else подробнее

Показать сообщение отдельно
M@ker
-73 / 19 / 1
Регистрация: 17.12.2010
Сообщений: 355
24.03.2011, 00:47     Перегрузить операции
Здравствуйте! Есть уже готовая программа , но в ней нужно перегрузить операции
+ добавление элемента;
- удаление элемента;
[ ] индексирование;
= копирование;
= = отношение равенства;
> отношение порядка;

Пожалуйста, кто может - напишите. Очень нужно !
Вот сам код:
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
#include <iostream>
#include <string>
 
 
 
 
//Дополнительное имя типа для string.
typedef std::string value_type;
 
//Класс
class Stack
{
public: //всеобщий доступ к интерфейсу
    
    Stack() // Конструктор
        :head(0), m_size(0) //обнуляем головной узел и размер
    {
    }
    
    ~Stack() //Деструктор
    {
        clear();
    }
    
    void push(const std::string&);  
    
    void pop(); //удаление верхнего узла
    
    const value_type& top() const; //возвращаем элемент в верхушке стека
    
    size_t size() const {return m_size;} //возвращаем размер
    
    bool empty() const {return m_size == 0;} //проверяем пустой ли список
    
    void clear();
    
    friend std::ostream& operator <<(std::ostream&, const Stack&); //перегружаем вывод
    
    friend std::istream& operator >>(std::istream&, Stack&); //перегружаем ввод 
    
    void search(const value_type& value); 
 
private: //ограниченный доступ к реализации
    
    //структура узел стека
    struct Node
    {
        //Конструктор, инициализирует элемент узла переданным
        //в конструкторе параметром. Обнуляет указатель на след. узел.
        Node(const value_type& str_="")
            :str(str_), next(0)
        {
        }
        //Указатель на след. узел.
        Node* next;
        //Строка.
        value_type str;
    };
    //Голова списка (верх).
    Node* head;
    //Размер.
    size_t m_size;
};
 
void Stack::push(const value_type& s)
{
    // Создаем новый узел с строкой s
    Node* tmp=new Node(s);
    
    if(!empty())
    
        tmp->next=head; //инициализируем следующий узел за tmp верхом
    else
    
        tmp->next=0; // присваиваем  tmp = 0
    
    head=tmp; 
        
    ++m_size;
}
void Stack::pop()
{
    //Проверка на пустоту списка.
    //Если список пустой - удалять нельзя - тогда.
    if(empty())
    {
        //Если программа идет в режиме Debug - кидается ошибка, что стек пуст.
#ifdef _DEBUG
 
        std::_DEBUG_ERROR("Stack is empty");
 
 
#endif
    }
    
    Node* delNode=head; //заводим нову переменную типа Node
    
    head=head->next;//инициализируем верх следующим узлом после 
    
    delete delNode;
    
    --m_size;
}
const value_type& Stack::top() const 
{
    
        if(empty())
    {
#ifdef _DEBUG
        std::_DEBUG_ERROR("Stack is empty");
 
#endif
    }
    //Возвращаем строку, которая в головном узле.
    return head->str;
}
 
void Stack::clear()
{
    
    while(!empty())
    
        pop();
}
 
std::ostream& operator <<(std::ostream& os, const Stack& one)
{
    //Пробегая по всему стеку - выводим строки в нем.
    for(Stack::Node* tmp=one.head; tmp; tmp=tmp->next)
        os<<tmp->str<<'\n';
    os<<'\n';
    //Возвращаем поток.
    return os;
}
 
std::istream& operator >>(std::istream& is, Stack& one)
{
    value_type value;
    std::cout<<"Enter strings (EOF for end of input)\n";
    //До тех пор пока не будет послан сигнал EOF (CTRL+Z в Windows)
    //вводим строки
    while(std::getline(is, value))
        //Помещаем их в стек.
        one.push(value);
    //Возвращаем поток.
    return is;
}
 
void Stack::search(const value_type& value)
{
    //Пробегая по всему стеку сравниваем 
    //строку в текущем узле с поданной как параметр строкой
    //если равны - значит строка найдена.
    for(Stack::Node* tmp=head; tmp; tmp=tmp->next)
        if(tmp->str == value)
        {
            std::cout<<"String "<< value <<" is finded\n";
            return;
        }
    std::cout<<"String "<< value <<" is not finded\n";
}
//содержимое main тестирует всю программу, используя все функции из нее.
int main()
{
    Stack one;
    std::cin>>one;
    std::cout<<one;
    std::cout<<"Top of the stack: "<< one.top() <<'\n';
    std::cout<<"Top of the stack after pop: ";
    one.pop();
    std::cout<<one.top()<<'\n';
    std::string for_search;
    std::cout<<"Enter string for search\n";
    std::cin.clear();
    std::getline(std::cin, for_search);
    one.search(for_search);
    std::cout<<"Clear testing\n";
    one.clear();
    std::cout<<one;
    system("pause");
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 10:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru