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

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

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

Листинг программы
  1. list.c: In function listRemove’:
  2. list.c:116:2: warning: format ‘%g expects argument of type double’, but argument 2 has type LIST_TYPE [-Wformat=]
  3. printf("Элемент z=%g%+gi удален из списка\n", list->_arr[cur]._data);//
  4. ^
  5. list.c:116:2: warning: format ‘%g expects a matching double argument [-Wformat=]
  6. list.c: In function listPrint’:
  7. list.c:147:3: warning: format ‘%g expects argument of type double’, but argument 2 has type LIST_TYPE [-Wformat=]
  8. printf("%g%+gi ", list->_arr[cur]._data);
  9. ^
  10. list.c:147:3: warning: format ‘%g expects a matching double argument [-Wformat=]
Но
Листинг программы
  1. typedef double complex LIST_TYPE;
Листинг программы
  1. void listRemove(List *list, const int index)
  2. {
  3. int prev, cur;
  4. if (listEmpty(list))
  5. {
  6. printf("Список пуст\n");
  7. return;
  8. }
  9. else if (index < 0 || index >= list->_size)
  10. {
  11. printf("Ошибка. Позиция не найдена\n");
  12. return;
  13. }
  14. if (index == 0)
  15. {
  16. cur = list->_first;
  17. list->_first = list->_arr[list->_first]._next;
  18. }
  19. else
  20. {
  21. prev = findPrev(list, index);
  22. cur = list->_arr[prev]._next;
  23. list->_arr[prev]._next = list->_arr[cur]._next;
  24. }
  25. printf("Элемент z=%g%+gi удален из списка\n", list->_arr[cur]._data);//
  26. list->_arr[cur]._data = ' ';
  27. list->_arr[cur]._next = list->_hole;
  28. list->_hole = cur;
  29. list->_size--;
  30. }
и
Листинг программы
  1. void listPrint(const List *list)
  2. {
  3. int i, cur = list->_first;
  4. if (listEmpty(list))
  5. {
  6. printf("Список пуст\n");
  7. return;
  8. }
  9. for (i = 0; i < list->_size; i++)
  10. {
  11. printf("%g%+gi ", list->_arr[cur]._data);
  12. cur = list->_arr[cur]._next;
  13. }
  14. printf("\n");
  15. }

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

textual
Листинг программы
  1. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут