Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- void sername() {
- std::string strs[]{ "Ivanov", "Petrov" };
- std::cout << strs[0].length() <<
- " " << strs[0] << std::endl;
- char** strs2 = new char* [5];
- strs2[0] = new char[] {"Kulibin" };
- strs2[1] = new char[] {"Larin" };
- std::cout << _msize(strs2[0]) / sizeof(char) - 1 <<
- " " << strs2[0] << std::endl;
- delete[] strs2[1];
- delete[] strs2[0];
- delete[] strs2;
- }
- // это шаблон
- template<typename T>
- T my_abs(T x) {
- return (x < 0) ? -x : x;
- }
- // это те перегрузки которые сделает шаблон, написанный выше
- int my_abs(int x) {
- return (x < 0) ? -x : x;
- }
- double my_abs(double x) {
- return (x < 0) ? -x : x;
- }
- // тут вызываем фукции реализованные шаблоном
- void task1() {
- std::cout << my_abs(5) << " ";
- std::cout << my_abs(5.4) << std::endl;
- }
- // вспоминали статические и динамические массивы
- void test_static_dinamic_array() {
- const int n = 0x1A;
- int arr[n];
- cout << n << " " << sizeof(arr) / sizeof(arr[0]) << endl;
- int arr2d[n][n]{};
- arr2d[4][12] = 1;
- arr2d[12][12] = 1;
- for (int k = 0; k < n; k++) {
- for (int m = 0; m < n; m++) {
- cout << arr2d[k][m] << " ";
- }
- cout << endl;
- }
- int* darr = arr; // просто указатель на память в стеке
- int sz = 7;
- int* dinamic_array = new int[sz]; // динамический массив
- // выделили память для хранинея указателей
- int** din_arr2d = new int* [sz];
- // выделли память для хранения набора чисел
- // по каждому указателю
- for (int k = 0; k < sz; k++) {
- din_arr2d[k] = new int[2];
- }
- // освободили память от хранения наборов чисел
- for (int k = 0; k < sz; k++) {
- delete[] din_arr2d[k];
- }
- // освободили память для хранения указателей на наборы чисел
- delete[] din_arr2d;
- delete[] dinamic_array;
- }
- // это тренировались выделить и очистить память для двумерных динамических массивов
- void main1() {
- char** arr = new char* [2];
- arr[0] = new char[] {'A', 'B'};
- arr[1] = new char[] {'C', 'D'};
- for (int k = 0; k < 2; k++) {
- for (int m = 0; m < 2; m++) {
- cout << arr[k][m] << " ";
- }
- cout << endl;
- }
- delete[] arr[0];
- delete[] arr[1];
- delete[] arr;
- }
- // расстояние посчитали
- double distance(double* p1, double* p2) {
- double d1 = (p1[0] - p2[0]);
- double d2 = (p1[1] - p2[1]);
- return sqrt(d1 * d1 + d2 * d2);
- }
- // тут все расчёты для 14 точек на плоскости
- void main() {
- int num_points = 14;
- int num_dim = 2;
- double** points = new double*[num_points];
- for (int k = 0; k < num_points; k++) {
- points[k] = new double[num_dim] {};
- }
- srand(13);
- for (int k = 0; k < num_points; k++) {
- points[k][0] = rand() % 10;
- points[k][1] = rand() % 10;
- }
- cout << "Average: " << endl;
- double x = 0, y = 0;
- for (int k = 0; k < num_points; k++) {
- x += points[k][0];
- y += points[k][1];
- }
- if (num_points > 0) {
- x /= num_points;
- y /= num_points;
- cout << "(" << x << "; " << y << ")" << endl;
- }
- cout << "Distance to (0; 0): " << endl;
- for (int k = 0; k < num_points; k++) {
- cout << sqrt(pow(points[k][0], 2) +
- points[k][1]*points[k][1]) << endl;
- }
- cout << "Distance to ("<< x << "; " << y <<"): " << endl;
- for (int k = 0; k < num_points; k++) {
- cout << sqrt( pow(points[k][0]-x, 2) +
- (points[k][1]-y) * (points[k][1]-y) ) << endl;
- }
- cout << "Points: " << endl;
- for (int k = 0; k < num_points; k++) {
- cout << "(" <<points[k][0] << "; " << points[k][1]
- << ")" << endl;
- }
- double max_dist = 0, curr_dist;
- int id_k1, id_k2;
- for (int k1 = 0; k1 < num_points; k1++) {
- for (int k2 = k1 + 1; k2 < num_points; k2++) {
- curr_dist = distance(points[k1], points[k2]);
- if (curr_dist > max_dist) {
- max_dist = curr_dist;
- id_k1 = k1;
- id_k2 = k2;
- }
- }
- }
- cout << "Max dist: " << endl;
- cout << "(" << points[id_k1][0] << "; " << points[id_k1][1] << ")" << endl;
- cout << "(" << points[id_k2][0] << "; " << points[id_k2][1] << ")" << endl;
- cout << max_dist << endl;
- for (int k = 0; k < num_points; k++) {
- delete[] points[k];
- }
- delete[] points;
- }
Advertisement
Add Comment
Please, Sign In to add comment