Как правильно вызвать функцию? - C (СИ) (69637)

Узнай цену своей работы

Формулировка задачи:

как вызвать функцию?
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;
}
Это полный код
#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;
}

Решение задачи: «Как правильно вызвать функцию?»

textual
Листинг программы
if (count == 0) printf("\nThe first list is empty.\n");  // 104 строка
else printf("Elements in your first list are:\n");
show(x);
x = NULL;

Объяснение кода листинга программы

  1. Проверяется условие count == 0.
  2. Если условие истинно, то выводится сообщение The first list is empty..
  3. Если условие ложно, то выводится сообщение Elements in your first list are:.
  4. Вызывается функция show(x).
  5. Значение x присваивается NULL.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.867 из 5
Похожие ответы