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

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

Войти
Регистрация
Восстановить пароль
 
D.o.c.t.o.r
4 / 4 / 0
Регистрация: 10.09.2010
Сообщений: 53
#1

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

13.09.2010, 20:05. Просмотров 389. Ответов 2
Метки нет (Все метки)

Подскажите, пожалуйста, уважаемые форумчане. Код функции 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.09.2010, 20:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос В main работает в func нет (C++):

Не работает функция вывода в main() - C++
вот кусок кода, где не работает первый printf(Rus(&quot;Выбери тип календаря&quot;)); - точнее не выводится в консоли. void main() { int q=0,...

Какая разница между int main и void main? - C++
какая разница между (int main) i (void main)?

Какой новые синтаксис: int main() VS. void main() - C++
Долго не занимался программированием , но тут жена решила поучится , да и сам повторить ,так вот столкнулся с такой темой на 4pda может...

int * & func(); - C++
int * &amp; func(); What is func? 1. A function that returns pointer to type &quot;int&amp;&quot;. 2. A function that returns reference to type...

Void func(char *); - C++
Помогите пожалуйста.Не могу понять как она работает и что она может принимать(т.к. самой переменной нет) : void func(char *); ...

Почему в одних случаях пишут void main(), а в других случаях int main() {return 1;} - C++
Препод мне доказывает, что void в main`е писать неправильно, а объяснить не может почему. Кто расскажет?)

2
Andrew_Lvov
Эксперт С++
259 / 189 / 5
Регистрация: 19.08.2010
Сообщений: 760
Записей в блоге: 1
13.09.2010, 20:29 #2
C++
1
2
                        temp = p;
                        p = new tfll;
В первой инструкции вы просите темп указывать на то же, на что в данный момент указывает р. То есть, в никуда.
Во второй инструкции вы просите р указывать на новосозданную переменную типа тф11. Поэтому, теперь р указывает на новосозданный объект; а темп ... правильно, дальше в никуда.
1
D.o.c.t.o.r
4 / 4 / 0
Регистрация: 10.09.2010
Сообщений: 53
13.09.2010, 21:22  [ТС] #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 элементов)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.09.2010, 21:22
Привет! Вот еще темы с ответами:

От void main() к int main() - C++
Ребят, недавно начал обучаться программированию на cpp на Windows. Перешёл на Mac ( Да, знаю, что никто его не любит и не уважает здесь, но...

int main() VS void main() - C++
Вот товарищ Герберт Шилдт считает, что функция main() должна вид int main() { return 0; } Т.е. в случае удачи выполнения...

Void main or Int main - C++
Как правильнее использовать void или int в main? И обязательно возвращать return 0 в конце программы?

Func(std::move(.) копирует ? - C++
Здравствуйте, имеется следующий код: void foo(std::vector&lt;int&gt;&amp;&amp; v) { std::cout &lt;&lt; &quot;vector is taken&quot; &lt;&lt; std::endl; ...


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

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

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