Ошибка - C (СИ) (69627)

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

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

list.c: In function ‘listRemove’:
list.c:116:2: warning: format ‘%g’ expects argument of type ‘double’, but argument 2 has type ‘LIST_TYPE’ [-Wformat=]
  printf("Элемент z=%g%+gi удален из списка\n", list->_arr[cur]._data);//
  ^
list.c:116:2: warning: format ‘%g’ expects a matching ‘double’ argument [-Wformat=]
list.c: In function ‘listPrint’:
list.c:147:3: warning: format ‘%g’ expects argument of type ‘double’, but argument 2 has type ‘LIST_TYPE’ [-Wformat=]
   printf("%g%+gi ", list->_arr[cur]._data);
   ^
list.c:147:3: warning: format ‘%g’ expects a matching ‘double’ argument [-Wformat=]
Но
typedef double complex LIST_TYPE;
void listRemove(List *list, const int index)
{
    int prev, cur;
 
    if (listEmpty(list))
    {
        printf("Список пуст\n");
 
        return;
    }
    else if (index < 0 || index >= list->_size)
    {
        printf("Ошибка. Позиция не найдена\n");
 
        return;
    }
 
    if (index == 0)
    {
        cur = list->_first;
        list->_first = list->_arr[list->_first]._next;
    }
    else
    {
        prev = findPrev(list, index);
        cur = list->_arr[prev]._next;
        list->_arr[prev]._next = list->_arr[cur]._next;
    }
 
    printf("Элемент z=%g%+gi удален из списка\n", list->_arr[cur]._data);//
 
    list->_arr[cur]._data = ' ';
    list->_arr[cur]._next = list->_hole;
    list->_hole = cur;
    list->_size--;
}
и
void listPrint(const List *list)
{
    int i, cur = list->_first;
 
    if (listEmpty(list))
    {
        printf("Список пуст\n");
 
        return;
    }
    
    for (i = 0; i < list->_size; i++)
    {
        printf("%g%+gi ", list->_arr[cur]._data);
 
        cur = list->_arr[cur]._next;
    }
 
    printf("\n");
}

Решение задачи: «Ошибка»

textual
Листинг программы
printf("%g%+gi ", creal(list->_arr[cur]._data), cimag(list->_arr[cur]._data));

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

В данном коде используется функция printf для вывода значения комплексного числа в формате научной нотации и его модуля. Список действий:

  1. Вычисляется значение функции creal, которая возвращает действительную часть комплексного числа. Значение функции присваивается переменной creal(list->_arr[cur]._data).
  2. Вычисляется значение функции cimag, которая возвращает мнимую часть комплексного числа. Значение функции присваивается переменной cimag(list->_arr[cur]._data).
  3. Оба значения передаются в функцию printf в качестве аргументов.
  4. Форматирование вывода осуществляется с помощью спецификаторов формата %g и %+gi. Первый спецификатор формата %g используется для вывода значения с плавающей точкой в формате научной нотации, а второй спецификатор формата %+gi используется для вывода значения с указанием знака.
  5. В качестве разделителя между значениями используется пробел.
  6. Значения переменных creal(list->_arr[cur]._data) и cimag(list->_arr[cur]._data) передаются в функцию printf в порядке, указанном в списке действий. Следует отметить, что в данном коде предполагается, что переменные list и cur уже были определены и инициализированы до этого фрагмента кода.

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


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

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

14   голосов , оценка 4.071 из 5