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

В main работает в func нет - C++

Восстановить пароль Регистрация
 
D.o.c.t.o.r
4 / 4 / 0
Регистрация: 10.09.2010
Сообщений: 53
13.09.2010, 20:05     В main работает в func нет #1
Подскажите, пожалуйста, уважаемые форумчане. Код функции create(), будучи вставленным в main, работает безошибочно, но стоит ему оказаться на своем месте (в месте функции), так после ввода первого элемента программа виснет.

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
//---------------------------------------------------------------------------
// Подключаемые библиотеки
#include <vcl.h>
#include <tchar.h>
#include <iostream.h>
#pragma hdrstop
#pragma argsused
 
// Прототипы функций
void create(void);
void print(void);
 
// Структуры
struct tfll
{
    int key;
    tfll *prev,*next;
};
 
// Глобальные переменные
static tfll *first;
 
void create()
{
    int i = 0;
    char cTemp;
    tfll *p,*temp;
    cout << "\n";
    cTemp = 'i';
    while (cTemp != 'n')
    {
        cout << "Do you want to create another element (y/n): ";
        cin >> cTemp;
        if (cTemp == 'y')
        {
            temp = p;
            p = new tfll;
            cout << "Enter the key of i = " << i << " element \n";
            cin >> p->key;
            p->prev = temp;
            temp->next = p;
            if (i == 0)
            {
                p->prev=NULL;
                first = p;
                i++;
                continue;
            }
            i++;
        }
        if (cTemp == 'n')
        {
            p->next = NULL;
        }
    }
}
 
void print()
{
    tfll* p;
    p = first;
    while(1)
    {
        cout << p->key << "\n";
        p = p->next;
    }
 
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    int nImputValue,nTempValue;
 
    cout << "Menu:\n\n";
    // Ввод  информации
    cout << "1. Information input\n";
    // Вывод информации на экран
    cout << "2. The conclusion of the information to the screen\n";
    // Поиск информации
    cout << "3. Information search\n";
    // Добавление информации
    cout << "4. Information addition\n";
    // Удаление информации
    cout << "5. Information removal\n";
    // Сохранение информации в файле
    cout << "6. Information preservation in a file\n";
    // Считывание информации из файла
    cout << "7. Reading of the information from a file\n";
    // Выход
    cout << "8. Exit\n\n";
 
    while (nImputValue != 8)
    {
        cout << "Enter your choise:\n";
        cin >> nImputValue;
 
        switch (nImputValue)
        {
            case 1:
                create();
                break;
            case 2:
                // Функция 2
                print();
                break;
            case 3:
                // Функция 3
                break;
            case 4:
                // Функция 4
                break;
            case 5:
                // Функция 5
                break;
            case 6:
                // Функция 6
                break;
            case 7:
                // Функция 7
                break;
            default:
                cout << "Enter number from a spectrum [1;8]\n";
        }
        cout << "\n";
    }
 
    cout << "Enter some key to the end of program\n";
    cin >> nTempValue;
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.09.2010, 20:05     В main работает в func нет
Посмотрите здесь:

C++ int * & func();
Выручайте (massivs & func) C++
int main() VS void main() C++
Что означает func(int = 0)? C++
C++ От void main() к int main()
C++ Не работает функция вывода в main()
C++ Надо написать с использованием func функции
Какой новые синтаксис: int main() VS. void main() C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Andrew_Lvov
Эксперт C++
 Аватар для Andrew_Lvov
259 / 189 / 5
Регистрация: 19.08.2010
Сообщений: 758
Записей в блоге: 1
13.09.2010, 20:29     В main работает в func нет #2
C++
1
2
                        temp = p;
                        p = new tfll;
В первой инструкции вы просите темп указывать на то же, на что в данный момент указывает р. То есть, в никуда.
Во второй инструкции вы просите р указывать на новосозданную переменную типа тф11. Поэтому, теперь р указывает на новосозданный объект; а темп ... правильно, дальше в никуда.
D.o.c.t.o.r
4 / 4 / 0
Регистрация: 10.09.2010
Сообщений: 53
13.09.2010, 21:22  [ТС]     В main работает в func нет #3
Исправил на следующий код:
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
//---------------------------------------------------------------------------
// Подключаемые библиотеки
#include <vcl.h>
#include <tchar.h>
#include <iostream.h>
#pragma hdrstop
#pragma argsused
 
// Прототипы функций
void create(void);
void print(void);
 
// Структуры
struct tfll
{
    int key;
    tfll *prev,*next;
};
 
// Глобальные переменные
static tfll *first;
 
void create()
{
    int i = 0;
    char cTemp;
    tfll *p,*temp;
    cout << "\n";
    cTemp = 'i';
    while (cTemp != 'n')
    {
        cout << "Do you want to create element (y/n): ";
        cin >> cTemp;
        if (cTemp == 'y')
        {
            p = new tfll;
            cout << "Enter the key of i = " << i << " element \n";
            cin >> p->key;
            if (i > 0)
            {
                p->prev = temp;
                temp->next = p;
            }
            if (i == 0)
            {
                p->prev=NULL;
                first = p;
                i++;
                temp = p;
                continue;
            }
            temp = p;
            i++;
        }
        if (cTemp == 'n')
        {
            p->next = NULL;
        }
    }
}
 
void print()
{
    tfll* p;
    p = first;
    while(p != NULL)
    {
        cout << p->key << "\n";
        p = p->next;
    };
 
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    int nImputValue = 0;
    int nTempValue = 0;
 
    cout << "Menu:\n\n";
    // Ввод  информации
    cout << "1. Information input\n";
    // Вывод информации на экран
    cout << "2. The conclusion of the information to the screen\n";
    // Поиск информации
    cout << "3. Information search\n";
    // Добавление информации
    cout << "4. Information addition\n";
    // Удаление информации
    cout << "5. Information removal\n";
    // Сохранение информации в файле
    cout << "6. Information preservation in a file\n";
    // Считывание информации из файла
    cout << "7. Reading of the information from a file\n";
    // Выход
    cout << "8. Exit\n\n";
 
    while (nImputValue != 8)
    {
        cout << "Enter your choise:\n";
        cin >> nImputValue;
 
        switch (nImputValue)
        {
            case 1:
                create();
                break;
            case 2:
                // Функция 2
                print();
                break;
            case 3:
                // Функция 3
                break;
            case 4:
                // Функция 4
                break;
            case 5:
                // Функция 5
                break;
            case 6:
                // Функция 6
                break;
            case 7:
                // Функция 7
                break;
            case 8:
                break;
            default:
                cout << "Enter number from a spectrum [1;8]\n";
        }
        cout << "\n";
    }
 
    cout << "Enter some key to the end of program\n";
    cin >> nTempValue;
    return 0;
}
Работает, однако, когда работает принт, то первым элементом он печатает двойку и этот элемент лишний (печатает i + 1 элементов)
Yandex
Объявления
13.09.2010, 21:22     В main работает в func нет
Ответ Создать тему
Опции темы

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