М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
krivitskaya1
krivitskaya1
05.04.2022 23:42 •  Информатика

1. Запустите Excel. 2. Лист 1 рабочей книги назовите Данные значений. В
столбец С введите числовую арифметическую
последовательность по варианту (вариант из табл.6)
61
Таблица 6
№ варианта Интервал значений и шаг
изменения
Тип диаграммы
1 [-2 ; 5] шаг 0,25 Объемный график
2 [1;15] шаг 0,5 Объемный вариант
обычной гистограммы
3 [-10; 32] шаг 1,5 Разрезанная круговая
4 [10; -18] шаг -1 С областями объемный
вариант
5 [45 ; 3 ] шаг -1,5 Лепестковая с
маркерами
6 [ 20 ; 6 ] шаг -0,5 Цилиндрическая
гистограмма
3. В столбце D вычислите произвольную математическую
функцию. Начертите линии разграфки для таблицы.
4. Лист 2 назовите Диаграмма и постройте на нем заданный
вариант диаграммы.
5. Сохраните файл в папке
Мои_документы\1_курс\№группы под произвольным
именем.

👇
Ответ:
deadpool2478
deadpool2478
05.04.2022

непонял?

Объяснение:

4,4(73 оценок)
Открыть все ответы
Ответ:
ajselaskerova
ajselaskerova
05.04.2022
Хорошо, давайте начнем с создания абстрактного класса Point. Абстрактный класс - это класс, который не может быть создан сам по себе, а может только служить базовым классом для других классов. Он имеет хотя бы одну виртуальную функцию, и мы не можем создавать экземпляры (объекты) этого класса непосредственно.

```c++
#include
using namespace std;

class Point {
protected:
int x; // координата x
int y; // координата y
public:
virtual void setCoordinates(int x, int y) = 0; // абстрактная функция установки координат
virtual void getCoordinates() = 0; // абстрактная функция получения координат
virtual void setColor(string color) = 0; // абстрактная функция установки цвета
virtual string getColor() = 0; // абстрактная функция получения цвета
virtual ~Point() {} // виртуальный деструктор
};
```

Здесь мы объявили класс Point с двумя защищенными переменными x и y, представляющими координаты точки. Затем мы объявляем четыре виртуальных функции: `setCoordinates`, `getCoordinates`, `setColor` и `getColor`. Эти функции будут переопределены в производных классах, чтобы обрабатывать соответствующие значения.

Далее, давайте создадим класс ColoredPoint, который наследуется от класса Point:

```c++
class ColoredPoint : public Point {
private:
string color; // цвет точки
public:
void setCoordinates(int x, int y) override { // переопределение функции установки координат
this->x = x;
this->y = y;
}

void getCoordinates() override { // переопределение функции получения координат
cout << "Coordinates: (" << x << ", " << y << ")" << endl;
}

void setColor(string color) override { // переопределение функции установки цвета
this->color = color;
}

string getColor() override { // переопределение функции получения цвета
return color;
}
};
```

В классе ColoredPoint мы добавляем дополнительную переменную color для представления цвета точки. Мы также переопределяем все четыре виртуальные функции класса Point.

Теперь давайте создадим класс Line, который также наследуется от класса Point:

```c++
class Line : public Point {
protected:
int x2; // вторая координата x
int y2; // вторая координата y
public:
void setCoordinates(int x1, int y1, int x2, int y2) { // функция установки координат линии
this->x = x1;
this->y = y1;
this->x2 = x2;
this->y2 = y2;
}

void getCoordinates() { // функция получения координат линии
cout << "Coordinates: (" << x << ", " << y << ") - (" << x2 << ", " << y2 << ")" << endl;
}

void setColor(string color) override { // переопределение функции установки цвета
cout << "Setting color of line to: " << color << endl;
}

string getColor() override { // переопределение функции получения цвета
// здесь могут быть дополнительные действия, но в данном примере возвращаем пустую строку
return "";
}
};
```

В классе Line мы добавляем две дополнительные переменные (x2 и y2) для представления вторых координат линии. Мы также переопределяем функции установки и получения координат.

Теперь создадим класс ColoredLine, который наследуется от класса Line:

```c++
class ColoredLine : public Line {
private:
string color; // цвет линии
public:
void setCoordinates(int x1, int y1, int x2, int y2) { // переопределение функции установки координат линии
this->x = x1;
this->y = y1;
this->x2 = x2;
this->y2 = y2;
}

void getCoordinates() { // переопределение функции получения координат линии
cout << "Coordinates: (" << x << ", " << y << ") - (" << x2 << ", " << y2 << ")" << endl;
}

void setColor(string color) { // переопределение функции установки цвета линии
this->color = color;
cout << "Setting color of line to: " << color << endl;
}

string getColor() { // переопределение функции получения цвета линии
return color;
}
};
```

В классе ColoredLine мы снова добавляем переменную color для представления цвета линии. Мы также переопределяем функции установки и получения координат, а также функции установки и получения цвета.

Теперь давайте создадим класс PolyLine, который также наследуется от класса Line:

```c++
class PolyLine : public Line {
public:
// для многоугольника можно использовать функции класса Line
};
```

Класс PolyLine наследует все функции и переменные от класса Line, поскольку многоугольник - это всего лишь линия с более чем двумя точками.

Далее создадим класс Picture, который содержит массив/параметризованную коллекцию объектов классов Point, ColoredPoint, Line, ColoredLine и PolyLine в динамической памяти. Мы также предусмотрим возможность вывода характеристик объектов списка:

```c++
#include

class Picture {
private:
vector objects; // коллекция указателей на объекты
public:
void addObject(Point* object) { // функция добавления объекта
objects.push_back(object);
}

void printObjects() { // функция печати объектов
for (const auto& object : objects) {
object->getCoordinates();
object->setColor("red");
cout << endl;
}
}
};
```

В классе Picture мы используем параметризованную коллекцию `vector`, чтобы хранить указатели на объекты класса Point. Мы добавляем функцию `addObject`, которая добавляет объекты в коллекцию. Мы также добавляем функцию `printObjects`, которая выводит характеристики объектов в коллекции, вызывая соответствующие функции установки цвета и получения координат.

Теперь давайте создадим демонстрационную программу для использования всех методов классов:

```c++
int main() {
Picture picture;

Point* coloredPoint = new ColoredPoint();
coloredPoint->setCoordinates(1, 1);
coloredPoint->setColor("blue");
picture.addObject(coloredPoint);

Line* coloredLine = new ColoredLine();
coloredLine->setCoordinates(1, 1, 2, 2);
coloredLine->setColor("green");
picture.addObject(coloredLine);

Line* polyLine = new PolyLine();
polyLine->setCoordinates(1, 1, 2, 2);
picture.addObject(polyLine);

picture.printObjects();

delete coloredPoint;
delete coloredLine;
delete polyLine;

return 0;
}
```

В этой программе мы создаем объект класса Picture и добавляем в него объекты разных типов (ColoredPoint, ColoredLine и PolyLine). Мы также вызываем функцию `printObjects` для вывода их характеристик. Затем, после завершения программы, мы освобождаем память, выделенную для объектов.

Дополнительное задание предлагает добавить классу Picture методы сортировки по некоторому критерию, вывода в файл и считывания из файла. Ниже приведены примеры этих методов:

```c++
#include
#include

bool compareByX(Point* a, Point* b) { // функция сравнения по координате x
return a->x < b->x;
}

void Picture::sortObjectsByX() { // функция сортировки объектов по координате x
sort(objects.begin(), objects.end(), compareByX);
}

void Picture::saveToFile(const string& filename) { // функция сохранения объектов в файл
ofstream file(filename);

if (file.is_open()) {
for (const auto& object : objects) {
file << "(" << object->x << ", " << object->y << ")" << endl;
}

file.close();
}
}

void Picture::loadFromFile(const string& filename) { // функция загрузки объектов из файла
ifstream file(filename);

if (file.is_open()) {
int x, y;
while (file >> x >> y) {
Point* point = new ColoredPoint();
point->setCoordinates(x, y);
addObject(point);
}

file.close();
}
}
```

Мы добавляем функцию `compareByX`, которая сравнивает две точки по координате x. Затем мы добавляем методы `sortObjectsByX`, `saveToFile` и `loadFromFile` в класс Picture. `sortObjectsByX` сортирует объекты в коллекции по координате x. `saveToFile` сохраняет все объекты в файл в формате `"(x, y)"`. `loadFromFile` загружает объекты из файла и добавляет их в коллекцию.

Теперь у нас есть полноценная программа, которая создает и использует классы Point, ColoredPoint, Line, ColoredLine, PolyLine и Picture, а также предоставляет возможность сортировки объектов, сохранения их в файл и загрузки из файла.
4,6(92 оценок)
Ответ:
Easy11111
Easy11111
05.04.2022
Здравствуй, будущий математик! Давай разберемся, как решить эту задачу.

Первым делом, нам нужно понять, каким образом находится самый большой прямоугольник в гистограмме. Для этого нам понадобится алгоритм.

Алгоритм нахождения самого большого прямоугольника в гистограмме:

1. Создаем пустой стек, в котором будем хранить индексы прямоугольников гистограммы.
2. Проходим по всем прямоугольникам слева направо.
3. Если стек пуст или высота текущего прямоугольника больше или равна высоте прямоугольника, находящегося в верхней части стека, кладем индекс текущего прямоугольника в стек.
4. Если высота текущего прямоугольника меньше высоты прямоугольника, находящегося в верхней части стека, то:
- Извлекаем индекс прямоугольника из верхней части стека и обозначим его как top.
- Вычисляем площадь прямоугольника, используя следующую формулу: (i - stack[top] - 1) * h[stack[top]], где i - текущий индекс, stack[top] - индекс прямоугольника в верхней части стека, h[stack[top]] - высота прямоугольника в верхней части стека.
- Сравниваем полученную площадь с максимальной площадью, которая была найдена до этого, и обновляем максимальную площадь, если новая площадь больше.
- Повторяем шаги 4 до тех пор, пока стек не станет пустым или пока высота текущего прямоугольника не станет больше или равной высоте прямоугольника, находящегося в верхней части стека.
5. После пройденной итерации, кладем текущий индекс в стек.
6. Повторяем шаги 2-5 до тех пор, пока не пройдем все прямоугольники в гистограмме.
7. Если стек не пуст, то повторяем шаг 4 для всех прямоугольников, находящихся в стеке.
8. Полученная максимальная площадь и будет ответом на задачу.

Теперь, когда мы разобрались с алгоритмом, приступим к его реализации на языке программирования Python.

```python
def max_rectangle_area(n, hist):
stack = [] # Инициализируем пустой стек
max_area = 0 # Инициализируем максимальную площадь как 0

i = 0
while i < n:
# Шаг 3
if len(stack) == 0 or hist[i] >= hist[stack[-1]]:
stack.append(i)
i += 1
# Шаг 4
else:
top = stack.pop()
area = hist[top] * ((i - stack[-1] - 1) if len(stack) > 0 else i)
max_area = max(max_area, area)

# Шаги 7 и 8
while len(stack) > 0:
top = stack.pop()
area = hist[top] * ((i - stack[-1] - 1) if len(stack) > 0 else i)
max_area = max(max_area, area)

return max_area

# Ввод данных
n = int(input())
hist = list(map(int, input().split()))

# Вызов функции и вывод результата
print(max_rectangle_area(n, hist))
```

Теперь все, что осталось сделать - ввести данные (число прямоугольников и их высоты) и получить ответ.

Удачи в изучении математики! Если у тебя возникнут еще вопросы, я всегда готов помочь.
4,4(62 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
Полный доступ к MOGZ
Живи умнее Безлимитный доступ к MOGZ Оформи подписку
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ