1. Условие выбора чисел, кратных 5 и не кратных 10, это (X mod 5=0) and (X mod 10<>0).
- Обоснование:
- (X mod 5=0) означает, что число X делится на 5 без остатка.
- (X mod 10<>0) означает, что число X не делится на 10 без остатка.
2. Значение переменной k в результате выполнения фрагмента программы:
- a:= 25;
- if a>0 then k:=1 else k:=0
- Обоснование:
- Переменная a присваивается значение 25.
- Условие if a>0 выполняется, так как 25 больше 0.
- Поэтому переменная k примет значение 1.
3. Оператор, определяющий, является ли число а четным, это:
- if a mod 2 = 0 then write (`Да) else (`Нет`)
- Обоснование:
- (a mod 2 = 0) означает, что число a делится на 2 без остатка.
- Если это условие выполняется, то программа выведет "Да", иначе выведет "Нет".
1. Создание класса Vector:
Для начала создадим класс Vector с необходимыми полями и методами. В данном случае, нам понадобятся:
- Приватные поля:
- int* data - указатель на массив элементов вектора,
- int size - размерность вектора.
- Публичные методы:
- Конструкторы и деструктор:
- Vector() - конструктор по умолчанию,
- Vector(int n) - конструктор с заданной размерностью,
- Vector(const Vector& v) - конструктор копирования,
- ~Vector() - деструктор.
- Перегрузки операторов:
- Vector operator+(const Vector& v) - оператор сложения (+),
- Vector operator-(const Vector& v) - оператор вычитания (-),
- int operator*(const Vector& v) - оператор скалярного умножения (*),
- Vector operator*(int scalar) - оператор умножения на скаляр (*),
- int& operator[](int index) - оператор индексации ([]),
- bool operator==(const Vector& v) - оператор сравнения (==),
- bool operator!=(const Vector& v) - оператор неравенства (!=),
- Vector operator-() - оператор унарного минуса (-),
- friend ostream& operator<<(ostream& out, const Vector& v) - оператор вывода вектора (<<),
- friend istream& operator>>(istream& in, Vector& v) - оператор ввода вектора (>>).
- Функции-члены класса:
- int dimension() - функция, возвращающая размерность вектора,
- double abs() - функция, возвращающая модуль вектора,
- Vector normalize() - функция, возвращающая нормализованный вектор.
2. Реализация конструкторов и деструктора:
В конструкторах мы должны инициализировать поля класса в соответствии с переданными параметрами. Для конструктора по умолчанию можно просто инициализировать поля значениями по умолчанию (например, nullptr и 0). В конструкторе с заданной размерностью мы выделяем память под массив элементов вектора и инициализируем его нулями. В конструкторе копирования мы копируем значения полей из переданного вектора в текущий. В деструкторе мы освобождаем выделенную память для массива элементов.
3. Реализация перегрузок операторов:
Для операторов сложения и вычитания мы создаем новый вектор, в котором каждый элемент получен путем сложения или вычитания соответствующих элементов из двух векторов. Для оператора скалярного умножения мы перемножаем соответствующие элементы двух векторов и суммируем полученные значения. Для оператора умножения на скаляр мы умножаем каждый элемент вектора на переданное значение скаляра. Для оператора индексации мы возвращаем ссылку на соответствующий элемент вектора. Для операторов сравнения мы сравниваем каждый элемент двух векторов между собой и возвращаем результат сравнения. Для оператора унарного минуса мы создаем новый вектор, в котором каждый элемент получен путем изменения знака соответствующего элемента исходного вектора. Для операторов ввода-вывода мы используем потоковые операторы для ввода и вывода каждого элемента вектора.
4. Реализация функций-членов класса:
Функция dimension() возвращает значение поля size, которое является размерностью вектора. Функция abs() сначала вычисляет сумму квадратов всех элементов вектора, а затем вычисляет квадратный корень из этой суммы. Функция normalize() создает новый вектор, в котором каждый элемент получен путем деления соответствующего элемента исходного вектора на его модуль.
Вот пример полного кода для класса Vector:
```cpp
#include
#include
using namespace std;
class Vector {
private:
int* data;
int size;
public:
Vector() : data(nullptr), size(0) {}
Vector(int n) : size(n) {
data = new int[size];
for (int i = 0; i < size; i++) {
data[i] = 0;
}
}
Vector(const Vector& v) : size(v.size) {
data = new int[size];
for (int i = 0; i < size; i++) {
data[i] = v.data[i];
}
}
~Vector() {
delete[] data;
}
Vector operator+(const Vector& v) {
Vector result(size);
for (int i = 0; i < size; i++) {
result.data[i] = data[i] + v.data[i];
}
return result;
}
Vector operator-(const Vector& v) {
Vector result(size);
for (int i = 0; i < size; i++) {
result.data[i] = data[i] - v.data[i];
}
return result;
}
int operator*(const Vector& v) {
int result = 0;
for (int i = 0; i < size; i++) {
result += data[i] * v.data[i];
}
return result;
}
Vector operator*(int scalar) {
Vector result(size);
for (int i = 0; i < size; i++) {
result.data[i] = data[i] * scalar;
}
return result;
}
int& operator[](int index) {
return data[index];
}
bool operator==(const Vector& v) {
for (int i = 0; i < size; i++) {
if (data[i] != v.data[i]) {
return false;
}
}
return true;
}
bool operator!=(const Vector& v) {
return !(*this == v);
}
Vector operator-() {
Vector result(size);
for (int i = 0; i < size; i++) {
result.data[i] = -data[i];
}
return result;
}
friend ostream& operator<<(ostream& out, const Vector& v);
friend istream& operator>>(istream& in, Vector& v);
int dimension() {
return size;
}
double abs() {
double sum = 0;
for (int i = 0; i < size; i++) {
sum += data[i] * data[i];
}
return sqrt(sum);
}
Vector normalize() {
double modulus = abs();
Vector result(size);
for (int i = 0; i < size; i++) {
result.data[i] = data[i] / modulus;
}
return result;
}
};
ostream& operator<<(ostream& out, const Vector& v) {
out << "(";
for (int i = 0; i < v.size; i++) {
out << v.data[i];
if (i < v.size - 1) {
out << ", ";
}
}
out << ")";
return out;
}
istream& operator>>(istream& in, Vector& v) {
for (int i = 0; i < v.size; i++) {
in >> v.data[i];
}
return in;
}
Vector v6 = -v1;
cout << "Unary minus of Vector 1: " << v6 << endl;
return 0;
}
```
Надеюсь, это поможет вам понять и решить задачу с созданием класса Vector для работы с математическими векторами на языке программирования C++. Если у вас возникнут еще вопросы, пожалуйста, задайте их!
var
x, f : real;
begin
writeln('Введите значение переменной x: ');
readln(x);
if x <= 0 then
f := - x
else if (x > 0) and (x < 2) then
f := x * x
else if x >= 2 then
f := 4;
writeln(f:2:2);
end.