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

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

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

Телефонный справочник - C++

27.10.2013, 10:34. Просмотров 3260. Ответов 20
Метки нет (Все метки)

Всем привет!
Задачка в двух словах такова. Надо сделать телефонный справочник, чтоб можно было добавлять ФИО №телефона, затем отсортировать (быстрой сортировочкой) и вывести на экран.
А теперь куча вопросов. QuickSort неправильно сделал, что очевидно. Так как, собственно, организовать сортировку? Возможно ли это сделать с помощью <algorithm> ?
Стоит ли считывать структуры с помощью указателя? Не лучше ли использовать vector? А если и лучше, то как использовать его конкретно в данной ситуации?..
Преподают нам пока что Си, но случайно открыл на себя эти интересненькие потоки, так что писал на них. А раз уж начал использовать синтаксис Си++, то надо довести эту прогу до конца. Но сам уже запутался. Хотя бы подскажите направление для мыслей. На большее не рассчитываю).. Собственно, сам код:

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
#include <iostream>
#include <iomanip>
#include <fstream>
#include <cstdlib>
 
using namespace std;
 
struct reg{
    char number[20];
    char name[20];
    char naame[20];
    char naaame[20];
    struct reg *next;
};
 
template<class T>
void quickSort(T* a,long N) {
    long i=0, j=N;                  //установка указателей на исходные места
    T temp, p;
    p = a[N>>1].name;                   //центральный элемент
    //разделение
    do {
        while (a[i].name < p) i++;
        while (a[j].name > p) j--;
        
        if (i <= j) {
            temp = a[i];
            a[i] = a[j];
            a[j] = temp;
            i++;
            j--;
        }
    } while (i<=j);
    
    //если еще осталось, что сортировать
    if (j>0) quickSort(a,j);
    if (N>i) quickSort(a+i,N-i);
}
 
int main(){
    int i=1;
    struct reg *r= new reg;
    setlocale(LC_ALL,"Russian");
    ifstream fin("/home/kirill/Рабочий стол/phone.txt");
    if (!fin.is_open()){
        cout<<"Не могу открыть файл!";
        return 0;
    }
    fin>>r->name>>r->naame>>r->naaame>>r->number;
    cout<<r->name<<' '<<r->naame<<' '<<r->naaame<<' '<<r->number<<endl;
    reg *tmp=r;
    while (true){
        tmp->next=new reg;
        tmp=tmp->next;
        fin>>tmp->name>>tmp->naame>>tmp->naaame>>tmp->number;
        if (fin.eof()) break;
        cout<<tmp->name<<' '<<tmp->naame<<' '<<tmp->naaame<<' '<<tmp->number<<endl;
        i++;
    }
    
 
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.10.2013, 10:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Телефонный справочник (C++):

телефонный справочник - C++
Создать телефонный справочник для осуществления следующих операций: Добавление абонентов в базу. Удаление абонентов из базы. ...

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

Телефонный справочник. - C++
#include &quot;stdio.h&quot; #include &quot;conio.h&quot; #define FNAME &quot;I:\\phone.txt\0&quot; void main() { char fname = FNAME; FILE *out; char...

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

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

телефонный справочник - C++
создать программу телефонный справочник на 5 человек эти 5 человек вводятся с клавиатуры. помогие составить

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Max Dark
шКодер самоучка
1825 / 1627 / 592
Регистрация: 09.10.2013
Сообщений: 3,634
Записей в блоге: 6
Завершенные тесты: 2
27.10.2013, 14:32 #16
Замените функции
C++
1
2
3
4
5
6
7
8
9
10
11
inline bool cmpname(record first, record second)
{ return compare(&first, &second, NAME)>0; }
 
inline bool cmpsubname(record first, record second)
{ return compare(&first, &second, SUBNAME)>0; }
 
inline bool cmpfamyly(record first, record second)
{ return compare(&first, &second, FAMILY)>0; }
 
inline bool cmpnumber(record first, record second)
{ return compare(&first, &second, NUMBER)>0; }
справка по std::sort
1
Kir555
0 / 0 / 0
Регистрация: 27.05.2012
Сообщений: 21
27.10.2013, 16:47  [ТС] #17
Заменил... Но sort работает так, как в той справке на примере, которую вы скинули)..

Добавлено через 54 секунды
То есть берет и меняет список в обратном порядке...
0
Max Dark
шКодер самоучка
1825 / 1627 / 592
Регистрация: 09.10.2013
Сообщений: 3,634
Записей в блоге: 6
Завершенные тесты: 2
27.10.2013, 16:49 #18
Скинте пример файла, посмотрю
0
Kir555
0 / 0 / 0
Регистрация: 27.05.2012
Сообщений: 21
27.10.2013, 16:56  [ТС] #19
phone.txt

Например)
0
Max Dark
шКодер самоучка
1825 / 1627 / 592
Регистрация: 09.10.2013
Сообщений: 3,634
Записей в блоге: 6
Завершенные тесты: 2
27.10.2013, 17:45 #20
record.cpp.txt
phone.txt
Сейчас сортирует по алфавиту
из багов - программа не обрабатывает двойные имена фамилии
1
Kir555
0 / 0 / 0
Регистрация: 27.05.2012
Сообщений: 21
27.10.2013, 17:49  [ТС] #21
Да ладно, спасибо)) Мне только осталось ее переделать для непосредственного ввода, но это уже пустяки)...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.10.2013, 17:49
Привет! Вот еще темы с ответами:

Телефонный справочник - C++
Помогите пожалуйста написать прогу на С++.Нужно написать прогу телефонный справочник,она должна считывать инфу с текстового файла и...

Телефонный справочник. - C++
Здравствуйте. Нужна помощь в создании программы, которая объединяла бы в себе действия: &quot;Добавление в телефонный справочник&quot; и &quot;Поиск в...

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

Телефонный справочник консоль - C++
Помогите пожалуйста! Приложение должно выполнять основные функции телефонного справочника: - ввод сведений о новых абонентах...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
27.10.2013, 17:49
Ответ Создать тему
Опции темы

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