Ошибка - 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 для вывода значения комплексного числа в формате научной нотации и его модуля. Список действий:
- Вычисляется значение функции creal, которая возвращает действительную часть комплексного числа. Значение функции присваивается переменной
creal(list->_arr[cur]._data)
. - Вычисляется значение функции cimag, которая возвращает мнимую часть комплексного числа. Значение функции присваивается переменной
cimag(list->_arr[cur]._data)
. - Оба значения передаются в функцию printf в качестве аргументов.
- Форматирование вывода осуществляется с помощью спецификаторов формата
%g
и%+gi
. Первый спецификатор формата%g
используется для вывода значения с плавающей точкой в формате научной нотации, а второй спецификатор формата%+gi
используется для вывода значения с указанием знака. - В качестве разделителя между значениями используется пробел.
- Значения переменных
creal(list->_arr[cur]._data)
иcimag(list->_arr[cur]._data)
передаются в функцию printf в порядке, указанном в списке действий. Следует отметить, что в данном коде предполагается, что переменныеlist
иcur
уже были определены и инициализированы до этого фрагмента кода.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д