Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 22.01.2016
Сообщений: 1

Почему не работает ввод данных из файла?

22.01.2016, 13:36. Показов 1485. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть код сортировки бинарным деревом. Собственно не работает только ввод элементов из файла (case 2 в меню)

Исходный код:
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
#include <iostream>
#include <fstream>
#include <time.h>
#include "stdafx.h"
using namespace std;
#pragma warning(disable : 4996)
FILE*f;
// Структура - узел дерева
struct tnode {
    int field;           // поле данных
    struct tnode *left;  // левый потомок
    struct tnode *right; // правый потомок
};
// Обход в инфиксной форме
void treeprint(tnode *tree) {
    if (tree != NULL) { //Пока не встретится пустой узел
        treeprint(tree->left); //Рекурсивная функция вывода левого поддерева
        cout << tree->field << " "; //Отображаем корень дерева
        treeprint(tree->right); //Рекурсивная функция вывода правого поддерева
    }
}
// Добавление узлов в дерево
struct tnode * addnode(int x, tnode *tree) {
    if (tree == NULL) { // Если дерева нет, то формируем корень
        tree = new tnode; //память под узел
        tree->field = x;   //поле данных
        tree->left = NULL;
        tree->right = NULL; //ветви инициализируем пустотой
    }
    else
        if (x < tree->field) {  //Если элемент x меньше корневого, уходим влево
            tree->left = addnode(x, tree->left); //Рекурсивно добавляем элемент
        }
        else { //иначе уходим вправо
            tree->right = addnode(x, tree->right); //Рекурсивно добавляем элемент
        }
        return(tree);
}
 
 
 
// функция генерации случайных велечин
void Random(tnode*&tree, int p)
{
    srand(time(NULL));
    tree = new tnode;
    tree->field = rand() % 101;   // 0...100
    tree->left = 0;
    tree->right = 0;
    for (int i = 0; i < p; i++)
        addnode(rand() % 101, tree);
}
//Освобождение памяти дерева
void freemem(tnode *tree)
{
    if (tree != NULL) {
        freemem(tree->left);
        freemem(tree->right);
        delete tree;
    }
}
// Тестирование работы
int main() {
    struct tnode *root = 0;
    tnode *Root = NULL;
    system("chcp 1251");
    system("cls");
    int a,m,n,p,k;
 
    do
    {
        cout << "\n//**МЕНЮ**// " << endl;
        cout << "1.Ввод массива" << endl;
        cout << "2.Вывод массива" << endl;
        cout << "3.Очистить дерево" << endl;
        cout << "4.Информация" << endl;
        cout << "5.Выход" << endl;
        cout << "-------------" << endl;
        cout << "Введите номер действия:";
        cin >> m;
        cout << "-------------------------" << endl;
 
        switch (m)
        {
        case 1: {int s;
            do
            {
                cout << "\n**///Выбор формирования дерева///**" << endl;
                cout << "1.Ввод с клавиатуры" << endl;
                cout << "2.Чтение из файла" << endl;
                cout << "3.Заполнение случайными числами" << endl;
                cout << "4.Вернуться в предыдущее меню" << endl;
                cout << "Введите номер действия:";
                cin >> s;
                cout << "-------------------------" << endl;
                switch (s)
                    {
                case 1: {do
                    
                {
                    cout << "Введите количество элементов: " << endl;
                    cin >> n;
                    k = 1;
                    for (int i = 0; i< n; i++) {
                        cout << "Введите узел " << i + 1 << ": ";
                        cin >> a;
                        root = addnode(a, root);
                        
                    };
 
                } while (k == n); break; };
                case 2: {   f = fopen("f.txt", "r"); 
                    //while (feof(f) == 0) 
                    int n = 5;
                    fread(&n, sizeof(n), 1, f);
                    for (int i = 0; i < n; i++)
                    {
                        
                        addnode(n, Root); break;
                    };
                    fclose(f); break; };
 
                case 3: {cout << "Введите количество элементов: ";
                    cin >> p;
                    Random(root, p); break;
                    root = addnode(p, root); };
                case 4: {; break; };
                default: {cout << "Выбор не верен!\n"; break; };
                };
            } while (s != 4); break; };
        
        case 2: {cout << "\n<<БИНАРНОЕ ДЕРЕВО>>" << endl; treeprint(root); break; };
        case 3: {freemem(root); cout << "\nДерево пустое!!!!!\n"; break; };
        case 4: {cout << "Сортировка бинарным деревом\n" << endl; break; };
        case 5: {cout << "Работа будет завершена\n" << endl; break; };
        default: {cout << "Выбор не верен!\n"; break; };
        };
    }
    while (m != 5);
 
    cin.get();  cin.get();
    return 0;
}
Подскажите пожалуйста, что не правильно и как исправить
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.01.2016, 13:36
Ответы с готовыми решениями:

Почему ввод переменной из файла не работает?
Доброго времени суток! :senor: Не могу найти подходящую тему для обсуждения, а в правильности создания новой сомневаюсь. Поэтому напишу...

почему не работает ввод из файла? что нужно исправть??
почему не работает ввод из файла? что нужно исправть?? помогите! Program Matrix; const m=15; n=10; {размерности массивов}...

Что работает быстрее, ввод с консоли или ввод с файла?
вводятся множество списков программа удаляет первое число списка и удаляет все числа в этом списке если встречается 1. потом она их...

1
337 / 185 / 80
Регистрация: 22.08.2013
Сообщений: 724
22.01.2016, 14:06
Цитата Сообщение от Dokergl Посмотреть сообщение
case 2 в меню
Что ты там, собственно, читаешь из файла?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.01.2016, 14:06
Помогаю со студенческими работами здесь

Ввод структурированных данных в файл и вывод данных из этого файла на экран (сделать хранилище данных в файле)
Здравствуйте) помогите написать программу, осуществляющую ввод структурированных данных в файл и вывод данных из этого файла на экран...

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

Структуры. Файловый ввод вывод. Почему не работает программа ?
Задача: В зараннее написанном текстовом документе имеются фамилии учеников и их оценки. Нужно прочитать этот текстовый файл, вывести его и...

Пропускает ввод данных в консоли. Не работает часть кода. Пропускает ввод фио
Добрый день! Помогите пожалуйста! В void add_dinamo() пропускает cout&lt;&lt;&quot;ФИО: \t&quot; ; cin.getline(b.fio, 49); а дальше...

Реализовать ввод данных из файла, просмотр входных и выходных данных
помогите пожалуйста с вот этой программой создать программный комплекс, реализующий ввод данных из файла, просмотр входных и выходных...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru