Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Встроенные библиотеки в Visual studio https://www.cyberforum.ru/ cpp-beginners/ thread2170469.html
В visual studio мы пользуемся небольшим набором библиотек типо iostream,ios,cstdlib,cmath и т.д. А что на счет таких библиотек как например memcpy,limits map. Интересует информация на русском по этим...
Работа с ячейками памяти C++
Есть идея написать простую консольную программу для вывода значений которые лежат в ячейке памяти и сканирования этих самых ячеек(типо artmoney). Я не могу понять как в некоторых программах люди...
C++ Знаковые массивы в C++ Изучая C++ столкнулся с проблемой ввода значений одного массива в ячейки другого массива. Пытался таким образом, но заполнение массива не происходит. Каким образом делать это правильно? str1 = str; https://www.cyberforum.ru/ cpp-beginners/ thread2170462.html C++ Найти ошибку | Разбор строк Для кодирования сообщения используют следующие действия: сообщение записывают, опуская пробелы, в прямоугольник заданной высоты по столбцам, а затем прочитывают строки в заданном порядке. 1 П Р И... https://www.cyberforum.ru/ cpp-beginners/ thread2170444.html
Синхронизация процессов и потоков C++
Помогите с заданием, пожалуйста.
C++ Программа моделирования обрабатывающего устройства и очереди к нему Честно сказать не очень понимаю о чем тут речь, если можно объясните пожалуйста. https://www.cyberforum.ru/ cpp-beginners/ thread2170432.html
C++ Вычисление с применением вектора Написал класс, но что-то не считает, в чём ошибся? Помогите пожалуйста. Добавлено через 55 минут #include <iostream> https://www.cyberforum.ru/ cpp-beginners/ thread2170418.html Class Train c++ C++
Описать класс с именем TRAIN, содержащий элементы: Скрытые поля: название пункта (*char), номер поезда (int), время отправления (double в формате <чч.мм>). Открытые методы: конструктор по...
C++ Быстрый поиск минимума в отличающихся одним элементом векторах Всем привет Есть вектор, состоящий, допустим, из строк (std::string). В нем ищется минимальный элемент. Этот минимальный элемент выводится на экран, и "ячейка" вектора, в котором хранился этот... https://www.cyberforum.ru/ cpp-beginners/ thread2170390.html C++ Крестики-нолики, графика, ООП Здравствуйте, нужно несколько советов, просто не знаю с чего начать. Мне нужно написать курсовую работу по Объектно-ориентированному программированию на C++, работаю в Visual Studio. Какую графику... https://www.cyberforum.ru/ cpp-beginners/ thread2170388.html
C++ Виртуальные функции
Создать базовый класс «молодой человек» и производные классы «студент», «военнослужащий», «военный курсант». Выведите на экран сведения о военнообязанности. #include <iostream> #include...
C++ Написать программу, использующую этот класс для представления англо-русского словаря https://www.cyberforum.ru/ cpp-beginners/ thread2170379.html
Имеется код на задание: описание класса, реализующий бинарное дерево обладающее возможностью добавления новых элементов, удаления существующих, поиска элемента по ключу, а также последовательного...
0 / 0 / 0
Регистрация: 18.07.2017
Сообщений: 95
08.01.2018, 12:07  [ТС] 0

Как работают явные преобразования из char[] в int? - C++ - Ответ 12011496

08.01.2018, 12:07. Показов 985. Ответов 7
Метки (Все метки)

Ответ

Нынче код выглядит так(если убрать всё лишнее и оставить только вывод):
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
#include <iostream>
#include <fstream>
#include <string>
 
using namespace std;
 
ifstream file("C:\\Users\\Admin\\Desktop\\тест.txt");
struct Node //Звено дерева (инв.номер, название, автор, издательство, год, номер стелажа)
{
    int x; //Инв.номер
    string name;//Название
    string author;//Автор
    string pub;//Издательство
    int year;//Год
    int number_st;//Номер стелажа
 
    Node *l, *r; //Указатели на новые звенья
};
Node *root = NULL;//Начальное звено
 
void scrin(Node *, int x = NULL);
void ReadAndWrite(Node *&tree, int x = NULL);
void show(Node *tree);
void ShowAll(Node *&Tree = root);
 
int main()
{
    setlocale(0, "");
    if (!file.is_open()) 
    {
        cout << "Файл не может быть открыт\n"; 
        cin.get();
        return 0;
    }
    scrin(NULL);
    menu();
    cin.get();
    file.close();
    return 0;
}
 
void scrin(Node *tree, int x)
{
    if (!file.eof())
    {
        char buf[256];
        if (tree == NULL)
        {
            tree = new Node;
            root = tree;
            tree->l = tree->r = NULL; //Подзвенья инициализируем пустотой во избежание ошибок   
 
            ReadAndWrite(root, x);
            scrin(root);
        }
        else
        {
            int Ibuf;
            if (x == NULL)
            {
                file.getline(buf, 256, ' ');
                Ibuf = (int)buf;
            }
            else Ibuf = x;
            if (Ibuf < tree->x)
            {
                if (tree->l != NULL)
                    scrin(tree->l, Ibuf); //При помощи рекурсии заталкиваем элемент на свободный участок
                else //Если элемент получил свой участок, то
                {
                    tree->l = new Node;  //Выделяем память левому подзвену. Именно подзвену, а не просто звену
                    tree->l->l = tree->l->r = NULL; //У левого подзвена будут свои левое и правое подзвенья, инициализируем их пустотой
                    tree->l->x = (int)buf; //Записываем в левое подзвено записываемый элемент 
                    ReadAndWrite(tree, x);
                    scrin(root);
                }
            }
            if (Ibuf > tree->x)   //Если нововведенный элемент x больше чем элемент x из семечка дерева, уходим вправо
            {
                if (tree->r != NULL)    scrin(tree->r, Ibuf); //При помощи рекурсии заталкиваем элемент на свободный участок
                else //Если элемент получил свой участок, то
                {
                    tree->r = new Node;  //Выделяем память правому подзвену. Именно подзвену, а не просто звену
                    tree->r->l = tree->r->r = NULL; //У правого подзвена будут свои левое и правое подзвенья, инициализируем их пустотой
                    tree->r->x = x; //Записываем в правое подзвено записываемый элемент 
                    ReadAndWrite(tree, x);
                    scrin(root);
                }
            }
        }
    }
}
 
void ReadAndWrite( Node *&tree, int x)
{
    char buf[256];
    if (x != NULL) tree->x = x;
    else 
    {
        file.getline(buf, 256, ' ');
        tree->x = atoi(buf);
    }
    file.getline(buf, 256, ' ');
    tree->name = buf;
    file.getline(buf, 256, ' ');
    tree->author=buf;
    file >> tree->pub;
    file.getline(buf, 256, ' ');
    tree->year = atoi(buf);
    file.getline(buf, 256, ' ');
    tree->number_st = atoi(buf);
}
void menu()
{
    int num;
    string buf;
    int option;
    cout << "Введите номер опции" << endl;
    cout << "1)Поиск по инвентарному номеру" << endl;
    cout << "2)Выдача всего списка" << endl;
    cout << "3)Поиск по автору" << endl;
    cout << "4)Поиск по названию" << endl;
    cout << "5)Удаление информации о книге по инвентарному номеру" << endl; 
//  cout << "6)Поиск по инвентарному номеру" << endl;
    cin >> option;
    switch (option)
    {
        case 1: 
            
            cout << "Введите инвентарный номер для вывода информации" << endl;
            cin >> num;
            search(num);
            break;
        case 2: ShowAll();
            break;
        case 3: 
            cout << "Введите имя автора для вывода информации" << endl;
            cin >> buf;
            SearchByAuthor(buf);
            break;
        case 4:
            cout << "Введите название книги для вывода информации" << endl;
            cin >> buf;
            SearchByName(buf);
            break;
        case 5: 
            cout << "Введите номер книги для удаления";
            cin >> num;
            DeleteByNumber(num);
            break;
    }
    //cout << "Вернуться в меню(1) или завершить(2)";
//Да, я не сделал тут рекурсию меню, я это знаю. Я считаю, что сейчас это не так важно
    cin.get();
}
 
void search(int x, Node *&tree)
{
    if (tree == NULL) cout << "Запись не найдена" << endl;
    else if (x == tree->x)  show(tree);
    else if (x < tree->x)   search(x, tree->l);
    else if (x > tree->x)   search(x, tree->r);
}
 
void ShowAll(Node *&Tree)
{
 
    if (Tree != NULL) //Пока не встретится пустое звено
    {
        ShowAll(Tree->l); //Рекурсивная функция для вывода левого поддерева
        show(Tree); //Отображаем дерево
        ShowAll(Tree->r); //Рекурсивная функция для вывода правого поддерева
    }
}
void show(Node *tree)
{
    //if (tree->name == "") cout << "Запись удалина" << endl;
    //else 
    {
        cout << "Инв.ном.: " << tree->x;
        cout << "   Назв.: " << tree->name;
        cout << "   Автор: " << tree->author;
        cout << "   Издат: " << tree->pub;
        cout << "   Год: " << tree->year;
        cout << "   Номер ст.: " << tree->number_st<<endl<<endl;
    }
}


Вернуться к обсуждению:
Как работают явные преобразования из char[] в int? C++
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.01.2018, 12:07
Готовые ответы и решения:

Нет преобразования int в char*
int main() { char s; char* kz = 0; cout &lt;&lt; &quot;Vvedite stroku: &quot;; cin &gt;&gt; s; // строку...

Преобразования массива с типа int к типу char
Помогите решить задачу. Требуется создать шаблон класса для преобразования массива с типа int к...

явные преобразования
откоректируйте синтаксис Any a; f(&quot;&quot;,ios::binary); /* * */ f.write((char*) a,sizeof(a));

Как превести из char* в int и наоборот из int в char*?
Как превести из char* aa='123' в int aa=123 и наоборот из int в char* . Понимаю что самому...

7
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.01.2018, 12:07

Реализация функции char *padl(const char *string, int len, int c=' ')
Реализовать функцию возвращающую указатель на новую строку длины len, полученную из string либо...

Форматирование строк, char to int & int to char
Покажите как запихнуть число в строку и вытащить его обратно из строки. Вот всё просто в pawn ...

Как в выделенную память записать поочередно число int, массив char[n], и еще число int
Выделяю память void* Start=malloc(Size); Как туда записать поочередно число int, массив char,...

Ошибка "error C2446: :: нет преобразования "int" в "char *"
Ошибка: &quot;error C2446: :: нет преобразования &quot;int&quot; в &quot;char *&quot; Когда нажимаю двойным кликом на...

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