#include <iostream>
#include <iomanip>
class Point {
protected:
double* arr; //массив с координатами по осям
size_t size; //размерность пространства
public:
Point(size_t s) : size(s) {
arr = new double[s];
}
~Point() {
delete[] arr;
}
virtual void print() = 0; //вывод координат
};
class Point2D : public Point {
public:
Point2D(double x,double y) : Point(2) {
arr[0] = x; arr[1] = y;
}
void print() override {
std::cout << "x = " << std::fixed << std::setprecision(1) << arr[0] << " y = " << arr[1] << std::endl;
}
};
class Point3D : public Point {
public:
Point3D(double x, double y, double z) : Point(3) {
arr[0] = x; arr[1] = y; arr[2] = z;
}
void print() override {
std::cout << "x = " << std::fixed << std::setprecision(1) << arr[0] << " y = " << arr[1]
<< " z = " << arr[2] << std::endl;
}
};
int main(int argc, char* argv[]) {
Point* p1 = new Point2D(1.5, 4.8);
Point* p2 = new Point3D(1.0, 10.2, 3.3);
p1->print();
p2->print();
delete p1;
delete p2;
return 0;
}
Фрагмент программы будет выполнятся вечно, значение переменной c получить нельзя.
Объяснение:
Присваиваем переменной a число 100:
a:=100;
Присваиваем переменной b число 20:
b:=20;
Далее идёт цикл с постусловием, выполняем тело, пока b не станет больше или равна 100:
repeat
i:= a div b;
c:=i + 5;
b:= a div b;
until b>=100;
Смотрим:
i = a div b = 100 div 20 = 5c = i + 5 = 5 + 5 = 10 b = a div b = 100 div 20 = 5b>=100 ? нет => ещё раз:
i = a div b = 100 div 5 = 20c = i + 5 = 20 + 5 = 25b = a div b = 100 div 5 = 20Переменная b изначально была равна 20, а через 2 прохода цикла, она также стала 20. Делаем вывод: это замкнутый цикл, выполнятся он будет вечно, так как переменная b никогда не будет >=100.
б) 358(дес.)=101100110(дв.) 546 (восьм.) 166(шестн.)
2.а)777(дес.)
б)805(дес.)
в)74(дес.)
г)820(дес.)
3.а) 1001001011(дв.) 587(дес.)
б)2424(восьм.) 1300(дес.)
в)4A4(шестн.) 1188(дес.)
4.а)10001111110000(дв.) 9200(дес.)
б)46263(восьм.) 19635(дес.)
в)37548(шестн.)226632(дес.)