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

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

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

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

13.09.2010, 20:05. Просмотров 373. Ответов 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.09.2010, 20:05     В main работает в func нет
Посмотрите здесь:

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

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...

Выручайте (massivs & func) - C++
Вообщем пропустил занятие и не могу одолеть массивы! Хелп ми пипл плизззз! Ввести 2 массива содержащих 6 и 7 компонентов соответственно....

Надо написать с использованием func функции - C++
Надо написать с помощью функции срочно пожалуйста полностью программу завтра сдавать y=((pow(x,3)+2*a*x)/(sqrt(x+3))+3+x*3)/pow(x-1,2);

Функция func должна вернуть количества элементов - C++
Написать реализацию перегрузки функции int func(int * arr, int lenght) int func(double * arr, int length) Функция func должна...

Подскажите метод, как вызывать get<n>(func)(x) n раз. Код внутри - C++
Создаю композитор функций с переменным числом параметров h(x,z) = f(x, g(g1(z),g2(z)),g11(z),...,gn(z)): template&lt;typename ... F&gt; ...

С char* работает, а с string нет. - C++
Как можно сделать так чтобы использовать вместо char* - string. Добавляя #include &lt;string&gt; string name; все равно ошибка...

Без ссылки - работает, а с - нет. - C++
Вот код: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; class String { private: char...

Посмотрите работает или нет. - C++
Посмотрите работает или нет. Ошибок не выдает и предупреждений тоже, а вот работать не хочет. Может у меня компилятор навернулся. С++...

Рекурсия - работает, нет результата - C++
Всем привет. У меня есть программа которая предназначена для Задан массив целых. Построить из них любую последовательность таким образом,...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Andrew_Lvov
Эксперт С++
259 / 189 / 5
Регистрация: 19.08.2010
Сообщений: 760
Записей в блоге: 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 элементов)
Ответ Создать тему
Опции темы

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