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

Как правильно вызвать функцию?

21.04.2017, 01:57. Просмотров 872. Ответов 3
Метки нет (Все метки)

как вызвать функцию?
C
1
2
3
4
5
6
7
8
9
10
11
int sum_last(list_ptr a) {
    list_ptr ptr;
 
    assert(NULL != a);
    assert(NULL != a->next);
 
    for (ptr = a; ptr->next->next; ptr = ptr->next)
    {
    }
    return ptr->data + ptr->next->data;
}

Это полный код
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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <assert.h>
 
typedef int bool;
#define true 1
#define false 0
 
typedef struct list {
    int data;
    struct list *next;
} *list_ptr;
char ch1, str[100];
int  i, count = 0;
list_ptr x = NULL;
 
int sum_last(list_ptr a) {
    list_ptr ptr;
 
    assert(NULL != a);
    assert(NULL != a->next);
 
    for (ptr = a; ptr->next->next; ptr = ptr->next)
    {
    }
    return ptr->data + ptr->next->data;
}
 
void show(struct list *a) {
    while (a != NULL) {
        printf(" %d\t", a->data);
        a = a->next;
    }
}
 
bool isnumber(const char*s) {
    char* e = NULL;
    (void)strtol(s, &e, 0);
    return e != NULL && *e == (char)0;
}
 
void add(list_ptr *a, int newdata) {
    if (*a == NULL) {
        *a = (list_ptr)malloc(sizeof(list_ptr));
        (*a)->data = newdata;
        (*a)->next = NULL;
        return;
    }
    
    list_ptr ptr;
    
    for (ptr = *a; ptr->next; ptr = ptr->next)
    {
        
    }
    ptr->next = (struct list *)malloc(sizeof(struct list));
    ptr = ptr->next;
    ptr->data = newdata;
    ptr->next = NULL;
}
 
int main()
{
    char c = 0, c1;
    int i, j, min, number;
 
    while (c != 27)
    {
        system("cls");
        printf(" Enter - run the program.\n");
        printf(" Esc - exit.\n");
        printf(" Any other key - information about program.\n");
        c = getch();
        system("cls");
        switch (c)
        {
        case 27:
            break;
        case 13:
        {
            system("cls");
            printf("It\'s time to fill the list (to end the filling eneter ***)\n\n");
            for (;;) {
                printf("Enter the element:\n>>");
                do
                {
                    gets(str);
                    if (!isnumber(str) && strcmp(str, "***") != 0) {
                        printf("Please, enter an integer number:\n>> ");
                        continue;
                    }
                    break;
                } while (true);
                if (strcmp(str, "***") == 0) break;
                number = atoi(str);
                add(&x, number);
                count++;
            }
            if (count == 0) printf("\nThe first list is empty.\n");
            else printf("Elements in your first list are:\n");
            show(x);
            x = NULL;
            printf("\n\n\nPress \'Enter\' to continue");
            getch();
            printf("The sum of the last and the penultimate number: ");
            printf("\n\tEsc - exit.\n");
            printf("\tAny other - go to the main page.\n");
            c = getch();
            break;
        }
 
        default:
        {
            printf("\n Finds the sum of the last and penultimate elements of the list L containing at least two elements.\n\n");
            printf(" Esc - exit.\n");
            printf(" Any other - go to the main page.\n");
            c = getch();
            break;
        }
        }
    }
    return 0;
}
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.04.2017, 01:57
Ответы с готовыми решениями:

Как правильно вызвать функцию?
Вопрос как правильно сделать вызов из mainLoop функцию comlastLogin через sortlastLogin. Если...

Как правильно вызвать функцию, в которую передаётся указатель на структуру?
#define _CRT_SECURE_NO_WARNINGS #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; #include &lt;stdio.h&gt;...

Как правильно вставить (вызвать) функцию для подсчета количества единиц в двоичной записи числа
Как же мне вызвать функцию bits1, что посчитать кол-во единиц переменной sym.p , который находится...

Как вызвать приведенную функцию
Ребят. если я объясню что делает то мне за кр 4 будет. если нет.то 2 :( я сделл вызов функции а...

Как вызвать функцию в main
main() { struct EL_SP *p; /* указатель начала списка */ unsigned n ; ...

3
Mournful Max
Велосипедист...
347 / 214 / 74
Регистрация: 15.12.2015
Сообщений: 784
Завершенные тесты: 1
21.04.2017, 03:52 2
Цитата Сообщение от olalalalalalala Посмотреть сообщение
как вызвать функцию?
C
1
2
3
4
5
6
7
8
9
10
11
int sum_last(list_ptr a) {
    list_ptr ptr;
 
    assert(NULL != a);
    assert(NULL != a->next);
 
    for (ptr = a; ptr->next->next; ptr = ptr->next)
    {
    }
    return ptr->data + ptr->next->data;
}
sum_last(переменная_типа_list_ptr)

Кстати, возвращаемое значение такой функции лучше заменить на ptrdiff_t. (Этот тип данных находится в <stddef.h>)
1
olalalalalalala
0 / 0 / 0
Регистрация: 14.03.2017
Сообщений: 21
21.04.2017, 09:25  [ТС] 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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <assert.h>
#include <stddef.h>
 
typedef int bool;
#define true 1
#define false 0
 
typedef struct list {
    int data;
    struct list *next;
} *list_ptr;
char ch1, str[100];
int  i, count = 0;
list_ptr x = NULL;
 
int sum_last(list_ptr a) {
    list_ptr ptr;
 
    assert(NULL != a);
    assert(NULL != a->next);
 
    for (ptr = a; ptr->next->next; ptr = ptr->next)
    {
    }
    return ptr->data + ptr->next->data;
}
 
void show(struct list *a) {
    while (a != NULL) {
        printf(" %d\t", a->data);
        a = a->next;
    }
}
 
bool isnumber(const char*s) {
    char* e = NULL;
    (void)strtol(s, &e, 0);
    return e != NULL && *e == (char)0;
}
 
void add(list_ptr *a, int newdata) {
    if (*a == NULL) {
        *a = (list_ptr)malloc(sizeof(list_ptr));
        (*a)->data = newdata;
        (*a)->next = NULL;
        return;
    }
    
    list_ptr ptr;
    
    for (ptr = *a; ptr->next; ptr = ptr->next)
    {
        
    }
    ptr->next = (struct list *)malloc(sizeof(struct list));
    ptr = ptr->next;
    ptr->data = newdata;
    ptr->next = NULL;
}
 
int main()
{
    char c = 0, c1;
    int i, j, min, number;
    struct list;
 
    while (c != 27)
    {
        system("cls");
        printf(" Enter - run the program.\n");
        printf(" Esc - exit.\n");
        printf(" Any other key - information about program.\n");
        c = getch();
        system("cls");
        switch (c)
        {
        case 27:
            break;
        case 13:
        {
            system("cls");
            printf("It\'s time to fill the list (to end the filling eneter ***)\n\n");
            for (;;) {
                printf("Enter the element:\n>>");
                do
                {
                    gets(str);
                    if (!isnumber(str) && strcmp(str, "***") != 0) {
                        printf("Please, enter an integer number:\n>> ");
                        continue;
                    }
                    break;
                } while (true);
                if (strcmp(str, "***") == 0) break;
                number = atoi(str);
                add(&x, number);
                count++;
            }
            if (count == 0) printf("\nThe first list is empty.\n");
            else printf("Elements in your first list are:\n");
            show(x);
            x = NULL;
            printf("\n\n\nPress \'Enter\' to continue\n\n");
            getch();
            printf("The sum of the last and the penultimate number: ");
            ptrdiff_t(sum_last( list_ptr));
 
            printf("\n\tEsc - exit.\n");
            printf("\tAny other - go to the main page.\n");
            c = getch();
            break;
        }
 
        default:
        {
            printf("\n Finds the sum of the last and penultimate elements of the list L containing at least two elements.\n\n");
            printf(" Esc - exit.\n");
            printf(" Any other - go to the main page.\n");
            c = getch();
            break;
        }
        }
    }
    return 0;
}
0
Mournful Max
Велосипедист...
347 / 214 / 74
Регистрация: 15.12.2015
Сообщений: 784
Завершенные тесты: 1
22.04.2017, 06:54 4
Лучший ответ Сообщение было отмечено olalalalalalala как решение

Решение

Цитата Сообщение от olalalalalalala Посмотреть сообщение
C++
1
2
3
4
if (count == 0) printf("\nThe first list is empty.\n");  // 104 строка
else printf("Elements in your first list are:\n");
show(x);
x = NULL;
Здесь очень странная логика. show(x) выполняется в любом случае, а потом список теряется (x = NULL;).

Цитата Сообщение от olalalalalalala Посмотреть сообщение
C++
1
ptrdiff_t(sum_last( list_ptr));  // 111 строка
Здесь, наверное, должно быть int sum = sum_last(x);, но у Вас x == NULL...
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2017, 06:54

Как вызвать функцию для двумерного массива?
Вот код: #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; #include &lt;math.h&gt; int...

Как вызвать функцию в главной функции main?
как вызвать ету функцию в главной функции main? int sum(int n, int arr, int trans, int summa)...

Как вызвать функцию для выполнение всех операций в main?
Уважаемые знатоки языка Си. Помогите пожалуйста. Подскажите как в данном коде можно вызвать функцию...


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

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

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