Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2011, 21:19   #1
sv777
Новичок
Джуниор
 
Регистрация: 31.05.2011
Сообщений: 2
По умолчанию Классы с++

Привет всем!Мне очень нужна ваща помощь в исправлении ошибок в классе
Вот сам класс
Код:
#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')&& (st[i]!='-')) {
                                             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;
                        int a,b,c,s;
                        c=atoi(str);
                        while (b>0)
                        {
                        a=c % 10;
                        b=c / 10;
                        c=b;
                        mas[l]=a;
                        l=l-1;
                        }
                        smart=0;
                        s=0;
                        for (i=l;i>0;i--)
                        {
                        s=mas[i]+1;
                        if (s=1) {mas[i]=1; smart=0;}
                        if (s=2) {mas[i]=0; smart=1;}
                        if (s=3) {mas[i]=1; smart=1;}
                        if (smart==0) break;
                        }
                       }
        while (l>i)
     {itoa( mas[i],str,10);
     return str;
     };
 
 bit_string operator == (bit_string *str1)
   {
    if (strcmp(str,str1->str))
      return false;
     };
 bit_string operator = (bit_string *str1)
 {
 };
 bit_string operator + (bit_string *str1)
 { int mas1,mas2,a1,a2,b1,b2,s,sn=0,l1,l2,i,j,l;
   int *m1,*m2,*m;
   m1=new int [10];
   m2=new int [10];
   m=new int [10];
   mas1=atoi (str1->str);
   mas2=atoi (str);
    l1=strlen(str1->str);
    l2=strlen(str);
   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;
   m1[l1]=a1;
   m2[l2]=a2;
   l1--;
   l2--;
   }
   for (i=l;i>0;i--)
   {
   s=m2[l2]+m1[l1]+sn;
   if (s==0) {m[i]=0; sn=0;}
   if (s==1) {m[i]=1; sn=0;}
   if (s==2) {m[i]=0; sn=1;}
   if (s==3) {m[i]=1; sn=1;}
   l1--;
   l2--;
   }                   i=0;
   while (l>i)
     {itoa( m[i],str,10);
                                   i++;}
     return str;
 }
 };
 
int main(int argc, char* argv[])
{
 bit_string s1;
 s1.show();
 bit_string s2("-0101");
 s2.negative_number();
 s2.show();
 bit_string s3(s2);
 s3.show();
 bit_string s4('k');
 s4.show();
 getch();
 
 return 0;
Собсно ошибка вроде в процедуре negative_cod(перевод в дополнительный код)
и в других местах кому несложно пожалуйста помогите исправить недачоты.
Буду очень признателен.я просто новичок в с++ если есть возможность то поясняйте что пишите.И еще если возникнут вопросы по коду то я поясню что и как я там делал
sv777 вне форума Ответить с цитированием
Старый 01.06.2011, 08:54   #2
sv777
Новичок
Джуниор
 
Регистрация: 31.05.2011
Сообщений: 2
По умолчанию

Ау хоть кто нибудь помогите.Если будут вопросы по коду пишите я отвечу что и как я там хотел сделать.
sv777 вне форума Ответить с цитированием
Старый 01.06.2011, 09:06   #3
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

А по-моему, так компилятор сам указывает где ошибки. Особенно C++ Builder.
_-Re@l-_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Классы на C AlexRedWolf Общие вопросы C/C++ 4 13.01.2011 23:11
Классы в C++ execut1oner Помощь студентам 5 19.12.2010 00:44
классы в Си++ kseshenka Помощь студентам 1 08.12.2010 19:07