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

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

Войти
Регистрация
Восстановить пароль
 
asdasdasdasdgg
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 10
#1

Перегрузите операторы ввода и вывода - C++

03.03.2013, 19:30. Просмотров 282. Ответов 1
Метки нет (Все метки)

Описание класса-шаблона должно включать операторы <<, >>, конструктор копирования, а также другие операторы и функции, необходимые для решения задачи.
Распределение памяти для хранения массивов должно осуществляться динамически (в конструкторе), а освобождение - в деструкторе.


>>>main.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
#include <iostream.h>
#include <stdlib.h>
#include <math.h>
#include <windows.h>
#include "func.h"
 
int main()
{
    SetConsoleOutputCP(1251);
        int a,choose;
    cout << "Размер массива: ";
    cin >> a;
        label:
        if (a>0) {
    isgood();
    int * arr_a = new int[a];
    double * arr_b = new double[a];
    cout << "Номер:\t\tМассив A:\tМассив B:" << endl;
    for (int i = 0; i < a; i++)
    {
        arr_a[i] = IntRand(100,0);
        arr_b[i] = DoubleRand(100,0);
        cout <<"№"<< i << "\t\t" << arr_a[i] << "\t\t" << arr_b[i] << endl;
    }
 
 
 
    cout << "----------------------Массив ГЂ---------------------" << endl;
    max_min_loc(arr_a, a);
    max_min_abs(arr_a, a);
    cout << "----------------------Массив B--------------------- " << endl;
    max_min_loc(arr_b, a);
    max_min_abs(arr_b, a);
            delete []arr_a;
    delete []arr_b;  }
    system("pause");
    return 0;
}
 
>>>func.h<<<
 
double DoubleRand(int max, int min) 
{ 
    return min + (double(rand())/RAND_MAX)*(max - min + 1); 
}
 
 
int IntRand(int max, int min) 
{ 
    return min + (int)floor((double(rand())/RAND_MAX)*(max - min + 1)); 
}
 
void isgood()
{
  if (cin.good() == 0)
     {
        cout <<"\n--------------ВНИМАНИЕ--------------" ;
        cout << "\n>>>>>>>>>>>>>Ошибка ввода<<<<<<<<<<<<<" << endl;
        cout <<"--------------!ВНИМАНИЕ!--------------\n\n" ;
        system ("pause");
        exit(1);
     }
}
template <class Type>
void search(Type * arr, int first, int last)
{
    int i = first, j = last;
    Type x = arr[(first+last)/2];
    do
    {
        while (arr[i] < x) i++;
        while (arr[j] > x) j--;
        if (i <= j)
        {
            if (i < j)
            {
                Type temp;
                temp = arr[j];
                arr[j] = arr[i];
                arr[i] = temp;
            }
            i++;j--;
        }
    } while (i <= j);
    if (i < last) search(arr, i, last);
    if (j > first) search(arr, first,j);
}
 
 
template <class Type>
void max_min_loc(Type arr[], int m)
{
    int first,last;
    cout <<"Введите индекс первого элемента промежутка: ";
    cin >> first ;
        cout <<"Введите индекс последнего элемента промежутка :" ;
        cin >> last;
    isgood();
        if (first <= last) {
    if (first < 0 || last < 0)
    {
        cout <<"\n!!!!!!!!!!!!!!!!!!!!!!!!!!ВНИМАНИЕ!!!!!!!!!!!!!!!!!!!!!!!!!!\n"<< "------------------выход за пределы------------------" <<"\n!!!!!!!!!!!!!!!!!!!!!!!!!ВНИМАНИЕ!!!!!!!!!!!!!!!!!!!!!!!!!!\n"<< endl;
        return;
    }
    else if (first > m-1 || last > m-1)
    {
        cout <<"\n!!!!!!!!!!!!!!!!!!!!!!!!!!ВНИМАНИЕ!!!!!!!!!!!!!!!!!!!!!!!!!!\n"<< "------------------выход за пределы------------------" <<"\n!!!!!!!!!!!!!!!!!!!!!!!!!!ВНИМАНИЕ!!!!!!!!!!!!!!!!!!!!!!!!!!\n"<< endl;
        return;
    }
    int n = last-first+1;
    Type * temp_array = new Type[n];
    for (int i = 0, j = first; i < n; i++, j++)
    {
        temp_array[i] = arr[j];
    }
    search(temp_array,0,n-1);
    cout <<"---------------------------------------------------\n"<< "Локальный минимум = " << temp_array[0] << endl << "Локальный максимум = " << temp_array[n-1] << endl<<endl;
    delete []temp_array;    }
        else cout <<"\n\n!!!!!!!!!!!!!!!!!!!!!!!!!!ВНИМАНИЕ!!!!!!!!!!!!!!!!!!!!!!!!!!\n" <<"-----------ГЊминимум не может быть больше максимума-----------\n"<<"!!!!!!!!!!!!!!!!!!!!!!!!!!ВНИМАНИЕ!!!!!!!!!!!!!!!!!!!!!!!!!!"<<endl;
}
 
template <class Type>
void max_min_abs(Type arr[], int m)
{
    Type * temp_array = new Type[m];
    for (int i = 0; i < m; i++)
    {
        temp_array[i] = arr[i];
    }
    search(temp_array,0,m-1);
    cout << "Абсолютный минимум = " << temp_array[0] << endl << "Абсолютный максимумГ¬ = " << temp_array[m-1] << endl<<endl<<"---------------------------------------------------\n";
    delete []temp_array;
}
Добавлено через 26 минут
Помогите плз!

Добавлено через 3 часа 54 минуты
Знает кто?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.03.2013, 19:30     Перегрузите операторы ввода и вывода
Посмотрите здесь:

операторы ввода и вывода, форматы используемые в этих операторах {c++} C++
Операторы ввода/вывода для чайников C++
Операторы ввода вывода в С++ C++
C++ операторы ввода вывода << >>, последний не работает после определенного момента
Операторы ввода-вывода(Что не так?) C++
C++ Операторы ввода и вывода
Операторы ввода вывода C++
Не читаются операторы ввода вывода C++
C++ Операторы ввода/вывода
C++ Классы. Перегруженные операторы ввода-вывода
Наследование, перегруженные операторы ввода-вывода, динамический массив C++
Как изменить операторы ввода-вывода для старого компилятора C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
2915 / 1344 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
03.03.2013, 20:04     Перегрузите операторы ввода и вывода #2
Цитата Сообщение от asdasdasdasdgg Посмотреть сообщение
Знает кто?
У вас в коде отсутствует класс-шаблон, и, поверьте, никто не знает, где он.
Поэтому перегрузить операторы для класса невозможно -- класса-то нет.
Yandex
Объявления
03.03.2013, 20:04     Перегрузите операторы ввода и вывода
Ответ Создать тему
Опции темы

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