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

написать программу для удаления положительных элементов очереди - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Структура в структуре!!! http://www.cyberforum.ru/cpp-beginners/thread152870.html
Написать cписок кварталов города, с разбитием по районам. Количество районов и кварталов в каждом районе по 3.(Turbo C)
C++ Создать шаблонный класс-контейнер помогите срочно у меня задание оч нужнно Создать шаблонный класс-контейнер Array, который представляет собой массив, позволяющий хранить объекты заданного типа. Класс должен реализовывать следующие функции: GetSize - получение размера массива (количество элементов, под которые выделена память) SetSize(int size, int grow = 1) - установка размера массива (если параметр size больше... http://www.cyberforum.ru/cpp-beginners/thread152863.html
C++ Компилятор для примеров из книги по С++
Я начал читать книгу "Джесс Либерти - Освой самостоятельно С++ за 21 день". Выбрал компилятор Borland C++ Builder 6, но сним возникли проблемы :( Подскажите какой нибудь компилятор для примеров из этой книги? (Если есть лучше русские версии)
C++ Ошибка: correctly?! Skipping... Nothing to be done
Выдает ошибку: correctly?! Skipping... Nothing to be done. Что делать???
C++ Определить манипулятор http://www.cyberforum.ru/cpp-beginners/thread152835.html
Что-то часто я тут начал писать... Но тем не менее... Задание определить манипулятор, который игнорирует все запятые и точки до конца строки. Немножко вошел в шок. Как это сделать? Как я понимаю нужно самому написать манипулятор. Поискал по книге примеры. Нашел один. //Игнорирует все символы до конца строки template <class charT, class traits> inline...
C++ Добавить воскл знак в конец каждой строки в файле. С++ но с использованием функций С. Вообщем есть такое задание. Делал давно. Вот что получилось: #include <iostream> #include <cstring> #include <cstdlib> using namespace std; int main() { int i=0; подробнее

Показать сообщение отдельно
Prosroma
0 / 0 / 0
Регистрация: 31.03.2010
Сообщений: 28
10.07.2010, 16:05  [ТС]     написать программу для удаления положительных элементов очереди
Цитата Сообщение от Nameless One Посмотреть сообщение
Вот это и есть ключевое слово. Тебе нужна очередь, реализованная в виде связного линейного списка. Пользуйся форумом, где-то здесь подобная тема уже была.
Спасибо,нашел такую же задачу как у меня Но вот проблема,нужно этот код переделать под себя,но как
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
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <ctype.h>
#include <limits.h>
 
typedef struct NODE {
        long val;
        struct NODE * next;
} node_t;
 
node_t * new_node(long val, node_t * last){
        node_t * n;
        if ( ( n = (node_t*)malloc(sizeof(node_t)) ) == NULL )
                return NULL;
        n->val = val;
        n->next = NULL;
        if ( last )
                last->next = n;
        return n;
}
 
int insert_after(node_t * prev, long val){
        node_t * n;
        if ( ! prev )
                return -1;
        if ( ( n = (node_t*)malloc(sizeof(node_t)) ) == NULL )
                return -1;
        n->val = val;
        n->next = prev->next;
        prev->next = n;
        return 0;
}
 
/* возвращает указатель на структуру, после которой не получилось добавить элемент,
   или NULL если ошибок небыло */
node_t * add_abs(node_t * n){
        node_t * a;
        while ( n ){
                if ( n->val < 0 ){
                        if ( insert_after(n, n->val * -1) )
                                break;
                }
                n = n->next;
        }
        return n;
}
 
void print_nodes(const node_t * n, int width){
        while ( n ){
                printf("%*ld\n", width, n->val);
                n = n->next;
        }
}
 
void delete_nodes(node_t * n){
        node_t * t;
        while ( n ){
                t = n->next;
                free(n);
                n = t;
        }
}
 
/* возвращает 0 если в *pNum удалось поместить число,
   1 если ввод закончен, и -1 в случае ошибки */
int get_num(long * pNum){
        static char buf[BUFSIZ] = { 0 };
        char * tail;
        printf("Number: ");
        if ( ! fgets(buf, BUFSIZ, stdin) ){
                fprintf(stderr, "Can't get string.\n");
                return -1;
        }
        if ( *buf == '\n' )
                return 1;
        if ( ! isdigit(*buf) && *buf != '-' && ! isspace(*buf) ){
                fprintf(stderr, "Not a number.\n");
                return -1;
        }
        *pNum = strtol(buf, &tail, 10);
        if ( errno == ERANGE ){
                if ( *pNum == LONG_MAX )
                        fprintf(stderr, "Too big.\n");
                else
                        fprintf(stderr, "Too small.\n");
                errno = 0;
                return -1;
        }
        if ( ! isspace(*tail) ){
                fprintf(stderr, "Only digits allowed.\n");
                return -1;
        }
        return 0;
}
 
/* Описать функцию, которая за каждым отрицательным элементом очереди вставляет элемент,
        содержащий его значение по модулю. */
 
#define WIDTH 10
 
int main(void){
        node_t * first, * last;
        long val;
        int ret;
 
        first = last = NULL;
        printf("Enter some numbers. Empty string - finish.\n");
        while ( 1 ){
                if ( ! ( ret = get_num(&val) ) ){
                        if ( ( last = new_node(val, last) ) == NULL ){
                                fprintf(stderr, "Memory or another error.\n");
                                if ( first )
                                        delete_nodes(first);
                                exit(EXIT_FAILURE);
                        }
                        if ( ! first )
                                first = last;
                }
                else if ( ret == -1 )
                        fprintf(stderr, "Wrong number! Try another one...\n");
                else
                        break;
        }
 
        if ( ! first ){
                fprintf(stderr, "No values in list.\n");
                exit(EXIT_FAILURE);
        }
 
        printf("\nEntered values:\n");
        print_nodes(first, WIDTH);
 
        if ( last = add_abs(first) ){
                fprintf(stderr, "Can't add absolute value after %ld\n", last->val);
                delete_nodes(first);
                exit(EXIT_FAILURE);
        }
 
        printf("\nValues with added absolute if needed:\n");
        print_nodes(first, WIDTH);
 
        delete_nodes(first);
        exit(EXIT_SUCCESS);
}
 
Текущее время: 10:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru