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

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

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

однонаправленный список - C++

17.02.2010, 08:30. Просмотров 1004. Ответов 2
Метки нет (Все метки)

Ребятушки милые мои
Помогите решить задачу !!!

Даны натуральное число n и однонаправленный список, содержащий действительные числа x1,...,xn. Получить сумму значений элементов списка, принадлежащих отрезку [3,7], а также число таких элементов. В конец списка добавить звенья, содержащие получившиеся значения. Организо¬вать вывод начальной и конечной последовательности значений в спис¬ке.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.02.2010, 08:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос однонаправленный список (C++):

Добавить в список элемент после элемента с заданным инф.полем [Однонаправленный список] - C++
Вообщем есть: Функция создание списка Функции вывода на экран Функция добавление элемента с номером k А нужно ввести...

однонаправленный список - C++
Помогиде дописать программу. Формируется однонаправленный список, заполняется (int). теперь надо как то передрать его и удалить все...

Однонаправленный список - C++
Доброго времени суток! Помогите поправить программу(Однонаправленный список, удалить все положительные элементы кроме последнего). ...

однонаправленный список - C++
попалась веселая задачка. "построить функцию преобразующую заданный однонаправленный список в аналогичный список где элементты...

однонаправленный список - C++
Прошу помощи: 1.Написать функцию для создания списка. Функция может создавать пустой список, а затем добавлять в него элементы. ...

Однонаправленный список - C++
Организовать ввод в однонаправленный список. Узел списка состоит из двух полей: целое число и указатель. Необходимо удалить из списка...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ISergey
Maniac
Эксперт С++
1374 / 885 / 52
Регистрация: 02.01.2009
Сообщений: 2,658
Записей в блоге: 1
17.02.2010, 11:17 #2
Так вам помочь или тупо написать за вас задачу?
0
easybudda
Модератор
Эксперт CЭксперт С++
9625 / 5573 / 947
Регистрация: 25.07.2009
Сообщений: 10,708
17.02.2010, 15:52 #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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
/*
*   Даны натуральное число n и однонаправленный список, содержащий действительные числа x1,...,xn. 
*   Получить сумму значений элементов списка, принадлежащих отрезку [3,7], а также число таких элементов. 
*   В конец списка добавить звенья, содержащие получившиеся значения. Организовать вывод начальной и конечной 
*   последовательности значений в списке.
*/
 
typedef struct tagThing {
    int val;
    struct tagThing *next;
} Thing_t;
 
/* добавляет новый элемент к списку */
Thing_t *newThing(int val, Thing_t *last){
    Thing_t * t;
    if ( ( t = (Thing_t*)malloc(sizeof(Thing_t)) ) == NULL )
        return NULL;
    t->val = val;
    t->next = NULL;
    if ( last != NULL )
        last->next = t;
    return t;
}
 
/* печатает список по одному значению в строке */
void printThings(const Thing_t *first){
    while ( first ){
        printf("%d\n", first->val);
        first = first->next;
    }
}
 
/* удаляет весь список */
void removeThings(Thing_t *first){
    Thing_t *t;
    while ( first ){
        t = first->next;
        free(first);
        first = t;
    }
}
 
#define LO_BOUND 3
#define HI_BOUND 7
 
int main(void){
    Thing_t *head = NULL, *tail = NULL, *current = NULL;
    int tmp, cnt, sum, n;
    
    printf("Number of elements in list: ");
    if ( scanf("%d", &n) != 1 || n < 1 ) /* ошибка ввода, или недопустимое значение */
        exit(1);
    srand(time(NULL));
    
    /* создать список из n элементов со случайными значениями от 1 до 10 */
    while ( n-- ){
        tmp = rand() % 10 + 1;
        if ( ( tail = newThing(tmp, tail) ) == NULL ){
            printf("Can't create new thing!\n");
            exit(1);
        }
        if ( !head )
            head = tail;
    }
    
    /* вывод всех значений */
    printf("\nAll things:\n");
    printThings(head);
    
    /* подсчёт суммы и количества элементов со значениями LO_BOUND <= x <= HI_BOUND */
    cnt = sum = 0;
    for ( current = head; current != NULL; current = current->next ){
        if ( LO_BOUND <= current->val && current->val <= HI_BOUND ){
            sum += current->val;
            cnt++;
        }
    }
    printf("\n%d values between %d and %d\n", cnt, LO_BOUND, HI_BOUND);
    printf("Sum of them is %d\n", sum);
    
    /* добавить два значения к списку */
    if ( ( tail = newThing(cnt, tail) ) == NULL ){
        printf("Can't create new thing!\n");
        exit(1);
    }
    if ( ( tail = newThing(sum, tail) ) == NULL ){
        printf("Can't create new thing!\n");
        exit(1);
    }
    
    /* и снова вывести */
    printf("\nAll with some new:\n");
    printThings(head);
    
    /* очистка памяти и выход */
    removeThings(head);
    /* по просьбам трудящихся ;) */
    getchar();
    getchar();
    exit(0);
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.02.2010, 15:52
Привет! Вот еще темы с ответами:

Однонаправленный Список - C++
Как написать ф-ю добавления в конец элемента в однонаправленном списке?

Однонаправленный список - C++
Есть задание - перегрузка операций. Дается 3 штуки Однонаправленный список с элементами типа char доступ к элементу в...

однонаправленный список - C++
point* make_point( int n) { point *begin,*posl; posl=NULL; int i; for(i=0;i&lt;n;i++) { if(posl==NULL) { posl=new point;

Однонаправленный список - C++
Создать однонаправленную очередь с числами в диапазоне от –50 до +50. Удалить из очереди каждый второй элемент.В конце работы все очереди...


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

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

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