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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.86
Litta
0 / 0 / 0
Регистрация: 22.11.2009
Сообщений: 48
#1

Реализация методов в классе. - C++

06.05.2010, 17:33. Просмотров 3141. Ответов 5
Метки нет (Все метки)

Программирую на с++ под DOS.Всё, конечно, интересно, но уже месяц не могу разобраться с одной задачкой.
Дан класс "телефонный справочник" с полями : имя и номер, над которыми надо реализовать несколько методов. У меня получается создать массив объектов и вывести на экран.
Но совершенно не понимаю. как реализовать методы:
1-добавить новое имя с номером
2-удалить имя и номер из справочника
3-поиск номера по введённому имени
4-сортировка имён в алфавитном порядкею

При решении 3) и 4) использовала функцию спавнения строк strcmp. МоЯ главная проблема в том, что я не знаю, как объявлять методы, их тип, их параметры, а также , как вызывать их. Могли бы вы привести в качестве примера какие-то фрагменты кода, пожайлуста?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.05.2010, 17:33     Реализация методов в классе.
Посмотрите здесь:

Сколько методов в новоиспеченном классе? - C++
Не смог найти удовлетворительный ответ, вследствие чего хотелось бы получить окончательный ответ на этот вопрос. Насколько мне известно -...

Использование методов класса в самом классе - C++
Вообще есть класс нужно объедение все его методы в один метод. Пример: class Test{ public: int N; private: Test(){ ...

Приведите пример методов startEngine и stopEngine в классе - C++
ненахожу синтаксис и описание методов startEngine и stopEngine в классах можно минимальный пример кода?

Как избежать не нужной пустой реализации виртуальных методов в базовом классе? - C++
Для наглядности: class BASE { public: BASE(); ~BASE(); virtual void Do();

Реализация простеньких методов преобразований - C++
есть ли материалы (или готовая программа) 4тобы реализовать простенький метод преобразований ( например фурье) на vc ++ ?

Написать программу: реализация методов сортировки - C++
Помогите , пожалуйста , написать программу. В долгу не останусь. Написать программу , в которой реализуются методы сортировки : пузырька...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Crudelis
Шаровик затейник
672 / 414 / 13
Регистрация: 06.05.2010
Сообщений: 1,109
06.05.2010, 17:55     Реализация методов в классе. #2
примеру, есть класс студентов:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Student
{
    char group[50];
    char name[50];
    char fam[50];
    int age;
    char specializ[50];
public:
    void Show()
    {
            cout<<"Фамилия: "<<fam<<endl;
            cout<<"Имя: "<<name<<endl;
            cout<<"Специализация: "<<specializ<<endl;
            cout<<"Возраст: "<<age<<endl;
            cout<<"Возраст: "<<group<<endl;
            cout<<endl;
    }
}
в теле я создают массив:
Student obj[100];
т.е. в структуре у меня будет 100 студентов
для удаления например, нужно создать какой то темп массив к примеру
Student objtemp[100];
перезаписать в него тело obj[100], потом к примеру нужо удалить 50го студета, я в темп сдвигаю весь массив на одного
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int k=0;
for(int i=0;i<100;i++)
{
if(i==50)
{
objtemp[k]=obj[i];// т.е. при достижении 50 я k не добавляю и как бы сдвигаю массив
}
else
{
objtemp[k]=obj[i];
k++;
}
}
Litta
0 / 0 / 0
Регистрация: 22.11.2009
Сообщений: 48
06.05.2010, 18:38  [ТС]     Реализация методов в классе. #3
Crudelis, спасибо вам)Правда, метод удаления я хотела организовать иначе: в теле метода ввести номер желаемого имени и потом присвоить ему " "(т.е. обнулить).

Вот только до сих пор непонятно, как объявить метод сортировки, что присвоить ему в качестве формального и ФАКТИЧЕСКОГО параметра. Помогите с этим вопросом, Уважаемые форумчане.

Добавлено через 18 минут
а вот и код(только в методе сортирови надо использовать функцию strcpy):

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
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<string.h>
#define k 3
  int i;
  class telephonebook
  {char name[10];
  int nomer;
  public:
  void set_name(char st[10])
  {strcpy(name,st);}
  void set_nomer(int p)
  {nomer=p;}
  char *get_name()
  {return name;}
  int get_nomer()
  {return nomer;}
 
  void sort_name(char nname[80]);
  void search_nomer(char ob[80]);
  void new_nomer(char oob[80]);
  void delete_nomer(char o[80]);
 
  };
 
  void  telephonebook::sort_name(char nname[80])
   {char c;
    int j,x;
    for(j=0;j<k;j+=2)
      for(i=0;i<k;i+=2)
       {x=strcmp(nname[i],nname[i+1]);
    if(x<0)
     {c=nname[i];
      nname[i]=nname[i+1];
      nname[i+1]=c;}  }
    for (i=0;i<k;i+=2)
      cout<<nname[i]<<"\n";
      
      }
 
   void  telephonebook::search_nomer(char ob[80])
    {char sss;
     cout<<"vvedite name"<<"\n";
     gets(sss);
     for(i=0;i<k;i++)
       if(!strcmp(sss,ob[i])
     cout<<"nomer telephona="<<"\n";
      cout<<ob[i]<<"  "; }
 
    void telephonebook::delete_nomer(char o[80])
    {int i;
     cout<<"vvedite nomer of name"<<"\n";
     cin<<i;
     cout<<"\n";
     if (i>k)
       cout<<"error";
     else
       o[i]=="  ";
       for(i=0;i<k;i++)
      cout<<o[i]<<"\n";}
 
 
 
    void telephonebook::new_nomer (char *obj)
 
 
  void main()
  {
 
  clrscr();
  char str[10];
  int b;
  telephonebook obj[k];
  for( i=0; i<k; i++)
 
  {gets (str);
  obj[i].set_name(str);
  cin>>b;
  obj[i].set_nomer(b);
  }
  for(i=0;i<k;i++)
  cout<<"\n"<<obj[i].get_name()<<"  "<<obj[i].get_nomer();
  getch();}
Crudelis
Шаровик затейник
672 / 414 / 13
Регистрация: 06.05.2010
Сообщений: 1,109
06.05.2010, 19:17     Реализация методов в классе. #4
Цитата Сообщение от Litta Посмотреть сообщение
Crudelis, спасибо вам)Правда, метод удаления я хотела организовать иначе: в теле метода ввести номер желаемого имени и потом присвоить ему " "(т.е. обнулить).
хорошо, вы к примеру его обнулишь, а теперь стоит задача вывести всю структуру
т.е.
for(int i=0;i<n;i++)
cout<<"\n"<<obj[i].get_name()<<" "<<obj[i].get_nomer();

как вы поступите в этом случае... а если удалили 10 элементов....... а выводить удаленные не надо... лучше делать методом сдвига с помощью темп массива, при сдвиге делать n-1

Добавлено через 5 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void telephonebook::sort_name(char nname[80])
{char c;
int j,x;
for(j=0;j<k;j+=2)
{
for(i=0;i<k;i+=2)
{x=strcmp(nname[i],nname[i+1]);
if(x<0)
{
strcpy(c,nname[i]);
strcpy(nname[i],nname[i+1]);
strcpy(nname[i+1],c);
}
 }
for (i=0;i<k;i+=2)
cout<<nname[i]<<"\n";
}
}
char-овские строки нельзя приравнивать правильно как вы писали через strcp

Добавлено через 3 минуты
а почему вы в сортировке делает прыжок +2? ведь нужно сравнивать все элементы
смотрите вы сравниваете 1 с 2, потом 3 с 4, потом 5 с 6м а вот 2 с 3м вы не сравниваете, 4 с 5м тоже не сравниваете и так далее
Litta
0 / 0 / 0
Регистрация: 22.11.2009
Сообщений: 48
06.05.2010, 19:43  [ТС]     Реализация методов в классе. #5
Crudelis, я забыла исправить эту ошибку.) Сначала брала фрагмент другой работы без ООП, где вначале описывался массив из чередующихся имён и номеров( поэтому и неудачно списала +=2)

А почему-то компилятор жалуется на функцию strcmp- говорит. что нельзя преобразовать int к char *.
А насчёт удаления: забыла исправить ==" " на strcpy(str, " ")
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.05.2010, 23:27     Реализация методов в классе.
Еще ссылки по теме:

Реализация списка в классе. C++ - C++
Нужно описать класс для однонаправленного списка, который будет хранить целые значения. Необходимо реализовать: создание/разрушение;...

Реализация структуры в классе - C++
проблема с видимостью. может стоит реализовать два класса. И применить наследство? как бы вы реализовали класс список?

Реализация чистых виртуальных методов в производных классах - C++
Здравствуйте! Интересует такой вопрос: Допустим, имеется у нас базовый абстрактный класс и несколько производных от него классов. В...

Реализация методов для добавления объектов в список - C++
Народ помогите пожалуйста с реализация методов для добавления объектов в список и просмотра списка. По заданию надо: 1. Определить...

Реализация методов доступа к закрытым полям (геттеры и сеттеры) - C++
Здраствуйте. Нужно реализовать в программе методы get и set Вот мой код: Заголовочный файл #include &lt;iomanip&gt; class Matrix { ...

Родительский объект по отношению к дочерним. Реализация методов класса - C++
Вопрос в принципе не очень сложный, но все таки я не могу его решить. Итак, есть класс Object, в котором есть указатель на родительский...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Litta
0 / 0 / 0
Регистрация: 22.11.2009
Сообщений: 48
10.05.2010, 23:27  [ТС]     Реализация методов в классе. #6
Как можно организовать метод добавления нового имени и номера в телеф.справочник?.....пробовала так. но не получилось:

void telephonebook::new_nomer(telephonebook * ob)
{char st[80];int q;
cout<<"vvedite name i nomer:"<<"\n";


for( i=0; i<1; i++)

{gets (st);
ob[i].set_name(st);
cin>>q;
ob[i].set_nomer(q);}

for(i=0;i<=k;i++)
cout<<"\n"<<ob[i].get_name()<<" "<<ob[i].get_nomer();
getch();


} ;
Yandex
Объявления
10.05.2010, 23:27     Реализация методов в классе.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru