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

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

Войти
Регистрация
Восстановить пароль
 
Vincent_Low
0 / 0 / 0
Регистрация: 12.01.2013
Сообщений: 9
#1

Есть код на C и нужно его перевести на C++ - C++

16.06.2014, 19:56. Просмотров 285. Ответов 1
Метки нет (Все метки)

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
#include <stdio.h>
#include <stdlib.h>
 
typedef struct node_t
{
int value;
struct node_t* next;
} TNode;
 
typedef struct queue_t
{
TNode* head;
TNode* tail;
} TQueue;
 
//-----------------------------------------------------------------------------
TQueue* Push(TQueue* queue, int value)
{
TNode* node = (TNode*) malloc(sizeof(TNode));
node->value = value;
node->next = NULL;
 
if (queue->head && queue->tail)
{
queue->tail->next = node;
queue->tail = node;
}
else
{
queue->head = queue->tail = node;
}
 
return queue;
}
//-----------------------------------------------------------------------------
int Pop(TQueue* queue)
{
int value = 0;
 
if (queue->head)
{
value = queue->head->value;
queue->head = queue->head->next;
}
 
return value;
}
//-----------------------------------------------------------------------------
int Find(TQueue* queue, int value)
{
TNode* node = queue->head;
 
int i = 0;
for (; node && (node->value != value); node = node->next)
{
i++;
}
 
return node ? i : -1;
}
//-----------------------------------------------------------------------------
void Print(const TQueue* queue)
{
const TNode* node = queue->head;
 
for (; node; node = node->next)
{
printf("%d ", node->value);
}
printf("\n");
}
//-----------------------------------------------------------------------------
 
int main()
{
TQueue queue = {NULL, NULL};
 
printf("Queue operations:\n"
" 1. Push element\n"
" 2. View list\n"
" 3. Pop element\n"
" 4. Search element\n"
" any other for quit\n");
 
int quit = 0;
int value;
 
while (!quit)
{
printf("command> ");
fflush(stdin);
 
switch (getchar())
{
case '1':
printf("element> ");
if (scanf("%d", &value))
{
Push(&queue, value);
}
break;
 
case '2':
Print(&queue);
break;
 
case '3':
printf("popped: %d\n", Pop(&queue));
break;
 
case '4':
printf("search> ");
if (scanf("%d", &value))
{
int pos = Find(&queue, value);
 
if (pos != -1)
{
printf("%d position\n", pos + 1);
}
else
{
printf("element %d not found\n", value);
}
}
break;
 
default:
quit = 1;
}
}
 
return 0;
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.06.2014, 19:56     Есть код на C и нужно его перевести на C++
Посмотрите здесь:
Есть код, нужно перевести на долее понятливый(простой язык) C++
есть код на Delphi нужно реализовать его на C++ C++
есть код и есть ошибка нужно найти дырку C++
C++ Перевести код с Pascal в С++(и там одна ошибка есть)
C++ Нужно перевести из C# в C++, или написать код на c++ с нуля
C++ Есть текст программы по C++ нужно его переделать
Есть код нужно исправить ошибки C++
C++ Транслитерировать! код есть, нужно найти ошибку
Есть строка. Нужно в строке найти слово и его подменить C++
Работа с структурой в С++ (код есть, нужно немного доработать) C++
C++ Есть файл написанный в borland 3.1. Мне его нужно открыть и откомпилировать.
C++ Имеется код программы, выводящий список автобусов из файла, нужно разъяснить его

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Issues
430 / 365 / 37
Регистрация: 06.08.2012
Сообщений: 961
16.06.2014, 22:23     Есть код на C и нужно его перевести на C++ #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Vincent_Low,
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
#include <iostream>
 
class TQueue
{
private:
    struct TNode {
        int value;
        TNode* next;
    };
 
    TNode* head;
    TNode* tail;
public:
    TQueue(): head(NULL), tail(NULL)
    { }
 
    void Push(int value) {
        TNode* node = new TNode;
 
        node->value = value;
        node->next = NULL;
        
        if (head && tail)
        {
            tail->next = node;
            tail = node;
        }
        else
        {
            head = tail = node;
        }
    }
    
    int Pop()
    {
        int value = 0;
        
        if (head)
        {
            value = head->value;
            head = head->next;
        }
        return value;
    }
    
    int Find(int value)
    {
        TNode* node = head;
        int i = 0;
        
        for (; node && (node->value != value); node = node->next) {
            i++;
        }
        return node ? i : -1;
    }
    
    void Print()
    {
        const TNode* node = head;
        
        for (; node; node = node->next) {
            std::cout << node->value;
            std::cout << std::endl;
        }
    }
 
};
 
int main()
{
    TQueue queue;
    
    std::cout << "Queue operations:\n" 
              <<" 1. Push element\n"
              <<" 2. View list\n"
              <<" 3. Pop element\n"
              << " 4. Search element\n"
              << " any other for quit\n";
    
    int quit = 0;
    int value;
    
    while (!quit)
    {
        std::cout << "command> ";
        fflush(stdin);
        
        switch (getchar())
        {
        case '1':
            printf("element> ");
            if (scanf("%d", &value))
            {
                queue.Push(value);
            }
            break;
        case '2':
            queue.Print();
            break;
        case '3':
            std::cout << "popped: ", queue.Pop();
            break;
        case '4':
            std::cout << "search> ";
            if (std::cin >> value)
            {
                int pos = queue.Find(value);
                if (pos != -1)
                {
                    std::cout << pos+1 << " position\n";
                }
                else
                {
                    std::cout << "element " << value << " not found\n";
                }
            }
            break;
        default:
            quit = 1;
        }
    }
    
    return 0;
}
Ответ Создать тему
Опции темы

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