Задания для самостоятельного выполнения

  1. Составьте блок-схему алгоритма для своего варианта.
  2. Напишите программу, решающую задачу по номеру своего варианта.
  3. Проанализируйте программу из примера. Какие изменения, исправления или оптимизации Вы бы внесли в неё?

Пример

Вывести на экран и провести частичный анализ функции \( f(x) = ax^2 + bx + c \) в зависимости от коэффициентов \( a, b, c \).

#include <stdio.h>

int main()
{
    float a, b, c;
    printf("Enter a -> ");
    scanf("%f", &a);
    printf("Enter b -> ");
    scanf("%f", &b);
    printf("Enter c -> ");
    scanf("%f", &c);

    if (!a && !b && !c)
        return 0;

    float x = 1.0f;
    printf("f(x) = ");
    if (a)
    {
        printf("%f * x^2 ", a);
        if (b > 0.0f)
            printf("+ ");
    }
    if (b)
        printf("%f * x ", b);
    if (c)
    {
        if (c > 0.0f)
            if (a || b)
                printf("+ %f", c);
            else
                printf("- %f", -c);
    }
    printf("\n");

    float f_x = a * x * x + b * x + c;
    float f_minus_x = a * -x * -x + b * -x + c;
    if (f_x == f_minus_x)
        printf("Function is even: f(x) = %f = f(-x) = %f\n", f_x, f_minus_x);
    else if (f_minus_x == -f_x)
        printf("Function is odd: f(-x) = %f = -f(x) = %f\n", f_minus_x, -f_x);
    else
        printf ("Function is neither even nor odd: \
            f(x) = %f != f(-x) = % f != -f(x) = %f\n" , f_x , f_minus_x , -f_x);

    if (a)
    {
        float vx = -b / (2.0f * a);
        float vy = a * vx * vx + b * vx + c;
        printf("Vertex (%f, %f) is a ", vx, vy);
        if (a > 0.0f)
            printf("minimum");
        else
            printf("maximum");
        printf("\n");
    }
    return 0;
}

Результаты работы программы

Enter a -> 1
Enter b -> -2
Enter c -> 0.5
f(x) = 1.000000 * x^2 - 2.000000 * x + 0.500000
Function is neither even nor odd: f(x) = -0.500000 != f(-x) = 3.500000 != -f(x) = 0.500000
Vertex (1.000000 , -0.500000) is a minimum

Блок-схема

Начало
Начало
a
a
true
true
false
false
a, b, c
a, b, c
f(x) = 
f(x) = 
a * x^2
a * x^2
b
b
b * x
b * x
true
true
false
false
c
c
true
true
!a && !b &&!c
!a && !b &&!c
false
false
b > 0
b > 0
+
+
true
true
false
false
c > 0
c > 0
true
true
false
false
a || b
a || b
+ c
+ c
- c
- c
false
false
true
true
false
false
x = 1
f_x = a * x * x + b * x + c
f_minus_x = a * -x * -x + b * -x + c
x = 1f_x = a * x * x + b * x + c...
\n
\n
f_x == f_minus_x
f_x == f_minus_x
Function is even
Function is even
f_minus_x == -f_x
f_minus_x == -f_x
Function is neither
even nor odd
Function is neither...
Function is odd
Function is odd
true
true
false
false
false
false
true
true
a
a
vx = -b / (2.0 * a)
vy = f(xv)
vx = -b / (2.0 * a)...
Vertex (vx, vy) is a
Vertex (vx, vy) is a
a > 0
a > 0
minimum
minimum
maximum
maximum
true
true
false
false
Конец
Конец
true
true
true
true
false
false
Text is not SVG - cannot display

Варианты заданий

  1. Вывести сумму цифр числа a если она больше b, если равна b - сообщение Сумма цифр = b, и значение суммы, увеличенное на b, если сумма меньше b.
  2. Вывести значение наибольшего из трёх параметров x, y, z если оно больше суммы двух других параметров, и разность этой суммы и наибольшего значения иначе.
  3. Вывести значение наименьшего из трёх параметров a, b, c если оно меньше или равно x и кратно 7, и частное наименьшего параметра и суммы двух оставшихся иначе.
  4. Вывести номер и долю в процентах наибольшего из параметров a1, a2, a3 в случае его чётности, и номера и разность значений наибольшего и наименьшего из параметров иначе.
  5. Вывести частное суммы параметров a, b и параметра x, если сумма меньше x, и обратное частное, если сумма больше. В случае равенства вывести частное b и x. Точность – 3 знака после запятой.
  6. Вывести номер наименьшего параметра b1, b2, b3, в случае, если его значение нечётно, и частное номера и значения этого параметра иначе. Количество цифр после запятой равно номеру параметра.
  7. Вывести частное наименьшей суммы цифр параметров a, b и второго параметра.
  8. Вывести разность наибольшего из параметров c1, c2, c3 и суммы номеров оставшихся параметров, в случае если этот параметр кратен 3, и частное этой суммы и наибольшего из параметров иначе.
  9. Вывести частное произведения параметров a, b и параметра x, если произведение меньше x, и разность иначе. В случае равенства вывести соответствующее сообщение.
  10. Вывести разность наибольшего и наименьшего из параметров d1, d2, d3 в случае, если номер наибольшего нечётный, и частное наименьшего и наибольшего иначе.
  11. В зависимости от того, что больше, вывести разность наибольшего из параметров a, b и параметра x, либо сумму наименьшего из параметров и параметра x. В случае равенства вывести соответствующее сообщение.
  12. Вывести частное номера наименьшего параметра e1, e2, e3 и суммы параметров, если сумма больше нуля и обратное частное иначе.