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

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

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

Класс Телефонная Книга - C++

26.07.2013, 23:58. Просмотров 1587. Ответов 7
Метки нет (Все метки)

Доброго времени суток форумчане!
Получил следующее задание, но столкнулся с проблемой..
1) опишите класс "контакт", описывающий имя, номер телефона, примечание
2) опишите класс "Телефонная Книга", содержащий определенное количество контактов(как я понял, создать массив класса "контакт"). Определить методы добавления/удаления человека, а так же поиск по имени или примечанию.
Class.h
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
class Contact
{
    float num;      //номер
    char name[50]; //имя
    char imp[50]; //примечание
    friend class TelBook;
public:
    Contact()
    {
        num=0;
        name[0]='\0';
        imp[0]='\0';
    }
};
 
class TelBook
{
    int num;
    Contact a;
public:
    void Input()
    {
        printf("\nEnter name: ");
        scanf("%s",&a.name);
        printf("\nEnter phone number: ");
        scanf("%f",&a.num);
        printf("\nEnter notice about contact: ");
        scanf("%s",&a.imp);
    }
    void Output()
    {
        if(a.name[0]=='\0')
        {
            printf("\nError!Contact not found!\n");
        }
        else
        {
            printf("\n%s\t%3.0f\t%s\n",a.name,a.num,a.imp);
        }
    }
    void Del(TelBook b[],int &n)
    {
        printf("enter the number of contact you want to delete:");
        scanf("%d",&num);
        for (int i=num;i<3;i++)
        {
            b[i]=b[i+1];
        }
        n--;
    }
};
.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <iostream>
#include <stdlib.h>
#include "Class.h"
#include <string.h>
void main (void)
{
    z=3;
    TelBook b[15];
    for (int n=0;n<3;n++)
    {
    b[n].Input();
    }
    for (int n=0;n<3;n++)
    {
    printf("Contact %d:\t",n);
    b[n].Output();
    }
    
    getch();
}
Я написал функции ввода и вывода контактов на экран(пока ограничился 3мя контактами, но планирую заменить 3 в циклах ввода и вывода на переменную z, которая будет вводиться с клавиатуры), но с удалением и поиском возникли проблемы. Прошу вашей помощи, программисты!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.07.2013, 23:58     Класс Телефонная Книга
Посмотрите здесь:

Класс "Телефонная книга" - C++
Составьте описание и реализуйте программно класс, который сохраняет информацию об имени, адресе и номере телефона в закрытой части класса....

Класс "Телефонная книга" - C++
что тут не правильно помогите пожалуйста спасибо class DATE { unsigned int day; unsigned int month;

Телефонная книга - C++
помогите найти хоть пример кода программа телефонная книга,имеет менюшку ее функционал:добавление\удаление абонента,его редактирование ...

Телефонная книга - C++
В общем, ребят, мне надо сделать подобие телефонной книги. Для записи контактов определить структуру: {Фамилия,Имя,Адрес,Номер телефона}....

Телефонная книга сортировка пузырьком - C++
Сортировка массива записей (телефонной книги) методом Пузырька. Записи считываются из текстового файла, каждая запись состоит из двух...

Работа с файлами. Телефонная книга - C++
Вечер добрый. задание: А. Создать файл, содержащий сведения о телефонах абонентов. Каждая записаь имеет поля: фамилия абонентов, год...

Работа с файлами: телефонная книга - C++
Здравствуйте участники форума! Помогите, если сможете, разобраться какие ошибки в программе. Задание такое: составить программу...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
VLK
193 / 162 / 12
Регистрация: 05.05.2013
Сообщений: 1,225
27.07.2013, 00:23     Класс Телефонная Книга #2
Ты не знаешь как организовать поиск? или ты хочешь что бы тебе его написали?
nonedark2008
889 / 628 / 126
Регистрация: 28.07.2012
Сообщений: 1,697
27.07.2013, 00:24     Класс Телефонная Книга #3
EruRorato, такая задача или подобные проскакивали уже сотни раз на этом форуме. Воспользуйся поиском, поищи хорошее решение задачи, поизучай его.
EruRorato
0 / 0 / 0
Регистрация: 09.03.2013
Сообщений: 22
27.07.2013, 00:37  [ТС]     Класс Телефонная Книга #4
Я не имею представления о том, как вести поиск по элементам класса и был бы благодарен, если бы его написали)

Добавлено через 7 минут
Преобразовал ввод и вывод, только посредством методов класса. Думаю так будет правильнее чем мой первый вариант.
Class.h
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
class Contact
{
    float num;      //номер
    char name[50]; //имя
    char imp[50]; //примечание
    friend class TelBook;
public:
    Contact()
    {
        num=0;
        name[0]='\0';
        imp[0]='\0';
    }
        void Input()
    {
        printf("\nEnter name: ");
        scanf("%s",&name);
        printf("\nEnter phone number: ");
        scanf("%f",&num);
        printf("\nEnter tag of contact: ");
        scanf("%s",&imp);
    }
        void Output()
    {
        if(name[0]=='\0')
        {
            printf("\nError!Contact not found!\n");
        }
        else
        {
            printf("\n%s\t%3.0f\t%s\n",name,num,imp);
        }
    }
};
class TelBook
{
    int q;
    Contact *a;
public:
TelBook(int q1)
{
    q=q1;
    a=new Contact[q];
}
void InputT()
{ 
for(int i=0;i<q;i++)
a[i].Input(); 
}
void OutputT()
{ 
    printf("Entered contacts: \n");
for(int i=0;i<q;i++)
a[i].Output(); 
}
void AddContact()
{ int q1=q+1;
printf("Contact number %d will be added now. Enter data for this contact:\n",q1);
a[q].Input(); 
q++;
}
void DelContact(int j)
{ 
printf("Contact number %d deleted\n",j);
j=j-1;
for(int i=j;i<q;i++)
a[i]=a[i+1];
q--;
}
 
};
};
.cpp
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
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <iostream>
#include <stdlib.h>
#include "Class.h"
#include <string.h>
void main (void)
{
//Contact a;
//a.Input();
//a.Output();
printf("Input and Output\n");
TelBook a(3);
a.InputT();
a.OutputT();
a.AddContact();
a.OutputT();
int sc;
printf("Enter the number of contact for delete: ");
scanf("%d",&sc);
a.DelContact(sc);
a.OutputT();
getch();
}
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.07.2013, 00:41     Класс Телефонная Книга #5
Как-то так... Не компилировал, но идея должна быть понятна:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void Find(TelBook b[], int n)
{
        printf("Enter the name: ");
        char name[50];
        scanf("%s", name);
        int flag = 0;
        for (int i = 0; i < n; i++)
        {
            if (!strcmp(b[i].name, name)
            {
                printf("%s", b[i].name);
                flag = 1;
            }
        }
        if (!flag) printf("Not found!");
}
EruRorato
0 / 0 / 0
Регистрация: 09.03.2013
Сообщений: 22
27.07.2013, 00:42  [ТС]     Класс Телефонная Книга #6
+Я добавил удаление элемента в своем посте выше
VLK
193 / 162 / 12
Регистрация: 05.05.2013
Сообщений: 1,225
27.07.2013, 00:43     Класс Телефонная Книга #7
Писать конечно не напишу, ночь уже, бошка не особо варит, короче в main создаешь массив в котором будут введенные данные для поиска

char search[50]
std::cin >> search;

потом в классе TelBook делаешь еще одну функцию, поиск, которая получает как раз этот массив (search)

и в этой функции она осуществляет поиск по списку

if (name == search)
{...}



Вообще вот, хорошая статья, про связанные списки и поиск по ним, почитай, там и программа написана - http://iguania.ru/stati-po-programmi...iy-spisok.html

мне очень когда то помогла эта статья.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.07.2013, 01:05     Класс Телефонная Книга
Еще ссылки по теме:

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

Телефонная книга: просмотр, поиск, добавление записей - C++
Доброго вечера. Такая проблема. Завтра в универ нужно сдать программу, с которой вышла полная запара, т.к. не имею представления как...

Телефонная книга: подскажите алгоритм быстрого поиска контактов - C++
привет всем! какой самый быстрий алгоритм поиска контактов.и какие вы предлагайте допустим у нас имена Anton Aren Arsen Arkadi ...

Структура "Телефонная книга" - C++
Здравствуйте форумчане, нужна ваша помощь. Создать массив, элементами которого являются структуры – список телефонов (номер, фамилия...

создать класс- книга - C++
Помогите создать класс книга : автор , название , издательство , год, количество страниц ))Очень нужно


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

Или воспользуйтесь поиском по форуму:
EruRorato
0 / 0 / 0
Регистрация: 09.03.2013
Сообщений: 22
27.07.2013, 01:05  [ТС]     Класс Телефонная Книга #8
Цитата Сообщение от alsav22 Посмотреть сообщение
Как-то так... Не компилировал, но идея должна быть понятна:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void Find(TelBook b[], int n)
{
        printf("Enter the name: ");
        char name[50];
        scanf("%s", name);
        int flag = 0;
        for (int i = 0; i < n; i++)
        {
            if (!strcmp(b[i].name, name)
            {
                printf("%s", b[i].name);
                flag = 1;
            }
        }
        if (!flag) printf("Not found!");
}
Очень помогло, спасибо! Поправил ваш код и все отлично работает! Итоговый вариант выложу позже в этой теме
Yandex
Объявления
27.07.2013, 01:05     Класс Телефонная Книга
Ответ Создать тему
Опции темы

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