Задача
Требуется написать программу, вычисляющую значение какой-либо функции у = f(x). Допустим, такой:
у = x – 2, если x > 0,
y = 0, если x = 0,
y = |x|, если x < 0.
Решение
При определении значений подобных функций переменная y вычисляется по-разному (по разным формулам) в зависимости от значения x.
Такие задачи решаются с конструкции условного оператора if - else. Поскольку в данном случае мы имеем три условия (x > 0, x = 0 и x < 0), то потребуется использование еще вложенной конструкции if - else, т. к. в языке Pascal нет оператора множественного ветвления (оператор case в данном случае не подходит).
В языке программирования Паскаль (да и в других тоже) желательно вложенные конструкции if - else помещать во внешнюю ветку else, а не if. Так проще не запутаться.
Таким образом, алгоритм вычисления значения функции может быть таким:
Если x > 0, то у = x - 2
Иначе (ниже идет вложенная конструкция)
Если x = 0, то y = 0
Иначе y = |x|.
В последнем пункте можно опустить оператор if с проверкой, что x < 0, так как если ход выполнения программы дошел до этого пункта, то x уже другим быть и не может (варианты, когда он больше или равен нулю, уже были исключены).
Для определения модуля (абсолютного значения) переменной можно использовать встроенную функцию abs() языка Pascal. В данном случае можно обойтись и без нее: поскольку уже известно, что x отрицателен, то, чтобы получить положительное число (модуль), нужно его умножить на -1.
#include <iostream>
using namespace std;
void main()
{
setlocale(0,"russian"); //для отображения русских символов в консоли
int a[8]={1,2,3,4,5,6,7,8}; //определение массива
int k,sum=0; //определение переменных
cout<<"введите к:"<<endl; //cout-вывод строки на консоль,endl-переход на новую строку(для удобства)
cin>>k; //cin-для ввода
cout<<"весь массив:"<<endl;
for(int i=0;i<8;i++) //цикл для прохода по каждому элементу от 0 до 7 включительно(т.к. в данном случае у нас 8 элементов)
{
if(a[i]%k==0) //проверяем на кратность текущий элемент массива
sum=sum+a[i]; //если кратно, считаем сумму текущего элемента массива с предыдущим результатом
cout<<a[i]<<" "; //выводим текущий элемент на консоль(для всех элементов)
}
cout<<endl<<"сумма элементов кратных 'k' равна "<<sum<<endl;//выводим результат
}
Объяснение: