0 / 0 / 1
Регистрация: 20.10.2014
Сообщений: 21
1

Помогите найти ошибку в задаче на структуры

13.02.2015, 15:31. Показов 402. Ответов 4
Метки нет (Все метки)

Помогите , 1 ошибка в коде , код писал с книги . Буду очень благодарен за помощь.
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <conio.h>
#include <string.h>
 
using namespace std;
 
struct data {
    char user_name[15];
    char address[20];
    char phone[8];
};
 
data directory[10];
int number;
int middle;
char name[15];
bool flag;
int key;
 
void create();
void print();
void sort();
void BinSearch(int left, int right);
void create()
{
    int i;
    cout << "enter directory data" << endl;
    i = 0;
    do{
        cout << "name: ";     cin >> directory[i].user_name;
        cout << "address: ";  cin >> directory[i].address;
        cout << "tel: ";      cin >> directory[i].phone;
 
        i++;
 
        cout << "continue ? y/n" << endl;
        key = getch();
    } while ((key != 'n') && (key != 'N'));
    number = i;
}
 
void print()
{
    cout << "----User name------address------telephone----" << endl;
    for (int i = 0; i < number; i++)
    {
        cout << setw(10) << directory[i].user_name;
        cout << setw(14) << directory[i].address;
        cout << setw(14) << directory[i].phone << endl;
    }
}
 
void sort()
{
    data tmp;
    for (int i = 0; i < number - 1; i++)
    for (int j = i + 1; j < number; j++)
    {
        if (strcmp(directory[i].user_name, directory[j].user_name)>0)
        {
            tmp = directory[i];
            directory[i] = directory[j];
            directory[j] = tmp;
        }
    }
}
 
void BinSearch(int left, int right)
{
    if (left > right)
 
        flag = false;
    else
    {
        middle = (left + right) / 2;
        if (strcmp(name, directory[middle].user_name) == 0)
 
            flag = true;
        else if (strcmp(name, directory[middle].user_name) < 0)
            BinSearch(left, middle - 1);
        else BinSearch(middle + 1, right);
    }
}
 
int main()
{
    cout << "telephone directory" << endl;
    create();
    cout << "array of input records" << endl;
    print();
    sort();
    cout << "array of records after sort" << endl;
    print();
 
    do {
        cout << "enter name for search: " << endl;
        cin >> name;
        BinSearch(0, number - 1);
        if (flag)
            cout << "item=" << middle << " user name ->"
            << directory[middle].user_name
            << "  phone->" << directory[middle].address << endl;
 
        else cout << "record not found" << endl;
        cout << "press ESC for finish or any key to continue" << endl;
        key = getch();
    } while (key != 27);
    system("pause");
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.02.2015, 15:31
Ответы с готовыми решениями:

Помогите найти ошибку в задаче
Вот код программы uses crt; var s:string; st:char; i,k,x:integer; begin ClrScr;...

Помогите найти ошибку в задаче
условие: Заданы координаты трех вершин прямоугольника . Необходимо определить ...

Помогите найти ошибку в задаче
Условие задачи: сформировать новый массив по принципу 0,1,1,2,2,2,3,3,3,3.... var a:array of...

Помогите найти ошибку в задаче
Условие: Дана последовательность вещественных чисел Ai, в которой первый член неотрицателен, а...

4
153 / 140 / 62
Регистрация: 08.09.2014
Сообщений: 1,219
13.02.2015, 15:36 2
Ошибка какая и где вылет происходит
0
Модератор
Эксперт С++
11483 / 9400 / 5650
Регистрация: 18.12.2011
Сообщений: 25,114
13.02.2015, 15:41 3
Я тоже не вижу никаких ошибок.
Программа выполняется до конца.
0
0 / 0 / 1
Регистрация: 20.10.2014
Сообщений: 21
13.02.2015, 15:43  [ТС] 4
У меня ошибка: Ошибка 1 error C4996: 'getch': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _getch. See online help for details. c:\users\юлиан\documents\visual studio 2013\projects\consoleapplication4\consoleapplication4\consol eapplication4.cpp 40 1 ConsoleApplication4
0
153 / 140 / 62
Регистрация: 08.09.2014
Сообщений: 1,219
13.02.2015, 15:47 5
Попробуй getchar, тоесть key = getchar();
если нет тогда пиши как говорит отладчик key = _getch();
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.02.2015, 15:47

Структуры. Помогите найти ошибку в программе
3. Сведения об экзамене содержат следующие данные: дисциплину (программирование, социология,...

Динамические структуры. Стек (помогите найти ошибку)
помогите найти ошибку. Есть задание: построить стек, элементами которого являются слова...

Помогите отыскать ошибку в задаче!
Здравствуйте! Попытался решить контрольную задачу в Pascal. Вроде как решил. Но при проверке...

Найти ошибку в задаче
Помогите,пожалуйста,найти ошибку.При вводе говорит,что слишком много начальных данных


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru