Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
olalalalalalala
0 / 0 / 0
Регистрация: 14.03.2017
Сообщений: 21
1

Найти сумму последнего и предпоследнего элементов списка, содержащего не менее двух элементов

09.04.2017, 11:57. Просмотров 827. Ответов 4
Метки нет (Все метки)

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

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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
  struct TNode {                
 
    int n;
 
    TNode *next;
 
  }  *start , *last ;
 
 
 void funkt1 (int m ) {         
 
   TNode *p;
 
   while (m!=0) {
 
     if (start==NULL) {     
 
       start= new TNode;
       start->n=random(100);
       start->next=NULL;
       last=start;
       printf(" %d ",start->n);
 
     }
 
     else {                
 
       p= new TNode;
       p->n=random(100);
       p->next=NULL;
       last->next=p;
       last=p;
       printf(" %d ",p->n);
 
     }
 
      m--;
 
    }
 
  return  ;
 
 }
 
 void funkt2 () {       
 
 int S=0;
 
 TNode *f;
 
 f=start;
 
 while ((f->next)->next!=NULL) 
 
  f=f->next;
 
 S= f->n + (f->next)->n ;     
 
printf("\n S=%d ",S);
 
return ;
 
}
 
int main() {
 
 randomize ();
 
 clrscr ();
 
 int L;
 
 printf("vvedute kol-vo elementov : ");
 scanf("%d",&L);
 
 funkt1 (L);
 
 funkt2 ();
 
 getch();
 
return 0 ;
 
}
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2017, 11:57
Ответы с готовыми решениями:

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

Найти сумму элементов массива, расположенных после последнего нуля (C++ -> Си)
В задании нужно найти сумму элементов расположенных после последнего элемента равного 0. Нужно...

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

Найти сумму элементов массива, расположенных после последнего элемента,равного нулю
Помогите разобраться с задачей (Найти сумму элементов массива, расположенных после последнего...

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

4
shvyrevvg
578 / 538 / 270
Регистрация: 12.05.2016
Сообщений: 1,563
09.04.2017, 14:10 2
Лучший ответ Сообщение было отмечено olalalalalalala как решение

Решение

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
#include  <stdio.h>
#include  <stdlib.h>
#include  <stdbool.h>
#include  <assert.h>
 
typedef struct Node {
    int val;
    struct Node * next;
} Node;
 
typedef struct List {
    Node *head;
} List;
 
List * list_alloc() {
    List *l = malloc(sizeof(List));
    if (l != NULL)
        l->head = NULL;
    return l;
}
 
 
bool list_is_empty(List *l) {
    return l->head == NULL;
}
 
 
void list_push_back(List *l, int v) {
    Node *n = malloc(sizeof(Node));
    assert(n != NULL);
    
    n->val = v;
    n->next = NULL;
    
    if (l->head == NULL) {
        l->head = n;
    } else {
        Node *current = l->head;
        while (current->next != NULL)
            current = current->next;
        current->next = n;
    }
}
 
int list_pop_back(List *l) {
    int v;
    Node *prev = NULL;
    Node *current = l->head;
    
    while (current->next != NULL) {
        prev = current;
        current = current->next;
    }
    
    if (prev == NULL) {
        v = current->val;
        free(current);
        current = NULL;
    } else {
        v = current->val;
        free(current);
        prev->next = NULL;
    }
    
    return v;
}
 
void list_print(List *l) {
    Node *current = l->head;
    
    while (current != NULL) {
        printf("%d ", current->val);
        current = current->next;
    }
    printf("\n");
}
 
void list_free(List *l) {
    while (list_is_empty(l)) {
        list_pop_back(l);
    }
    free(l);
}
 
int main(void)
{
    int val;
    List *list = list_alloc();
    
    list_push_back(list, 1);
    list_push_back(list, 2);
    list_push_back(list, 3);
    list_push_back(list, 4);
    list_push_back(list, 5);
    
    list_print(list);
    
    printf("%d\n", list_pop_back(list) + list_pop_back(list));
    
    list_free(list);
    
    return 0;
}
2
CoderHuligan
811 / 536 / 201
Регистрация: 30.06.2015
Сообщений: 2,995
Записей в блоге: 13
09.04.2017, 17:08 3
Философски говоря, для списка(как абстрактной структуры данных) не имеет значения где находится первый элемент, а где последний. Очерёдность элементов списка определяется только очерёдностью номеров содержимого элементов списка. Поэтому, видимо, в данном случае нужно в структуре прописать и поле для индекса определяющего номер эединицы хранения элемента, и уже по нему определять где тут последний и предпоследний элемент списка.
0
olalalalalalala
0 / 0 / 0
Регистрация: 14.03.2017
Сообщений: 21
09.04.2017, 19:21  [ТС] 4
програма не работает
0
shvyrevvg
578 / 538 / 270
Регистрация: 12.05.2016
Сообщений: 1,563
09.04.2017, 19:23 5
olalalalalalala, программа работает.
0
09.04.2017, 19:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.04.2017, 19:23

Найти сумму элементов массива, расположенных после последнего элемента, равного нулю.
Найти сумму элементов массива, расположенных после последнего элемента, равного нулю. Помогите...

Найти сумму элементов массива, расположенных после последнего элемента, равного нулю
Написать функцию, которая определяет в одномерном массиве сумму элементов, расположенных после...

Найти сумму элементов массива, расположенных после последнего элемента, равного нулю (Pelles C)
1)Найти сумму элементов массива, расположенных после последнего элемента, равного нулю.


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

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

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