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

Вывод максимального и минимального значений - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Удалить строки, сумма цифр которых является числом Фибоначчи http://www.cyberforum.ru/cpp-beginners/thread603437.html
Задан двумерный массив целых чисел.Удалить те строки, которые сумма цифр которых я числом Фибоначчи Добавлено через 6 минут плз,помогите=(
C++ Как правильно ограничить число знаков после запятой при выводе массива Доброго времени суток. Проблема в следующем - считается обратная матрица, при выводе необходимо ограничить число символов после запятой. Не могли бы вы помочь в этом деле. Сам код #include <iostream> void inversion(double **A, int N) { double temp; http://www.cyberforum.ru/cpp-beginners/thread603415.html
C++ Компиляция
Здравствуйте, программисты! Я немного запутался с тем, как проводится компиляция в C++. Я так понял, что вначале все обрабатывается препроцессором, который вставляет в файл вместо директив #include соответствующие файлы, потом код переводится в объектный, а после из него уже превращается в exe-файл. Машинный код в объектном содержит инструкции, которые может выполнять та или иная платформа. Но...
Ошибки я не пойму что от меня хотят C++
Есть 3 файла. main.cpp, array1.cpp и array1.h. Собственно такие ошибки \ivan\array1.h||In function 'std::ostream& operator<<(std::ostream&, Array&)':| \ivan\array1.h|27|error: 'int Array::size' is private| \ivan\array1.cpp|101|error: within this context| \ivan\array1.h|25|error: 'int* Array::ptr' is private| \ivan\array1.cpp|102|error: within this context| \ivan\array1.cpp|107|error: name...
C++ Нажатие клавиши в консоли http://www.cyberforum.ru/cpp-beginners/thread603392.html
Есть ли метод для нажатия клавиши (любой) в консоли? Т.е. нажал, к примеру, на клавишу Номе и в консоли вывело "Привет" и тп.
C++ Не работает обмен элементов с заданными номерами! Не работает обмен элементов с заданными номерами! #include "stdio.h" #include "conio.h" #include "windows.h" #include "locale.h" #include "stdlib.h" #include "string.h" #include "iostream.h" #define OUTPUT_FILE "./OUTPUT.TXT" подробнее

Показать сообщение отдельно
ZiP-777
0 / 0 / 0
Регистрация: 10.06.2011
Сообщений: 24
19.06.2012, 09:58  [ТС]     Вывод максимального и минимального значений
Цитата Сообщение от gray_fox Посмотреть сообщение
Как дерево то выглядит?
main.cpp в первом посте

tree.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
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
#ifndef tree_H
#define tree_H
 
#include "stdafx.h"
#include "tree_element.h"
 
template <class T> class tree
{
    tree_element<T> *tr;
 
public:
    tree();
    tree(T elem);
    tree(tree<T> &obj);
    ~tree();
 
    unsigned int get_n();                       //кол-во эл-тов в дереве
    void add_elem(T _elem);                     //добавление элемента с сохренением упорядоченности
    unsigned int delete_elem(unsigned int _n);  //удаление поддерева
    int get_elem(unsigned int _n, T &obj);      //получение эл-та по лог. номеру
    int get_max(T &obj);                        //получение максимального эл-та
    int get_min(T &obj);                        //получение мининималного эл-та
 
    template<class T> friend istream &operator>>(istream &s, tree<T>);
    template<class T> friend ostream &operator<<(ostream &s, tree<T>);
};
 
template <class T> tree<T>::tree(){
    tr=NULL;
}
 
template <class T> tree<T>::tree(T elem){
    tr=new tree_element<T>(elem);
}
 
template <class T> tree<T>::tree(tree<T> &obj){
    tr=new tree_element<T>(*obj.tr);
}
 
template <class T> tree<T>::~tree(){
    delete tr;
}
 
//кол-во вершин в дереве
template <class T> unsigned int tree<T>::get_n()
{
    if (tr!=NULL) return tr->n;
    else return 0;
}
 
template <class T> void tree<T>::add_elem(T _elem){
    if (tr==NULL) tr=new tree_element<T>(_elem); 
    else tr->add_elem(_elem);
}
 
template <class T> int tree<T>::get_elem(unsigned int _n, T &obj)
{
    if (tr==NULL||_n>=tr->n) return 0;
    obj=tr->get_elem(_n);
    return 1;
}
 
template <class T> int tree<T>::get_max(T &obj)
{
    if (tr==NULL) return 0;
    tree_element<T> *p;
    for (p=tr; p->r!=NULL; p=p->r);
    obj=p->elem;
    return 1;
}
 
//template <class T> int tree<T>::get_min(T &obj)
template <class T> int tree<T>::get_min(T &obj)
{
    if (tr==NULL) return 0;
    tree_element<T> *p;
    for (p=tr; p->l!=NULL; p=p->l);
    obj=p->elem;
    return 1;
}
 
//удаление поддерева по лог. нормеру, возвращает кол-во удаленных вершин
template <class T> unsigned int tree<T>::delete_elem(unsigned int _n)
{
    if (tr==NULL||_n>=tr->n) return 0;
    unsigned int res=tr->delete_elem(_n);
    if (res==0){
        res=tr->n;
        delete tr;
        tr=NULL;}
    return res;
}
 
template <class T> ostream &operator<<(ostream &s, tree<T> &obj)
{
    if (obj.tr!=NULL) 
    {
        s << obj.get_n();
        obj.tr->save_stream(s);
    }
    return s;
}
 
template <class T> istream &operator>>(istream &s, tree<T> &obj)
{
    unsigned int n;
    s >> n;
    T tmp;
    for (int i=0; i<n; i++)
    {
        s >> tmp;
        
    }
}
 
#endif
tree_element.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
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
//класс элемента дерева
//все рекурсивные ф-ии реализованы в этом классе.
#ifndef tree_element_H
#define tree_element_H
 
#include "stdafx.h"
#include "tree.h"
 
template <class T> class tree_element
{
    T elem;         //элемент
    tree_element<T> *l;
    tree_element<T> *r;
    unsigned int n; //кол-во эл-тов в дереве
 
public:
    tree_element();
    tree_element(T _elem);
    tree_element(tree_element &obj);
    ~tree_element();
 
    //возвращает кол-во эл-тов в левом и правом поддеревьях
    unsigned int get_nl();
    unsigned int get_nr();
 
    T  &get_elem(unsigned int _n);              //получение элемента по лог. номеру
    unsigned int delete_elem(unsigned int _n);  //удаление поддерева по лог. номеру
    void add_elem(T &_elem);                    //добавление с сохранением упорядоченности 
    void save_array(T *A);                      //сохранение дерева в массив
    void save_stream(ostream &s);               //сохранение в поток
 
    template<class T> friend class tree;
};
 
//спец. члены -----------------------------------------------------------------
template <class T> tree_element<T>::tree_element()
{
    l=NULL;
    r=NULL;
    n=1;
}
 
template <class T> tree_element<T>::tree_element(T _elem): elem(_elem)
{
    l=NULL;
    r=NULL;
    n=1;    
}
 
template <class T> tree_element<T>::tree_element(tree_element<T> &obj): elem(obj.elem)
{
    n=obj.n;
    l=(obj.l!=NULL)?new tree_element(*obj.l):NULL;
    r=(obj.r!=NULL)?new tree_element(*obj.l):NULL;
}
 
template <class T> tree_element<T>::~tree_element()
{
    if (l!=NULL) delete l;
    if (r!=NULL) delete r;
}
 
//служебные--------------------------------------------------------------------
//получение кол-во ветвей в левом и правом поддеревьях
template <class T> unsigned int tree_element<T>::get_nl()
{
    if (l!=NULL) return l->n;
    else return 0;
}
template <class T> unsigned int tree_element<T>::get_nr()
{
    if (r!=NULL) return r->n;
    else return 0;
}
 
//получение элемента по лог. номеру (_n<n)
template <class T> T& tree_element<T>::get_elem(unsigned int _n)
{
    unsigned int nl=get_nl();
    if (_n==nl) return elem;
    if (_n<nl) return l->get_elem(_n);
    else return r->get_elem(_n-nl-1);
}
 
//удаление поддерева с вершиной в _n-м эл-те (_n<n)
template <class T> unsigned int tree_element<T>::delete_elem(unsigned int _n)
{
    unsigned int nl=get_nl();
    if (_n==nl) return 0;
    unsigned int res;
    if (_n<nl){
        res=l->delete_elem(_n);
        if (res==0){
            res=nl;
            delete l;
            l=NULL;
        }
    }else{
        res=r->delete_elem(_n-nl-1);
        if (res==0){
            res=r->n;
            delete r;
            r=NULL;
        }
    }
    n-=res;
    return res;
}
 
//добавление с сохранением упорядоченности
template <class T> void tree_element<T>::add_elem(T &_elem)
{
    if (_elem<elem)
        if (l!=NULL) l->add_elem(_elem);
        else l=new tree_element(_elem);
    else
        if (r!=NULL) r->add_elem(_elem);
        else r=new tree_element(_elem);
    n++;
}
 
//сохранение дерева в упорядоченный массив
template <class T> void tree_element<T>::save_array(T *A)
{
    if (l!=NULL) l->save_array(A);
    nl=get_nl();
    A[nl]=elem;
    if (r!=NULL) r->save_array(A+nl+1);
}
 
template <class T> void tree_element<T>::save_stream(ostream &s)
{
    s << elem << endl;      
    l->save_stream(s);
    r->save_stream(s);
}
 
#endif
 
Текущее время: 11:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru