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

Создать класс строка и производный класс битовая строка, не работает переопределение операций - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Заполнить массив случайными числами и добавить элемент в начало http://www.cyberforum.ru/cpp-beginners/thread303975.html
Помогите с двумя программками. 1. Сформировать динамический одномерный массив, заполнить его случайными числами и добавить элемент в начало массива 2 Сформировать динамический Двумерный массив массив, заполнить его случайными числами и Удалить строку с номером К
C++ Массив как сделать эту задачу?? Найти сумму элементов линейного массива? http://www.cyberforum.ru/cpp-beginners/thread303972.html
Уплотнить заданную матрицу, удаляя из нее строки и столбцы, заполненные нулями C++
Уплотнить заданную матрицу, удаляя из нее строки и столбцы, заполненные нулями.
Написать программу, выполняющую следующие действия. C++
Написать программу, выполняющую следующие действия: - ввод данных с клавиатуры в массив, состоящий из восьми элементов импа Bill, с упорядочением записей в алфавитном порядке по расчетным счетам плательщиков; - вывод на экран информации о сумме, снятой с расчетного счета плательщика, введенного с клавиатуры, а если такого расчетного счета нет - вывод на экран соответствующего сообщения. ...
C++ Реализация цикличных алгоритмов http://www.cyberforum.ru/cpp-beginners/thread303949.html
Нужно написать программу на Borland C++ 5.02 вот задание: Дано натуральное число "n",и действительное число "x".Вычислить:\sum_{i=1}^{n}(1/i!+\sqrt{|x|}).Заранее спасибо!!!!
C++ Читение и позиционирование Ребят,помогите с функциями читения с файла и позиционирования. Есть символьный массив char a; Есть файл name.txt состояший из нескольких строчек; нужно первую строчку записать в a а вторую в а Добавлено через 22 минуты хм ну или хотябы так ... записать все содержимое файла в двумерный массив... Добавлено через 46 минут ап теме подробнее

Показать сообщение отдельно
gorgutz1234
3 / 3 / 1
Регистрация: 02.03.2010
Сообщений: 75
25.05.2011, 07:06     Создать класс строка и производный класс битовая строка, не работает переопределение операций
Здравствуйте уважаемые форумчане.Мне очень нужна помощь в разработке класса.Сам класс вроде работает но вот 1 задание к нему неработает очень нужна помощь.Вот задание
Создать класс строка и производный класс битовая строка
Переопределить следующие операции (длина строки результата должна быть равна длине большей из строк в случае необходимости более короткая битовая строка сдвигается влево знаковым разрядом)

присваивание (=)
сложение (арифметическая сумма строк)
(==) проверка на равенство

встроенные функции такие как (strcpy,strcmp) неиспользовать
Вот код класса:
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
#pragma argsused
#include <iostream.h>
#include <conio.h>
#include <string.h>
class _string
  { protected:
  char *str;
  int len;
  public:
  _string()
  {
   str=new char;    //constructor without parametrs
   str[0]='\0';
   len=0;
  }
 
  _string(char *st)
  {int i=0;
   while (st[i]!='\0')   //constructor with C string
   i++;
   len=i;
   str=new char[i];
   strcpy(str,st);
   }
 
  _string(char st)         //construcnor for symbol
  {   str=new char;
      str[0]=st;
      str[1]='\0';
      len=1;
   }
 
  _string(_string &str1)  //copy constructor
 {   str=new char;
     len=str1.len;
     strcpy(str,str1.str);
 }
 void show ()
 {
  cout<<str<<"   "<<len<<endl;
 }
 int dlina(char *st)
 {
 int i;
 while (st[i]!='\0')
 i++;
 len=i;
 return len;
  }
 char *clear(char *st)   //function clear
    {
    st[0]='\0';
     strcpy(str,st);
     return str;
     }
 };
 //~_string() { delete str; len=0;}  //destructor
 
 
 
  class bit_string: public _string    //child
  {
  public:
  bit_string()
  {                //constructor  without parametrs
  _string();
  }
 
  bit_string(char *st):_string(st)
  {
 
     int i=0;
     while (str[i]!='\0')
        {if ((str[i]!='0') && (st[i]!='1')) {
                                             str[0]='\0';
                                             len=0;
                                             break;
                                            }
                                            i++;
         }
   }
 
   bit_string(char st):_string(st)         //construcnor for symbol
   {
   //_string(st)
   if  ((str[0]!='0') && (str[0]!='1')) {str[0]='\0';
                                len=0; }
   }
   bit_string(bit_string &str1):_string(str1)  //copy constructor
 {   str=new char;
     len=str1.len;
     strcpy(str,str1.str);
 }
  
  // ~string() { delete str; }; 
 
    char *negative_number ()
     { int *mas;
        mas=new int [10];                              //convert to negative number
        int i,l,dl,smart;
      if (str[0]=='-') {i=1;
                      while (str[i]!='\0') {
                                         if (str[i]=='0') str[i]='1';
                                         if (str[i]=='1') str[i]='0';
                                         i++;
                                         l+=i;
                                         }
                        i=0;
                        l++;
                        while (str[l]!='\0') {
                                              if (str[l]='1') {str[l+1]=0; smart=1;}
 
                       }
     return str;
     };
 
 bit_string operator == (bit_string *str1,*str2;)
     {int l1,l2,i
      if (l1==l2) {while l1>0 {if (str1[i]!=str2[i]) return false; i++;}
      else return false;
     }
     };
 bit_string operator + (bit_string *str1,*str2;  )
 { int mas1,mas2,a1,a2,b1,b2,s,sn=0,l1,l2,i,j;
   int *mas;
   mas=new int [10];
   mas1=int atoi (str.str1);
   mas2=int atoi (str.str2);
   int l1=strlen(str.str1);
   int l2=strlen(str.str2);
   l=l1+l2;
   sn=0;
   for (i=l;l-1<i;i++)
   {
   a1=mas1 % 10;       // mod
   a2=mas2 % 10;
   b1=mas1 / 10;       // div
   b2=mas2 / 10;
   mas1=b1;
   mas2=b2
   s=a1+a2+sn;
   if s=0 {mas[i]=0 sn=0}
   if s=1 {mas[i]=1 sn=0}
   if s=2 {mas[i]=0 sn=1}
   if s=3 {mas[i]=1 sn=1}
   }
   while (l>i) {char *itoa(int *mas[i],char *str[i],int 10);
                                   i++;}
   return str;
 };
 } 
int main(int argc, char* argv[])
{
 bit_string s1;
 s1.show();
 bit_string s2("-0101");
 s2.show();
 bit_string s3(s2);
 s3.show();
 bit_string s4('k');
 s4.show();
 getch();
 
        return 0;
}
Добавлено через 10 часов 57 минут
ау ребят вы где ??
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 17:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru