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

оператор присваивания - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Сортировка одномерного массива длиной N http://www.cyberforum.ru/cpp-beginners/thread171004.html
Сортировка одномерного массива длиной N! Как делать?
C++ Как сделать проверку на ввод? С++ y=2*(tgx+sinx/2); tgx стремится к бесконечности когда cos(x) стремится к нулю надо сделать проверку на это, и вывести сообщения об ошибке, помогите пожалуйста вот код: #include <iostream> #include <cmath> using namespace std; int main() { http://www.cyberforum.ru/cpp-beginners/thread171003.html
Дан файл, содержащий текст. Сколько слов в тексте? Сколько цифр в тексте? C++
Здравствуйте, мне вот задание дали. Подскажите алгоритм решения, а то я не очень с этим разбираюсь. Задача: Дан файл, содержащий текст. Сколько слов в тексте? Сколько цифр в тексте? Кто, что подскажет, буду благодарен:)
C++ Правильность и рациональность кода
Всем привет! Вот уже прошло 24 часа с момента начала моего обучения С++ :). До этого имел дело с такими языками, как Pascal и PHP. Ко вторнику нужно решить 30 задач. Пока решил 2 и хотелось бы узнать, насколько правильно и оптимально я это сделал, чтобы далее двигаться более рациональным путем. Может быть пропущены какие-то важные моменты? Кусок кода можно переписать гораздо легче? Или я вообще...
C++ Удалить из массива все элементы, совпадающие с минимальным http://www.cyberforum.ru/cpp-beginners/thread170981.html
здравствуйте) у меня такой вопрос. я сформировала массив. мне нужно в нём все элементы, совпадающие с миним. значением удалить.. и вывести полученный массив #include <iostream.h> void main() {
C++ Определить равна ли сумма первых двух цифр числа третьей его цифре bool ifaplusbC(int x) { int a,b,c; a=x/100; b=x%100; b=x/10; c=x%10; if(c==a+b) return true; else подробнее

Показать сообщение отдельно
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
30.09.2010, 21:12     оператор присваивания
Не особо красиво конечно. Но вроде как работает.
Может собсна на код не смотреть если хотите сами=)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class GrafMatr
{
         private:
           bool **m;
           int n;
         public:
           GrafMatr(int bn);
           ~GrafMatr();
           GrafMatr(const GrafMatr& nmatr);
           void Resize(int m);
       friend std::istream & operator>>(std::istream &is, GrafMatr &gmatr);
           friend std::ostream & operator<<(std::ostream &os, GrafMatr &gmatr);
           GrafMatr& operator|=(GrafMatr &nmatr);
           GrafMatr operator|(GrafMatr& nmatr) const;
           GrafMatr& operator=(GrafMatr &nmatr); 
};
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
#include <iostream>
 
#include "GrafMatr.h"
 
GrafMatr::GrafMatr(const GrafMatr& nmatr)
{
    if(n<0)
        n=0;
    Resize(nmatr.n);
    for(int i=0; i<n; ++i)
    {
        for(int j=0; j<n; ++j)
        {
            m[i][j]=nmatr.m[i][j];
        }
    }
}
 
void GrafMatr::Resize(int z)
{
    if(n!=0)
    {
        for(int i=0; i<n; ++i)
        {
            delete[] m[i];
        }
        delete[] m;
    }
    n=z;
    m=new bool*[z];
    for(int i=0; i<z; ++i)
        m[i]=new bool[z];
}
 
GrafMatr::GrafMatr(int bn)
   {
          this->n=bn;
          this->m=new bool*[bn];
          for(int i=0;i<n;i++) this->m[i]=new bool[n];
   }
 
GrafMatr::~GrafMatr()
   {
          for(int i=1;i<this->n;i++)delete[]this->m[i];
          delete[]this->m;
   }
////////////////////////////////////////////////////////////////////////////////////////////////////////////
// вот не работающие операторы
GrafMatr& GrafMatr::operator|=(GrafMatr &nmatr)
{
      GrafMatr RetMatr(this->n);
      for(int j=0;j<this->n;j++)
         for(int i=0;i<this->n;i++)
            RetMatr.m[j][i]=this->m[j][i]|nmatr.m[j][i];
 
      *this=RetMatr;
      return *this;
}
 
 
GrafMatr GrafMatr::operator |(GrafMatr& nmatr) const
{
    GrafMatr Temp(*this);
    Temp|=nmatr;
    return Temp;
}
GrafMatr& GrafMatr::operator=(GrafMatr &nmatr)
{
          for(int j=0;j<nmatr.n;j++)
                for(int i=0;i<nmatr.n;i++)
                           this->m[j][i]=nmatr.m[j][i];
          return *this;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////
std::istream & operator>>(std::istream &is, GrafMatr &gmatr)
   {
         int buf;
         for(int j=0;j<gmatr.n;j++)
                for(int i=0;i<gmatr.n;i++)
                 {
                  is>>buf;
                  if(buf>=1)gmatr.m[j][i]=1; else gmatr.m[j][i]=0;
                 }
                return is;
   }
 
std::ostream & operator<<(std::ostream &os, GrafMatr &gmatr)
   {
         for(int j=0;j<gmatr.n;j++)
                {
                  for(int i=0;i<gmatr.n;i++) os<<gmatr.m[j][i]<<" ";;
                  os<<"\n";
                }
         return os;
   }
 
 
int main()
{
    GrafMatr matr1(2),matr2(2),matr3(2);
    std::cin>>matr1;
    std::cin>>matr2;
    matr3=matr1|matr2;
    std::cout<<matr3;
    return 0;
}
 
Текущее время: 16:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru