Вернуть адрес той из переменных, адресуемых параметрами, которая имеет максимальное значение - C (СИ)

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

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

Помогите пожалуйста решить несколько заданий из лабораторной. 1. Напишите функцию, параметрами которой служат адреса трех переменных типа double. Функция должна возвращать адрес (значение указателя) той из переменных, адресуемых параметрами, которая имеет максимальное значение. В основной программе с помощью обращения к функции поменяйте знак значения максимальной из трех переменных. Для решения данной задачи используйте вспомогательную функцию, возвращающую адрес максимальной из переменных, адресуемых двумя параметрами-указателями. 3. Напишите функцию, которая упорядочивает значение трех переменных, адреса которых передаются ей в качестве параметров. В основной программе продемонстрируйте применение написанной функции. Для решения данной задачи определите и используйте вспомогательную функцию, которая упорядочивает значения только двух переменных, адресуемых ее двумя аргументами. 4. Напишите функцию с переменным числом параметров в соответствии с заданием, продемонстрировать вызов функции с различным числом параметров. Выполните вычисления для трех и десяти чисел. Решите задачу двумя способами: через передачу количества параметров как параметр функции и через использование признака конца списка параметров. В задаче требуется найти среднее гармоническое элементов числового ряда.

Решение задачи: «Вернуть адрес той из переменных, адресуемых параметрами, которая имеет максимальное значение»

textual
Листинг программы
#include <stdio.h>
 
//-----------------------------------------------------------------------------
double* GetMax2(double* a, double* b)
{
    return (*a < *b) ? b : a;
}
//-----------------------------------------------------------------------------
double* GetMax3(double* a, double* b, double* c)
{
    return GetMax2(GetMax2(a, b), c);
}
//-----------------------------------------------------------------------------
 
int main()
{
    double a = 1.1;
    double b = 2.2;
    double c = 3.3;
 
    double* result = GetMax3(&a, &b, &c);
    printf("%.1lf\n", *result);
 
    return 0;
}

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

  1. В функции GetMax2 сравниваются указатели на переменные a и b.
  2. Если значение переменной, на которую указывает a, меньше значения переменной, на которую указывает b, то возвращается адрес переменной b, иначе возвращается адрес переменной a.
  3. В функции GetMax3 используется рекурсия для сравнения переменных, на которые указывают массивы a, b и c.
  4. Если значение переменной, на которую указывает a, меньше значения переменной, на которую указывает b, то сравниваются значения переменных, на которые указывают a и c.
  5. Если значение переменной, на которую указывает a, больше значения переменной, на которую указывает b, то возвращается адрес переменной a.
  6. Если значение переменной, на которую указывает a, меньше значения переменной, на которую указывает b, то возвращается адрес переменной b.
  7. В функции main создаются три переменные a, b и c типа double и инициализируются значениями 1.1, 2.2 и 3.3 соответственно.
  8. Затем вызывается функция GetMax3, в которую передаются адреса переменных a, b и c.
  9. Результат функции GetMax3 выводится на экран с помощью функции printf.
  10. Функция main возвращает 0, что означает успешный конец работы программы.

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


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

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

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