Задания для самостоятельного выполнения
- Сложность:
- Rare
- Разберите код программы из примера.
- Составьте блок-схему алгоритма для своего варианта.
- Напишите программу, решающую задачу по своему варианту.
- Оформите отчёт в README.md. Отчёт должен содержать:- Задание
- Описание проделанной работы
- Скриншоты результатов
- Блок-схему
- Ссылки на используемые материалы
 
- Сложность:
- Medium
- Сделайте свою программу выполняющейся до тех пор, пока пользователь не введёт все нулевые значения.
- Реализуйте сохранение вывода программы и пользовательского ввода в лог-файл.
- Сложность:
- Well-done
- Реализуйте “защиту от дурака” – обработайте пользовательский ввод таким образом, чтобы выполнение алгоритма программы невозможно было нарушить некорректным пользовательским вводом.
Пример
Вывести на экран и провести частичный анализ функции \( 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если она большеb, если равнаb- сообщениеСумма цифр = b, и значение суммы, увеличенное наb, если сумма меньшеb.
- Вывести значение наибольшего из трёх параметров x,y,zесли оно больше суммы двух других параметров, и разность этой суммы и наибольшего значения иначе.
- Вывести значение наименьшего из трёх параметров a,b,cесли оно меньше или равноxи кратно 7, и частное наименьшего параметра и суммы двух оставшихся иначе.
- Вывести номер и долю в процентах наибольшего из параметров a1,a2,a3в случае его чётности, и номера и разность значений наибольшего и наименьшего из параметров иначе.
- Вывести частное суммы параметров a,bи параметраx, если сумма меньшеx, и обратное частное, если сумма больше. В случае равенства вывести частноеbиx. Точность – 3 знака после запятой.
- Вывести номер наименьшего параметра b1,b2,b3, в случае, если его значение нечётно, и частное номера и значения этого параметра иначе. Количество цифр после запятой равно номеру параметра.
- Вывести частное наименьшей суммы цифр параметров a,bи второго параметра.
- Вывести разность наибольшего из параметров c1,c2,c3и суммы номеров оставшихся параметров, в случае если этот параметр кратен 3, и частное этой суммы и наибольшего из параметров иначе.
- Вывести частное произведения параметров a,bи параметраx, если произведение меньшеx, и разность иначе. В случае равенства вывести соответствующее сообщение.
- Вывести разность наибольшего и наименьшего из параметров d1,d2,d3в случае, если номер наибольшего нечётный, и частное наименьшего и наибольшего иначе.
- В зависимости от того, что больше, вывести разность наибольшего из параметров a,bи параметраx, либо сумму наименьшего из параметров и параметраx. В случае равенства вывести соответствующее сообщение.
- Вывести частное номера наименьшего параметра e1,e2,e3и суммы параметров, если сумма больше нуля и обратное частное иначе.