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

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

Войти
Регистрация
Восстановить пароль
 
UltimateDoker
1 / 1 / 1
Регистрация: 17.03.2015
Сообщений: 114
#1

Вносит неправильные данные в структуру - C++

18.05.2015, 01:36. Просмотров 166. Ответов 0
Метки нет (Все метки)

Код вроде бы элементарный, но когда запускаю протестировать и ввожу с клавиатуры какие-либо данные в стек, на выходе получаю "ММММММММММ" и ничего более, по отладке так же не смог определить место возникновения ошибки
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
#include <iostream>
#include <conio.h>
#include <iostream>
#include <fstream>
#include <string>
#include <cstring>
using namespace std;
 
struct stek
{
    char* d;
    struct stek *next; // указатель на следующий элемент списка (стека)
};
 
void push(stek* &next, string d);  // функция будет помещать элемент в стек
// next – указатель на вершину стека
string pop(stek* &next);           // функция будет извлекать элемент их стека
// вершина которого - next
void print(stek* &next);
bool isEmpty(stek* &next);
void TopToTop(stek* &next, stek* &tek);
void inputSt(stek* &next);
void reshenie(stek* &first, stek* &second, stek* &third);
void destroy(stek* &first);
 
 
void push(stek* &next, char* d)
{
    stek *pv = new stek;      // объявляем новую динамическую переменную типа stek
    pv->d = d;                // записываем  значение, которое помещается в стек
    pv->next = next;          // связываем новый элемент стека с предыдущим
    next = pv;                // новый элемент стека становится его вершиной
}
 
string pop(stek* &next)
{
    string temp = next->d;     // извлекаем в переменную temp значение в вершине стека
    stek *pv = next;        // запоминаем указатель на вершину стека, чтобы затем
    // освободить выделенную под него память
    next = next->next;      // вершиной становится предшествующий top элемент
    delete pv;              // освобождаем память, тем самым удалили вершину
    return temp;            // возвращаем значение, которое было в вершине
}
bool isEmpty(stek* &next){
    if (next == NULL){
        return true;
    }
    else { return false; }
}
 
void print(stek* &next){
    stek *dop = 0;
    while (!isEmpty(next)){
        cout << "            " << next->d << endl;
        push(dop, next->d);
        pop(next);
    }
    while (!isEmpty(next)) TopToTop(dop, next);
    if (isEmpty(next)){ cout << "Данных нет" << endl; }
}
 
void TopToTop(stek* &next, stek* &tek){
        push(tek, next->d);
        pop(next);
    return;
}
void inputSt(stek* &next){
    int kol=0;
    char TEK[10];
    while (true){
        cout << "Введите слово (Или ** для остановки): " << endl;
        cin >> TEK;
        if (strncmp(TEK,"**",2)==0) { break; }
        else {
            push(next, TEK);
            kol++;
        }
    }
    cout << "Создан стек из " << kol << " элементов." << endl;
}
 
void reshenie(stek* &first, stek* &second, stek* &third){
    int Sum = 0, N = 0, dlina;
    bool rel;
    stek *dopol = 0;
    if (!isEmpty(first)) {
        while (!isEmpty(first)){
            dlina = strlen(first->d);
            rel = false;
            if (first->d[0] == first->d[dlina - 1]){ rel = true; }
            if (rel == true) {
                push(third, first->d);
                pop(first);
            }
            else { TopToTop(first, dopol); };
        }
        while (!isEmpty(dopol)) TopToTop(dopol, first);
    }
    if (second) {
        while (second){
            dlina = strlen(second->d);
            rel = false;
            if (second->d[0] == second->d[dlina - 1]){ rel = true; }
            if (rel == true) {
                push(third, second->d);
                pop(second);
            }
            else { TopToTop(second, dopol); };
        }
 
        while (!isEmpty(dopol)) TopToTop(dopol, second);
    }
    return;
}
void destroy(stek* &first){
    while (!isEmpty(first)){
        pop(first);
    }
}
int main()
{
    setlocale(LC_ALL, "Russian");
    stek *first = 0;
    stek *second = 0;
    stek *third = 0;
    string test;
    char ch;
    do {
        cout << "V - Вывод, D - Ввод, E - Выход, C - Очистка стеков; Ваш выбор?  " << endl;
        cin >> ch;
        switch (ch)
        {
            //--------------------------------------------------------------------------------------
        case 'V': 
            cout << "Первый стек: " << endl;
            print(first);
            cout << "Второй стек: " << endl;
            print(second);
            system("pause");
            system("cls");
            break;
            //--------------------------------------------------------------------------------------
        case 'D': 
            cout << "Введите слова для первого стека: " << endl;
            inputSt(first);
            cout << "Введите слова для второго стека: " << endl;
            inputSt(second);
            system("pause");
            system("cls");
            break;
            //--------------------------------------------------------------------------------------
        case 'C':
            destroy(first); destroy(second); destroy(third);
            cout << "Все стеки очищены!" << endl;
            system("pause");
            system("cls");
            break;
            //--------------------------------------------------------------------------------------
        case 'E':
            return 0;
            break;
            //--------------------------------------------------------------------------------------
        default:
            cout << "Такой команды не существует";
            system("pause");
            system("cls");
            break;
        }
    } while (true);
    system("pause");
    return 0;
}
Добавлено через 1 час 21 минуту
Проблему решил, она была в 11 строчке, передавался указатель.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2015, 01:36
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Вносит неправильные данные в структуру (C++):

Занести данные в структуру из файла - C++
Добрый день. Есть структура с данными о клиенте фирмы. В файле содержится информация про клиента: Имя,Фамилия,номер телефона...Как сделать...

Не записываются данные из файла в структуру - C++
ф-ция из файла считывает правильно, но почему-то в структуру не записывает #include&lt;iostream&gt; #include&lt;fstream&gt; using namespace...

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

Из файла записать данные в структуру данных - C++
Скажите пожалуйста, как можно из файла записать данные в структуру данных? Я пробую fread, он не так работает Добавлено через 15 минут...

В програме опишите структуру, содержащую данные - C++
В програме опишите структуру, содержащую данные о домашнем адресе (улица,номер дома и квартиры).Создайте экземпляр такой структуры и...

Создать структуру Hotel, содержащую следующие данные - C++
Решите следующую задачу, используя структуры. При решении задач использовать функции: Создать структуру Hotel, содержащую...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.05.2015, 01:36
Привет! Вот еще темы с ответами:

Записать\прочесть данные в\из бинарного файла в инкапсулированну структуру - C++
Здравствуйте форумчане. Как записать\прочесть данные в\из бинарного файла в инкапсулированну структуру такого вида? struct obj { ...

Объявить структуру содержащую данные для построения круга - C++
Задача: описать переменную, которая содержит все данные для построения круга в декартовой системе координат. Записать в файл информацию о...

Описать структуру Animal, которая содержит данные о животном - C++
Помогите пожалуйста, очень нужно решении вот такой задачи: объявите структуру Animal, которая должна содержать следующие данные о...

Создать структуру, которая содержит данные о наличии путевок в турагенстве - C++
Уважаемые жители форума, стоит следующее задание. Надеюсь кто то поможет, а то пропустил лекции, а в гугл что то не помогает. Создать...


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

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

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