Форум программистов, компьютерный форум 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; подробнее

Показать сообщение отдельно
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
10.07.2010, 18:30     написать программу для удаления положительных элементов очереди
Цитата Сообщение от Prosroma Посмотреть сообщение
Можеш помочь
Я столько всего могу - временами самому страшно
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
#include <stdio.h>
#include <stdlib.h>
 
typedef struct NODE {
    int val;
    struct NODE * prev;
    struct NODE * next;
} node_t;
 
node_t * new_node(int val){
    node_t * n;
    if ( ( n = (node_t*)malloc(sizeof(node_t)) ) == NULL )
        return NULL;
    n->val = val;
    n->prev = NULL;
    n->next = NULL;
    return n;
}
 
/* удаляет элемент, возвращает указатель на следующий */
node_t * del_node (node_t * n){
    node_t * ret = n->next;
    if ( n->prev )
        n->prev->next = n->next;
    if ( n->next )
        n->next->prev = n->prev;
    free(n);
    return ret;
}
 
void clear_list(node_t * n){
    while ( n = del_node(n) )
        ;
}
 
/* удаляет элементы, соответствующие условию, возвращает указатель на первый элемент обработанного списка */
node_t * remove_if(node_t * n, int (*test_func)(const node_t * nodeToTest)){
    node_t * first = n;
    while ( first && test_func(first) )
        first = del_node(first);
    if ( ! first )
        return NULL;
    for ( n = first->next; n != NULL; ){
        if ( test_func(n) )
            n = del_node(n);
        else
            n = n->next;
    }
    return first;
}
 
int is_positive(const node_t * n){
    return ( n->val > 0 );
}
 
node_t * create_list(void){
    node_t * first, * last, * current;
    static char buf[32] = { 0 };
    
    first = last = NULL;
    
    printf("Enter some numbers (empty string - finish):\n");
    while ( fgets(buf, 32, stdin) ) {
        if ( *buf == '\n' )
            break;
        if ( ( current = new_node(atoi(buf)) ) == NULL ){
            if ( first )
                clear_list(first);
            return NULL;
        }
        if ( ! first ){
            first = current;
            last = first;
        }
        else {
            current->prev = last;
            last->next = current;
            last = current;
        }
    }
    return first;
}
 
void print_list(const node_t * n){
    while ( n ){
        printf("%d\n", n->val);
        n = n->next;
    }
}
 
int main(void){
    node_t * list;
    
    if ( ( list = create_list() ) == NULL ){
        fprintf(stderr, "Can't create list!\n");
        exit(EXIT_FAILURE);
    }
    printf("You have entered:\n");
    print_list(list);
 
    printf("Without positive elements:\n");
    if ( ( list = remove_if(list, is_positive) ) == NULL ){
        printf("No elements in list!\n");
    }
    else {
        print_list(list);
        clear_list(list);
    }
    
    exit(EXIT_SUCCESS);
}
Цитата Сообщение от Nameless One Посмотреть сообщение
все равно нужно будет перебирать все элементы списка.
Нужно будет - однозначно! Вопрос в том: сколько раз это прийдётся сделать...
 
Текущее время: 13:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru