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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.59
Kir555
0 / 0 / 0
Регистрация: 27.05.2012
Сообщений: 21
27.10.2013, 10:34     Телефонный справочник #1
Всем привет!
Задачка в двух словах такова. Надо сделать телефонный справочник, чтоб можно было добавлять ФИО №телефона, затем отсортировать (быстрой сортировочкой) и вывести на экран.
А теперь куча вопросов. 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.10.2013, 10:34     Телефонный справочник
Посмотрите здесь:

телефонный справочник C++
C++ Телефонный справочник.
телефонный справочник C++
Телефонный справочник C++
Телефонный справочник C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.10.2013, 17:49     Телефонный справочник
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
Kir555
0 / 0 / 0
Регистрация: 27.05.2012
Сообщений: 21
27.10.2013, 17:49  [ТС]     Телефонный справочник #21
Да ладно, спасибо)) Мне только осталось ее переделать для непосредственного ввода, но это уже пустяки)...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Yandex
Объявления
27.10.2013, 17:49     Телефонный справочник
Ответ Создать тему
Опции темы

Текущее время: 06:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru