Ошибка - 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
уже были определены и инициализированы до этого фрагмента кода.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д