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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.12.2015, 04:04   #1
KaMaKaDzA
Пользователь
 
Регистрация: 17.07.2013
Сообщений: 20
По умолчанию Классы C++

Суть проблемы:есть дочерний класс "телефонная книга" и родительский класс "телефонный номер". В классе "телефонная книга" к заданной фамилии привязывается телефонный номер при помощи родительского класса. Но задача требует, чтоб у 1 пользователя могло быть до 3х номеров. Подскажите как это сделать, пожалуйста.
Код:
class NomerTel  
{private:
  char kod[4];
  char nomer[8];
  char type[7];
 public:
  NomerTel()   
   {strcpy(kod, "");
    strcpy(nomer, "");
    strcpy(type, "");
   }
 
//-------------------------------
  NomerTel(char *nom)
   {int i;
    strcpy(kod, "");
    strcpy(nomer, "");
    strcpy(type, ""); 
    if ((strlen(nom)>13)||(strlen(nom)<13))
    {cout<<"Nepravulnuy nomer.";
    return;          
    }
    for (i=0; i<3; i++)
     kod[i]= nom[i];
    kod[3]='\0';
    if(strcmp(kod,"000")==0)
     strcpy(type, "mobile");
    if(strcmp(kod,"038")==0)
     strcpy(type, "interc");
    if((strcmp(kod,"000")!=0)&&(strcmp(kod,"038")!=0))
    strcpy(type, "intern");
    for (i=3; i<6; i++)
     kod[i-3]= nom[i];
    kod[6]='\0';
    for (i=6; i< 13; i++)
     nomer[i-6]= nom[i];
 
 
 
    }
//-------------------------------
   NomerTel(const NomerTel &obj) 
        {for(int i=0; i<4; i++)
        kod[i]=obj.kod[i];
         for(int i=0; i<8; i++)
         nomer[i]=obj.nomer[i];
         for(int i=0; i<6; i++)
         type[i]=obj.type[i];
        }
//-------------------------------
    void Print(void)
    {
         printf("(%s) %c%c-%c%c-%c%c%c\n", kod, nomer[0], nomer[1], nomer[2], nomer[3], nomer[4], nomer[5], nomer[6]);
    }
//-------------------------------
    void Operator(string cod)
        {if(strcmp(type,"mobile")==0)
         {if((cod=="050")||(cod=="099")||(cod=="095")||(cod=="066")||(cod=="089"))
          cout<<"Operator MTC"<<endl;
          else
          if((cod=="096")||(cod=="097")||(cod=="098")||(cod=="067")||(cod=="068")||(cod=="089"))
          cout<<"Operator Kyivstar";
          else
          if((cod=="063")||(cod=="073")||(cod=="093"))
          cout<<"Operator life:)";
          else
          cout<<"Operator nevidomuy.";}
          else
          cout<<"Ne mobilnuy nomer.";
        }
//-------------------------------
    string RetKod(void)
        {return kod;}
//-------------------------------
    string RetNumber(void)
        {return nomer;}
//-------------------------------
    void Change(void)
        {char help[13];
         cout<<"Vvedit novuy nomer: ";
         cin>>help;
         int i;
         strcpy(kod, "");
         strcpy(nomer, "");
         strcpy(type, "");
         if ((strlen(help)>13)||(strlen(help)<13))
         {cout<<"Nepravulnuy nomer.";
         return;
         }
         for (i=0; i<3; i++)
         kod[i]= help[i];
         kod[3]='\0';
         if(strcmp(kod,"000")==0)
         strcpy(type, "mobile");
         if(strcmp(kod,"038")==0)
         strcpy(type, "interc");
         if((strcmp(kod,"000")!=0)&&(strcmp(kod,"038")!=0))
         strcpy(type, "intern");
         for (i=3; i<6; i++)
         kod[i-3]= help[i];
         kod[6]='\0';
         for (i=6; i< 13; i++)
         nomer[i-6]= help[i];
        }
};
 
class TelKniga: public NomerTel
{private:
  char fam[40];
 public:
 TelKniga(char* f, char* nom) : NomerTel(nom)
  {
   strcpy(fam, f);
  }
 
 TelKniga()
 {strcpy(fam, "");
 }
 
 void PrintData(void)
    {
        printf("%s ", fam);
        Print();
    }
 
};

void main()
{
 system("pause>>void");
}
KaMaKaDzA вне форума Ответить с цитированием
Старый 06.12.2015, 07:08   #2
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

Встречный вопрос.
Телефонная книга состоит из телефонных номеров или телефонный номер состоит из телефонных книг?
Я не совсем понимаю зачем вы наследуете телефонную книгу от номера телефона...
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!

Последний раз редактировалось Bugrimov; 06.12.2015 в 17:45.
Bugrimov вне форума Ответить с цитированием
Старый 06.12.2015, 13:11   #3
KaMaKaDzA
Пользователь
 
Регистрация: 17.07.2013
Сообщений: 20
По умолчанию

в условии сказано "создайте производный класс "телефонная книга" в котором привяжите номер телефона с фамилией абонента. У одного абонента может быть до 3-х номеров."
KaMaKaDzA вне форума Ответить с цитированием
Старый 06.12.2015, 13:28   #4
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

Подумайте логически... Как телефонная книга может быть наследником телефона?
К примеру.... Телефонная книга может быть наследником - КНИГИ.... Потому как тоже является книгой.
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 06.12.2015, 14:23   #5
KaMaKaDzA
Пользователь
 
Регистрация: 17.07.2013
Сообщений: 20
По умолчанию

не я задание придумывал)
Для соотношения 1 пользователь - 1 номер, всё работает. но вот как сделать 3 номера 1 пользователю - хз.

Последний раз редактировалось KaMaKaDzA; 06.12.2015 в 14:55.
KaMaKaDzA вне форума Ответить с цитированием
Старый 06.12.2015, 14:58   #6
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

Как бы я например сделал:
1. Номер - содержит код, номер и т.д.
2. Абонент - содержит фамилию и список номеров (пусть массив номеров - массив размером 3 элемента).
3. Телефонная книга - содержит абонентов.

Общая мысль понятна? C++ - объектно-ориентированный.

Цитата:
Сообщение от KaMaKaDzA Посмотреть сообщение
не я задание придумывал)
Для соотношения 1 пользователь - 1 номер, всё работает. но вот как сделать 3 номера 1 пользователю - хз.
Объект Абонент - содержит фамилию и список номеров (пусть массив номеров - массив размером 3 элемента).
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!

Последний раз редактировалось Bugrimov; 06.12.2015 в 17:50.
Bugrimov вне форума Ответить с цитированием
Старый 06.12.2015, 16:51   #7
KaMaKaDzA
Пользователь
 
Регистрация: 17.07.2013
Сообщений: 20
По умолчанию

я что-то не соображу как это должно выглядеть в коде.
---------------
Всё, разобрался.

придумать как это сделать то я придумал. теперь новая проблема. не работают функции ShowSameCode, Find, Out_All, ShowSameType. Помогите доделать, пожалуйста.

помощь всё ещё нужна...
Вложения
Тип файла: zip Unit1.zip (2.6 Кб, 10 просмотров)

Последний раз редактировалось Stilet; 14.12.2015 в 12:07.
KaMaKaDzA вне форума Ответить с цитированием
Старый 13.12.2015, 21:23   #8
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

скинь условие задачи, а? фиг с тобой, можно и на украинском, но хоть пойму что ты пытался сделать
GreenWizard вне форума Ответить с цитированием
Старый 14.12.2015, 10:38   #9
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

KaMaKaDzA, вы написали что все... и я как-то успокоился ))
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 14.12.2015, 12:13   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
int i, flag;
flag не инициализируется.
И по-моему вообще лучше использовать функции копирования и проверки, а не циклы.
Что то типа
Код:
void ShowSameCode(TelKniga mas[])//показує однакові коди
{clrscr();
 string code;
 int i, flag;
 printf("Vvedite cod: ");
 cin>>code; //вводим код
 for (i=0; i<abon_count; i++)  {
   string help=mas[i].RetKod();
   if(help.substr(1,3)==code)   cout<<endl;
  }
 getch();
}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
классы Lucky777 Общие вопросы по Java, Java SE, Kotlin 1 13.10.2011 23:36
Классы ЛюсьенкА C++ Builder 1 08.04.2011 11:59
классы Blade47 Общие вопросы C/C++ 2 05.04.2011 15:29
классы в С++ Laplas Помощь студентам 0 27.03.2011 17:57