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

Перегрузка операций ввода/вывода - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Матрицы http://www.cyberforum.ru/cpp-beginners/thread238104.html
Подскажите, плз, как на С++ задать перемножение матриц. Нужно перемножить 4 матрицы 4х4. Нужен код этого действия на С++
C++ "Научный" формат 1. Написать программу решения квадратного уравнения. Ввод и вывод – через потоки ввода-вывода. Вывод результата в "научном" формате. Установить ширину поля 12 символов, установить точность 4 цифры, заменить пробелы символом «~» с помощью функций и манипуляторов. Предусмотреть обработку ошибок. Что значит "научный" формат?? #include<iostream.h> #include<math.h> #include<conio.h> float... http://www.cyberforum.ru/cpp-beginners/thread238100.html
C++ функции
Описать функцию Power4(x, a, е(епсилен)) вещественного типа (параметры x, a, е — вещественные,|x| < 1; a, e > 0), находящую приближенное значение функции (1 + x)^a: (1 + x)^a = 1 + a•x + a•(a–1)•x2/(2!) + … + a•(a–1)•…•(a–n+1)•x^n/(n!) + … .В сумме учитывать все слагаемые, модуль которых больше e.С помощью Power4 найти приближенное значение (1 + x)^a для данных x и a при шести данных е. ...
C++ Трабл (_TCHAR* и char*)
Есть трабл.... var сmd: string; cmd := ParamStr(1); if (cmd = '-h') or (cmd = '-H') or (cmd = '/H') or (cmd = '/h') then begin Ussage; exit; end;
C++ В матрице вывести наибольшую диагональ http://www.cyberforum.ru/cpp-beginners/thread238066.html
В матрице Н на Н , заполненная от 0 до 9 вывести наибольшую диагональ, т.е. цифры которые получаются. рассматривать только диагонали
C++ Строки и символы, выделение памяти Здраствуйте уважаемые! Столкнулся с проблемой измерения длины заданой строки . Тоесть в чем задача: с клавиатуры вводится определенная строка символов, а также ширина страницы. Нужно отформотировать текст по ширине страницы. Сама задача уже готова, но не могу сделать так, чтобы длина строки измерялась прямо при вводе , не задавая длину в коде программы. Вот код : #include <cstdlib> #include... подробнее

Показать сообщение отдельно
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
04.02.2011, 15:48     Перегрузка операций ввода/вывода
У вас istream/ostream входят в пространство имён std, не забывайте.

Добавлено через 8 минут
Вот такой должен быть код (так, по крайней мере, компилируется):

Array.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
#ifndef Array_h
#define Array_h
#include <iostream>
 
using namespace std; // !!!добавил это!!!
 
class Array
{
        friend ostream& operator<< (ostream&,  const Array);
        friend istream& operator>> (istream&, Array&);
 
public:
        Array(int =10); //конструктор с умолчанием
        Array(const Array &); //конструктор копирования
        ~Array(void); //деструктор
 
        int getSize () const; //функция получения размера массива
        const Array &operator= (const Array &); //перегрузка операции = (возвращает ссылку на Array, чтобы можно было а=b=c)
 
        int operator == (const Array &) const; //перегрузка оператора == (сравнение на равенство)
        int operator!= (const Array &) const; //перегрузка оператора != (сравнение на неравенство)
 
        int &operator[] (int); //перегрузка операции [] (обязательно как функция-элемент) возвращает ссылку на индекс int, чтобы можно было g[5]=1000
        static int getArrayCount(); //статисеская функция - возвращает количество элементов типа Array
 
private:
        int *ptr; //указатель на начало массива
        int size; //размер массива
        static int ArrayCount; //статисеская переменная - количество элементов типа Array
};
#endif
Array.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
#include "Array.h"
#include <assert.h>
#include <iostream>
#include <stdlib.h>
 
using namespace std; // !!!добавил это!!!
 
int Array::ArrayCount=0;
 
Array::Array (int arraySize)
{
        ++ArrayCount;
        size=arraySize;
        ptr=new int [size];
        for (int i=0; i<size; i++)
                ptr[i]=0;
}
Array::Array(const Array &init)
{
        ++ArrayCount;
        size=init.size;
        ptr=new int [size];
        for (int i=0; i<size; i++)
                ptr[i]=init.ptr[i];
}
Array::~Array(void)
{
        --ArrayCount;
        delete [] ptr;
}
 
int Array::getSize () const {return size; }
 
const Array & Array::operator= (const Array &init)
{
        if (&init!=this) //не равен самому себе
        {
                delete [] ptr;
                size=init.size;
                ptr=new int [size];
                for (int i=0; i<size; i++)
                        ptr[i]=init.ptr[i];
        }
        return *this;
}
 
int Array::operator == (const Array &init) const
{
        if (size!=init.size)
                return 0;
        for (int i=0; i<size; i++)
                if (ptr[i]!=init.ptr[i])
                        return 0;
        return 1;
}
int Array::operator!= (const Array &init) const
{
        if (size!=init.size)
                return 1;
        for (int i=0; i<size; i++)
                if (ptr[i]!=init.ptr[i])
                        return 1;
        return 0;
}
int & Array::operator [] (int a)
{
        assert (0<=a && a<size);
        return ptr[a];
}
int Array::getArrayCount() { return ArrayCount; }
 
ostream & operator<< (ostream &output, const Array num)
{
    int i; // !!!добавил это!!!
 
        for (/* !!!убрал int!!! */i=0; i<num.size; i++)
        {
                output<<num.ptr[i]<<" ";
                if ((i+1)%10==0)
                        output<<endl;
        }
        if (i%10==0)
                output<<endl;
        return output;
}
istream & operator>>/* !!!здесь поменял << на >>!!! */(istream &input, Array &num) // !!!здесь убрал точку с запятой!!!
{
        for (int i=0; i<num.size; i++)
                input>>num.ptr[i]; // !!!здесь добавил [i]
        return input;
}
main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
#include<iostream>
#include "Array.h"
using namespace std;
 
int main()
{
        setlocale (LC_ALL, "Russian");
        Array a;
        cout<<"Количество созданных элементов: "<<a.getArrayCount()<<endl;
   return 0;
}
 
Текущее время: 08:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru