Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
Natusi4ek
0 / 0 / 0
Регистрация: 22.01.2010
Сообщений: 10
1

Однонаправленный список: получить сумму значений элементов списка, принадлежащих заданному отрезку

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

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

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

Вычислить произведение элементов массива, принадлежащих заданному отрезку
В одномерном массиве, состоящем из N целых чисел, вычислить: 1. индекс минимального элемента;...

Получить сумму членов, принадлежащих отрезку
Помогите с задачей: Даны натуральное число n,действительные числа x1..xn.В последовательности...

Вычислить сумму и количество элементов массива принадлежащих отрезку [0,1]
помогите с решением пожалуйста:-[

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

Определить сумму и количество элементов массива принадлежащих заданному промежутку
Дан массив размерностью в 25 элементов. Заполнить массив случайными числами от -20 до 50....

2
ISergey
Maniac
Эксперт С++
1414 / 924 / 149
Регистрация: 02.01.2009
Сообщений: 2,754
Записей в блоге: 1
17.02.2010, 11:17 2
Так вам помочь или тупо написать за вас задачу?
0
easybudda
Модератор
Эксперт CЭксперт С++
10148 / 6055 / 1522
Регистрация: 25.07.2009
Сообщений: 11,478
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

Реализуйте однонаправленный список.Режим сортировки элементов списка без перестановки самих элементов
Реализуйте задание .В каждом из вариантов должно быть реализованы следующие режимы работы:...

Однонаправленный список из квадратов отрицательных элементов первого списка
Создать однонаправленный список действительных чисел, который может содержать как положительные так...

Однонаправленный список элементов (удвоить каждый элемент списка)
Сформировать однонаправленный список элементов типа char и написать программу следующих операций...


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

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

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