С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 07.05.2018
Сообщений: 15
1

Комментарии к программам

16.05.2018, 17:15. Показов 483. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, мне нужны подробные комментарии к практически каждой строке в программе, пожалуйста, помогите. При возможности помогите хотя бы с одной.

1) Найти все натуральные числа от 1 до 1000, которые совпадают с последними разрядами своих квадратов, например: 252 = 625; 762 = 5676

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include<bits/stdc++.h> 
 
int kc(int n) 
{
    int k = 0;
    while(n != 0)
    {
        k++; n/=10;
    }
    return k;
}
 
int c(int n, int k) 
{
    int kv = pow(n, 2) + 0.1;
    int p = pow(10, k) + 0.1;
    if(kv%p == n) return 1;
    else return 0;
}
 
int main()
{
    int k, i;
    for(i = 1; i <= 1000; i++)  
    {
        k = kc(i);
        if(c(i, k) == 1) 
        printf("%d ", i); 
    }
    printf("\n");
 
    return 0;
}
Составить программу, в результате работы которой минимальное и максимальное значение массивов С (8) и К (8) меняются местами. Написать функцию для обмена значениями.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include<bits/stdc++.h> 
 
void swap(int& a, int& b)
 {
  int t = b;
  b = a;
  a = t; 
}
 
int main() {
  const int N = 5;
  const int H = 5;
  int a[N], b[H], i = 0, j = 0, temp, i_max = 0, j_min = 0;
  setlocale(LC_ALL, "Russian");
  srand(time(NULL));
  printf("Первый массив:");
  for (i = 0; i < N; i++) 
  { 
    a[i] = rand() % 100 + 1;
    printf("\n%d", a[i]);
  }
  printf("\nВторой массив:");
  for (j = 0; j < H; j++) { 
    b[j] = rand() % 100 + 1;
    printf("\n%d", b[j]);
  }
  for (i = 0; i < N; i++)  
  {
 
    if (a[i] > a[i_max])
      i_max = i;
  }
  for (j = 0; j < H; j++)   
  {
    if (b[j] < b[j_min])
      j_min = j;
  }
  swap(a[i_max], b[j_min]);   
  printf("\n\n");
  printf("Первый массив с заменой:\n");
  for (i = 0; i < N; i++)  
  {
    printf("%d\n", a[i]);
  }
   printf("Второй массив с заменой:");
  for (j = 0; j < H; j++)  
   {
    printf("\n%d ", b[j]);
  }
  return 0; 
}
Заданное множество точек на плоскости. Найти выпуклую оболочку этого множества, то есть выпуклый многоугольник с вершинами в некоторых точках этого множества, который охватывает все его точки.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include<bits/stdc++.h>
using namespace std;
 
#define iPair pair<int, int>
 
set<iPair> hull;
 
int findSide(iPair p1, iPair p2, iPair p)
{
    int val = (p.second - p1.second) * (p2.first - p1.first) -
              (p2.second - p1.second) * (p.first - p1.first);
 
    if (val > 0)
        return 1;
    if (val < 0)
        return -1;
    return 0;
}
 
int dist(iPair p, iPair q)
{
    return (p.second - q.second) * (p.second - q.second) +
           (p.first - q.first) * (p.first - q.first);
}
 
int lineDist(iPair p1, iPair p2, iPair p)
{
    return abs ((p.second - p1.second) * (p2.first - p1.first) -
               (p2.second - p1.second) * (p.first - p1.first));
}
 
void quickHull(iPair a[], int n, iPair p1, iPair p2, int side)
{
    int ind = -1;
    int max_dist = 0;
 
    for (int i=0; i<n; i++)
    {
        int temp = lineDist(p1, p2, a[i]);
        if (findSide(p1, p2, a[i]) == side && temp > max_dist)
        {
            ind = i;
            max_dist = temp;
        }
    }
 
    if (ind == -1)
    {
        hull.insert(p1);
        hull.insert(p2);
        return;
    }
 
    quickHull(a, n, a[ind], p1, -findSide(a[ind], p1, p2));
    quickHull(a, n, a[ind], p2, -findSide(a[ind], p2, p1));
}
 
void printHull(iPair a[], int n)
{
    
    if (n < 3)
    {
        printf("Выпуклая оболочка не возможна\n");
        return;
    }
 
    int min_x = 0, max_x = 0;
    for (int i=1; i<n; i++)
    {
        if (a[i].first < a[min_x].first)
            min_x = i;
        if (a[i].first > a[max_x].first)
            max_x = i;
    }
 
    quickHull(a, n, a[min_x], a[max_x], 1);
 
    quickHull(a, n, a[min_x], a[max_x], -1);
 
    printf("Точки выпуклой оболочки:\n");
    while (!hull.empty())
    {
        cout << "(" <<( *hull.begin()).first << ", "
             << (*hull.begin()).second << ") ";
        hull.erase(hull.begin());
    }
}
int main()
{
    setlocale( LC_ALL,"Russian" );
    iPair a[] = {{1, 1}, {2, 2}, {0, -2}, {3, -1},
               {-2, -1}, {0, 1}, {0, 0}, {0, -1}, {-2, 1}, {-1, 3}};
    int n = sizeof(a)/sizeof(a[0]);
    printHull(a, n);
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.05.2018, 17:15
Ответы с готовыми решениями:

Нужны комментарии к программам
обьясните пожалуйста проги, что делают какие строчки 2.1. Алгоритм уравнения прямой y = ax + b....

Комментарии к программам
Кто хорошо разбирается помогите! Нужно написать коментарии к прогам. Пытался разобраться сам но для...

комментарии к программам
есть 2 программки, одна складывает 32-битные числа и выводит на экран &quot;картинку&quot;. ...

Написать комментарии к 2-ум программам
Не могу разобраться с программами, писал не сам, очень не хватает комментариев, буду очень...

2
3 / 3 / 1
Регистрация: 21.09.2017
Сообщений: 87
16.05.2018, 17:43 2
Вообще уровень программ абсолютно разный. Я попробую прокомментировать 1 и 2 код, стараясь не упустить почти ничего.
1)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include<bits/stdc++.h> 
 
int kc(int n)  //Создаём функцию целочисленного типа с параметром n
{
    int k = 0;
    while(n != 0) //Пока n не равно 0 выполняем
    {
        k++; n/=10; //k++(K=k+1);
    }
    return k; //Возвращаем из данной функции значения k
}
 
int c(int n, int k) //Создаём функцию целочисленного типа с 2 двумя параметрами 
{
    int kv = pow(n, 2) + 0.1; //Целое число k присвоить значение n во второй степени +0,1
    int p = pow(10, k) + 0.1; //Тоже самое, только для p (Обратите внимания, что здесь мы возводим 10 в k-тую степень)
    if(kv%p == n) return 1; //Если остаток от деления kv на p равен n то возвращаем 1(То есть да)
    else return 0; //Иначе нет
}
 
int main() //Главная функция
{
    int k, i; 
    for(i = 1; i <= 1000; i++)  //Создаём цикл от 1 до 1000 включительно
    {
        k = kc(i); //k мы присваиваем значение функции kc с параметром i
        if(c(i, k) == 1) //Если значение, которое мы передаём в функцию, то есть мы вызываем функцию C для параметров i, k
//равно единицы, то мы выводим целочисленный тип i
        printf("%d ", i); 
    }
    printf("\n"); //Переход на новую строку
 
    return 0; //Возвращаем ноль
 
}
Добавлено через 9 минут
2)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include<bits/stdc++.h> 
 
void swap(int& a, int& b) //Создаем функцию типа Void(Эта функция ничего не возвращает) Она выполняет обмен 
  //значениями
//Так же перед буквами a и b стоят адреса. Советую про них прочитать в интернете
 {
  int t = b; //Переменной t мы присваиваем параметр b
  b = a; //Параметру b присваиваем a
  a = t;  //Параметру a присваиваем t
}
 
int main() { //Главная функция
  const int N = 5; //Const -значит константа. В программе она не будет меняться вообще.
  const int H = 5;
  int a[N], b[H], i = 0, j = 0, temp, i_max = 0, j_min = 0; //Создаем массивы a и b размерностей constant и прочие нужные 
  //переменные в дальнейшем
  setlocale(LC_ALL, "Russian"); //Подключаем русский язык. Тогда в программе мы сможем писать русскими символами
  srand(time(NULL)); //Подключаем функцию рандома, чтобы задавать случайные значения
  printf("Первый массив:");
  for (i = 0; i < N; i++)  //Задаём первый массив с помощью цикла проходим.
  { 
    a[i] = rand() % 100 + 1; //Заполняем его случайными числами, ограничением его заполнения служил N (То есть будет 5 
 //элементов в массиве)
    printf("\n%d", a[i]); //Выводим его на экран
  printf("\nВторой массив:");
  for (j = 0; j < H; j++) {  //Второй массив делаем точно так же
    b[j] = rand() % 100 + 1;
    printf("\n%d", b[j]); // Так же выводим.
  }
  for (i = 0; i < N; i++)  //Проходим по массиву
  {
 
    if (a[i] > a[i_max]) //Ищем максимальный элемент в массиве
      i_max = i; //Присваиваем значения i_max переменной i
  }
  for (j = 0; j < H; j++)    //Тоже самое, только ищем минимум
  {
    if (b[j] < b[j_min])
      j_min = j;
  }
  swap(a[i_max], b[j_min]);   //Вызываем ранее написанную функцию для обмена значениями
  printf("\n\n"); //Переходим на 2 новые строчки вперёд
  printf("Первый массив с заменой:\n");
  for (i = 0; i < N; i++)  //Пробегаемся по массиву
  {
    printf("%d\n", a[i]); //И выводим новый массив
  }
   printf("Второй массив с заменой:"); //Здесь тоже самое
  for (j = 0; j < H; j++)  
   {
    printf("\n%d ", b[j]);
  }
  return 0; //Возвращаем ноль (Завершение программы)
}
Добавлено через 1 минуту
Вас такое устроит? Достаточно подробно?
1
0 / 0 / 0
Регистрация: 07.05.2018
Сообщений: 15
16.05.2018, 21:02  [ТС] 3
Да, большое спасибо!


Кто-нибудь сможет помочь с последней программой?
0
16.05.2018, 21:02
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.05.2018, 21:02
Помогаю со студенческими работами здесь

Нужны комментарии к программам
1 программа using System; using System.Collections.Generic; using System.Linq; using...

Написать комментарии к 2 программам
вычислить сумму ряда, используя while и do-while. Слагаемые, по модулю меньше заданного...

Нужны комментарии к двум программам
1 программа using System; using System.Collections.Generic; using System.Linq; using...

Напишите пожалуйста комментарии к программам, хочу разобраться
9-ый вариант


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Как написать микросервис на C# с Kafka, MediatR, Redis и GitLab CI/CD
InfoMaster 15.01.2025
В современной разработке программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот подход позволяет разделить сложную систему. . .
Что такое CQRS и как это реализовать на C# с MediatR
InfoMaster 15.01.2025
Концепция CQRS и её роль в современной разработке В современном мире разработки программного обеспечения архитектурные паттерны играют ключевую роль в создании масштабируемых и поддерживаемых. . .
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
Как написать микросервис на Go/Golang с Kafka, REST и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
Как написать микросервис с нуля на C# с RabbitMQ, CQRS, Swagger и CI/CD
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
Как создать игру "Танчики" на Unity3d и C#
InfoMaster 14.01.2025
Разработка игр – это увлекательный процесс, сочетающий в себе творчество и технические навыки. В этой статье мы рассмотрим создание классической игры "Танчики" с использованием Unity3D и языка. . .
Организую платный онлайн микро-курс по доработке Android-клиента Telegram
_Ivana 14.01.2025
Официальная версия и распространенные форки не полностью устраивают? Сделай свою кастомную версию клиента! 4 занятия по 2 часа (2 недели пн, ср 19:00-21:00 по Москве). Первое вводное занятие. . .
Как создать приложение для фитнеса для iOS/iPhone на Kotlin
InfoMaster 14.01.2025
Создание собственного фитнес-приложения — это не только захватывающий, но и полезный процесс, ведь оно может стать вашим верным помощником на пути к здоровому и активному образу жизни. В современных. . .
Как создать приложение магазина для iOS/iPhone на Swift
InfoMaster 14.01.2025
Введение в разработку iOS-приложений Разработка приложений для iPhone и других устройств на базе iOS открывает огромные возможности для создания инновационных мобильных решений. В данной статье мы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru