Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 20.12.2022
Сообщений: 17

Использование комментариев

01.07.2023, 20:37. Показов 1880. Ответов 30

Студворк — интернет-сервис помощи студентам
Ребят, подскажите, пожалуйста. Нужны ли тут комментарии или они здесь излишни? Чувствую меня засрут за такие комментарии. Я только начинаю программировать, поэтому не особо разбираюсь в этом.

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
#
pragma once
#include "Vector3D.h"
 
namespace Tetrahedron
{
 
    class Tetrader
    {
    protected:
        double surfaceArea;             // площадь
        double facets;                  // грани
        double edgeLength;              // длина ребра
        double volume;                  // объём
        double height;                  // высота
        double baseArea;                // площадь основания
        double diagonal;                // диагональ
        double sideFaceHeight;          // высота боковой грани
        double radiusoInscribedSphere;  // радиус вписанной сферы
        double radiusDescribedSphere;   // радиус описанной сферы
 
    public:
 
        // Constructors
        Tetrader();
 
 
        // Methods 
        // Вычисление объема тетраэдра на основе координат вершин
        double calculateVolume(const Vector3D& vertexA, const Vector3D& vertexB, const Vector3D& vertexC, const Vector3D& vertexD);
 
        // Вычисление длины ребра тетраэдра
        double calculateEdgeLength(const Vector3D& vertexA, const Vector3D& vertexB);
 
        // Вычисление площади грани тетраэдра на основе координат трех вершин
        double calculateFaceArea(const Vector3D& vertexA, const Vector3D& vertexB, const Vector3D& vertexC);
 
        // Вычисление радиуса вписанной сферы в тетраэдр
        double calculateInscribedSphereRadius(double volume, double faceArea);
 
        // Вычисление радиуса описанной сферы вокруг тетраэдра
        double calculateCircumscribedSphereRadius(double edgeLengthA, double edgeLengthB, double edgeLengthC, double volume);
 
        // Нормализация вектора
        void normalizeVector(Vector3D& vector);
 
    };
 
    class RegularTetrader : public Tetrader
    {
    public:
        // Constructors;
        RegularTetrader();
        RegularTetrader(double edgeLength);
 
        // Methods
        // Вычисление объема равногранного тетраэдра
        double calculateVolume();
 
        // Вычисление площади поверхности равногранного тетраэдра
        double calculateSurfaceArea();
 
        // Вычисление радиуса вписанной сферы равногранного тетраэдра
        double findingInscribedSphereRadius();
 
        // Вычисление радиуса описанной сферы равногранного тетраэдра
        double findCircumscribedSphereRadius();
 
        // Вычисление высоты  равногранного тетраэдра
        double calculateHeight();
 
        // Вычисление длины диагонали равногранного тетраэдра 
        double diagonalLength();
 
        // Вычисление площадь основания равногранного тетраэдра
        double calculateBaseArea();
 
        // Вычисление высоты боковой грани равногранного тетраэдра
        double calculateSideFaceHeight();
    };
};

Ну и тут:
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#include "Tetrader.h"
#include "Vector3D.h"
#include <cmath>
 
using namespace Tetrahedron;
 
// Tetrader Implementation
// Default Comstructor
Tetrader::Tetrader() : surfaceArea(0), facets(0), edgeLength(0), volume(0), height(0), radiusoInscribedSphere(0), radiusDescribedSphere(0) {};
 
 
// Methods
// Вычисление объема тетраэдра на основе координат вершин
double Tetrader::calculateVolume(const Vector3D& vertexA, const Vector3D& vertexB, const Vector3D& vertexC, const Vector3D& vertexD)
{
    Vector3D ab = vertexB - vertexA;
    Vector3D ac = vertexC - vertexA;
    Vector3D ad = vertexD - vertexA;
 
    double volume = (1.0 / 6.0) * std::abs(ab.dot(ac.cross(ad)));
    return volume;
}
 
// Вычисление длины ребра тетраэдра
double Tetrader::calculateEdgeLength(const Vector3D& vertexA, const Vector3D& vertexB)
{
    Vector3D ab = vertexB - vertexA;
 
    double edgeLength = std::abs(ab.dot(ab));
    return std::sqrt(edgeLength);
}
 
// Вычисление площади грани тетраэдра на основе координат трех вершин
double Tetrader::calculateFaceArea(const Vector3D& vertexA, const Vector3D& vertexB, const Vector3D& vertexC)
{
    Vector3D ab = vertexB - vertexA;
    Vector3D ac = vertexC - vertexA;
 
    double faceArea = 0.5 * std::abs(ab.cross(ac).dot(ab.cross(ac)));
    return faceArea;
}
 
// Вычисление радиуса вписанной сферы в тетраэдр
double Tetrader::calculateInscribedSphereRadius(double volume, double faceArea)
{
    double radius = (3.0 * volume) / faceArea;
    return radius;
}
 
// Вычисление радиуса описанной сферы вокруг тетраэдра
double Tetrader::calculateCircumscribedSphereRadius(double edgeLengthA, double edgeLengthB, double edgeLengthC, double volume)
{
    double radius = (edgeLengthA * edgeLengthB * edgeLengthC) / (4.0 * volume);
    return radius;
}
 
// Нормализация вектора
void Tetrader::normalizeVector(Vector3D& vector)
{
    vector.normalize();
}
 
 
 
 
// RegularTetrader Implementation
RegularTetrader::RegularTetrader() :Tetrader() {};
 
RegularTetrader::RegularTetrader(double edgeLength)
{
    this->edgeLength = edgeLength;
}
 
 
// Methods
// Вычисление объема равногранного тетраэдра
double RegularTetrader::calculateVolume()
{
    volume = (pow(edgeLength, 3) * sqrt(2)) / 12;
    return volume;
};
 
// Вычисление площади поверхности равногранного тетраэдра
double RegularTetrader::calculateSurfaceArea()
{
    surfaceArea = sqrt(3) * pow(edgeLength, 2);
    return surfaceArea;
}
 
// Вычисление радиуса вписанной сферы равногранного тетраэдра
double RegularTetrader::findingInscribedSphereRadius()
{
    radiusoInscribedSphere = (edgeLength * sqrt(6)) / 12;
    return radiusoInscribedSphere;
}
 
// Вычисление радиуса описанной сферы равногранного тетраэдра
double RegularTetrader::findCircumscribedSphereRadius()
{
    radiusDescribedSphere = (edgeLength * sqrt(6)) / 4;
    return radiusDescribedSphere;
}
 
// Вычисление высоты  равногранного тетраэдра
double RegularTetrader::calculateHeight()
{
    height = (edgeLength * sqrt(6)) / 3;
    return height;
}
 
// Вычисление длины диагонали равногранного тетраэдра 
double RegularTetrader::diagonalLength()
{
    diagonal = edgeLength * sqrt(2);
    return diagonal;
}
 
// Вычисление площадь основания равногранного тетраэдра
double RegularTetrader::calculateBaseArea()
{
    baseArea = (sqrt(3) * pow(edgeLength, 2)) / 4;
    return baseArea;
}
 
// Вычисление высоты боковой грани равногранного тетраэдра
double RegularTetrader::calculateSideFaceHeight()
{
    sideFaceHeight = (edgeLength * sqrt(6)) / 4;
    return sideFaceHeight;
}

Последний пример, прощу прощение за такое кол-во кода:
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#include <iostream>
#include <vector>
#include "function-tetrader.h"
#include "Vector3D.h"
 
// Главные функци
 
void processingTetrahedronOperations()
{
    bool exit = false;
 
    while (!exit)
    {
        // Вызов функции для выбора типа тетраэдра
        choosingShapeType();
 
        int choice;
        std::cin >> choice;
 
        // Объекты необходимые для выполнения операций 
        std::vector<Vector3D> vector;
        Tetrader tetrader;
        
 
        switch (choice)
        {
        case 1:
        {
            std::cout << "Что желаете найти?." << std::endl;
            std::cout << "1. Вычисление длины ребра тетраэдра." << std::endl;
            std::cout << "2. Вычисление объема тетраэдра на основе координат вершин." << std::endl;
            std::cout << "3. Вычисление площади грани тетраэдра на основе координат трех вершин." << std::endl;
            std::cout << "4. Вычисление радиуса вписанной сферы в тетраэдр." << std::endl;
            std::cout << "5. Вычисление радиуса описанной сферы вокруг тетраэдра." << std::endl;
 
            std::cout << "Ввод: ";
            std::cin >> choice;
 
            int count = 0;
 
            switch (choice)
            {
            case 0:
            {
                exit = true;
                system("pause");
                system("cls");
                
            }
            case 1:
            {
                count = 2;
 
                initializingVertexes(vector, count);
                double edgeLength = tetrader.calculateEdgeLength(vector[0], vector[1]);
 
                std::cout << "Результат: " << edgeLength << std::endl;
                break;
            }
            case 2:
            {
                count = 4;
 
                initializingVertexes(vector, count);
                double volume = tetrader.calculateVolume(vector[0], vector[1], vector[2], vector[3]);
 
                std::cout << "Результат: " << volume << std::endl;
                break;
            }
            case 3:
            {
                count = 3;
 
                initializingVertexes(vector, count);
                double faceArea = tetrader.calculateFaceArea(vector[0], vector[1], vector[2]);
 
                std::cout << "Результат: " << std::endl;
                break;
            }
            case 4:
            {
                std::cout << "Укажите объём: ";
            }
            default:
            {
                std::cout << "Ошибка выбора, попробуйте снова!";
                system("pause");
                system("cls");
                break;
            }
            }
            
            break;
        }
        default:
            break;
        }
    }
}
 
 
 
 
// Второстепенные функции 
// Выбор типа тетраэдра
void choosingShapeType()
{
    std::cout << "1. Использовать координаты вершины для выполнения операций с любым тетраэдром." << std::endl;
    std::cout << "2. Использовать правильный тетраэдр для выполнения операций." << std::endl;
    std::cout << "3. Использовать прямоугольный тетраэдр для выполнения операций." << std::endl;
    std::cout << "4. Использовать ортоцентричный тетраэдр для выполнения операций." << std::endl;
    std::cout << "5. Выйти в главное меню." << std::endl;
    std::cout << "Ввод: ";
}
 
// Инициализация вершин тетраэдра
void initializingVertexes(std::vector<Vector3D>& vector, int count) 
{
    for (int i = 0; i < count; i++)
    {
        double x;
        double y;
        double z;
 
        std::cout << "Координаты " << i + 1 << "-ой вершины:" << std::endl;
 
        std::cout << "x: ";
        std::cin >> x;
        std::cout << "y: ";
        std::cin >> y;
        std::cout << "z: ";
        std::cin >> z;
 
        Vector3D vertexes(x, y, z);
        vector.push_back(vertexes);
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.07.2023, 20:37
Ответы с готовыми решениями:

Удаление комментариев из файла
Решил написать программу которая удаляет комментарии из файла и пишет текст в другой файл, но она вдруг запинается на некоторых...

Нахождение двухстрочных комментариев
#include&lt;iostream&gt; #include&lt;string&gt; using namespace std; int main() { char str; cout&lt;&lt;&quot;fragment koda please&quot;&lt;&lt;endl; ...

Решение: Удаление комментариев // и /* */
может кому пригодится#include &lt;cwchar&gt; #include &lt;ostream&gt; #include &lt;istream&gt; #include &lt;iostream&gt; namespace nocomment { ...

30
 Аватар для Laborant666
208 / 101 / 20
Регистрация: 30.06.2020
Сообщений: 848
05.07.2023, 11:34
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от KSergey9 Посмотреть сообщение
Т.е. вы верите, что комментарий править забывают, а документацию точно нет?
По крайней мере это будет отражаться хотя бы в ветке изменений, что был правлен такой-то класс\метод и в случае чего туда полезут в первую очередь при ошибке. Или и это не делается особо?
0
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
05.07.2023, 11:38
Laborant666, не совсем я понял как ваш ответ относится к процитированному фрагменту.
Разумеется, правки кода (да и документации) фиксируются в системе контроля версий.
Но я говорил скорее не про случай, когда поправили - сломалось (ну хотя бы через месяц обнаружилось), а через год..два, а то и более.
0
 Аватар для Laborant666
208 / 101 / 20
Регистрация: 30.06.2020
Сообщений: 848
05.07.2023, 11:39
Цитата Сообщение от KSergey9 Посмотреть сообщение
Всё что я написал - это не ради даже спора с вами
Да не, я не пытаюсь спорить. Я основываюсь на собственном опыте. Коммерческого полноценного у меня не было опыта, но была работа в паре и втроём. Где-то месяца 4. И вечно меня эти комментарии заставляли спотыкаться. Особенно "это цикл, это конструктор, это переменная". Это было в тройке. А потом работали вдвоём два месяца с человеком совсем другим и как-то было легче гораздо без комментариев. При условии что я потом через месяцев 7 в этот код возвращался и не было особых проблем вникнуть. Единственные комменты что были это вот как раз предметная область от заказчика, это нетипичное и действительно не запомнишь ил не поймешь
0
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
05.07.2023, 11:43

Не по теме:

Вот буквально неделю назад был у меня неописуемый случай. Сам до сих пор не верю.
Вдруг приезжает от клиента жалоба "жму это - жму это - и не работает, взрывается".
Найдя место явной ошибки, по данным из системы контроля версий вижу, что код был сломан 6 лет назад. Т.е. он просто физически не мог работать.
Прикиньте, и никого это не парило, никто в этот if не заходил всё это время :) Сам удивляюсь



Добавлено через 1 минуту
Цитата Сообщение от Laborant666 Посмотреть сообщение
"это цикл, это конструктор, это переменная".
Конечно, это бестолковый и бредовый комментарий. Тут даже спорить смысла нет.

Добавлено через 1 минуту
Цитата Сообщение от Laborant666 Посмотреть сообщение
А потом работали вдвоём два месяца с человеком совсем другим и как-то было легче гораздо без комментариев.
Пока код колбасишь - оно конечно легче, меньше работы, да и и без этого знаешь что где.
В этом и профессионализм, считаю: предугадать где комментарий понадобится в будущем, а где - нет.
0
 Аватар для Laborant666
208 / 101 / 20
Регистрация: 30.06.2020
Сообщений: 848
05.07.2023, 11:47
Цитата Сообщение от KSergey9 Посмотреть сообщение
а через год..два, а то и более
Ну год даже. Одно и то же правится в год с какой частотой в среднем? Если правится чаще, чем того требует заказчик, то разве ж проблема в отсутствии комментариев? Это уже вопрос о другом. "Суперклассы", архитектура, криворукость банально. Я не говорю что комментарии не нужны, но это по мне костыль в большинстве случаев. Исключение - описать тз и для генерации документации их писать. А в остальном профитнее написать что б сразу было понятно

Добавлено через 2 минуты
Цитата Сообщение от KSergey9 Посмотреть сообщение
Пока код колбасишь - оно конечно легче, меньше работы, да и и без этого знаешь что где.
Я в конце уточнил - я потом вернулся в код через 7 месяцев и отсутствие комментариев на каждом шагу не помешало. Чисто тзшные были. А остальное понятно из имен, из-за srp и тд. Ну не знаю, может потом это расширится и дополнится, пока что такое у меня мнение. По крайней мере буду знать что написанный 5 лет комментарий и ниразу не правленный иногда оказывается лучше, чем вовсе без комментария
0
 Аватар для Наталья8
629 / 387 / 67
Регистрация: 09.03.2016
Сообщений: 4,310
05.07.2023, 12:08
Я понаписал такого, что без подробных коментариев боюсь не вьеду.
Прежде чем модифицировать код,
Садишься, и пытаешься его читать. На это уходит вечер.
Так вот, с подробными комментариями,
времяни на вьезд, потребуеться гораздо меньше.
0
 Аватар для Наталья8
629 / 387 / 67
Регистрация: 09.03.2016
Сообщений: 4,310
05.07.2023, 12:18
Аудио видео конвертер.
Перетаскиваю позавчера на ярлык аудиофайл, - хренак - программа виснет.
А с видео конвертирует.
Последний раз модернизировал, не помню. Месяца два, три.
Перерыл компьютер. Нашёл старую версию.
Два текста рядом, и построчно. А что я там менял.
Нашёл...
Я привинтил примочку к обработке видео.
Спрашивал у видеопотока его кодек.
А на аудио - видеопотока нету. Нельзя спрашивать кодек у того, чего нету...

Насобирал тексты до кучи. Что бы не искать по всему компьютеру.
0
 Аватар для Наталья8
629 / 387 / 67
Регистрация: 09.03.2016
Сообщений: 4,310
05.07.2023, 12:22
Вот когда я ту примочку на видео привинтил, я забыл проверить аудио_only.
Прошло время. И надо вьезжать снова...
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
05.07.2023, 12:23
Цитата Сообщение от Laborant666 Посмотреть сообщение
Я в конце уточнил - я потом вернулся в код через 7 месяцев и отсутствие комментариев на каждом шагу не помешало.
Это мнимый опыт. Советую выкинуть такое из головы. Если конечно предполагаете работу над чужим кодом или работу другими людьми над вашим.
У вас просто такой случай, что код был довольно прост (и его предметная область) и его можно читать без комментариев.
0
 Аватар для Наталья8
629 / 387 / 67
Регистрация: 09.03.2016
Сообщений: 4,310
05.07.2023, 12:28
Я туда даже хелпы на функции пишу....

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
avformat_alloc_output_context2(&encode_ctx, NULL, ext, video_dst_filename);
  
  AVOutputFormat *fmt = encode_ctx->oformat;
   /* Добавьте аудио- и видеопотоки, используя кодеки формата по умолчанию
  * и инициализировать кодеки. */
  bool video_codec_id = false;
  if (video_stream){
      if (fmt->video_codec != AV_CODEC_ID_NONE) {//  Посылает fmt->video_codec исходя из расширения (функция  выше)
          add_stream(video_st, fmt->video_codec, kf_bitrate, audio_bt);
  // ------------------------------- Вызов двух функций инициализации VIDEO
                      } 
 // printf("Input video codec_id: %s \n", avcodec_get_name(video_st->dec_ctx->codec_id));
     if (video_st->dec_ctx->codec_id == 71)video_codec_id = true;// Ахуенно сложная хуйня. Для wmv, кое что переключаеться
  }
0
05.07.2023, 12:41

Не по теме:

Цитата Сообщение от Наталья8 Посмотреть сообщение
Последний раз модернизировал, не помню. Месяца два, три.
Перерыл компьютер. Нашёл старую версию.
Два текста рядом, и построчно. А что я там менял.
Локальный git без всяких серверов спасает изумительно.
Прям тащусь с него. Наруливается на любую папку

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.07.2023, 12:41

считывание из файла без комментариев
в файле могут встречаться комментарии, задающиеся от символа # до конца строки Содержательные строки в файле имеют вид: имя1 = имя2...

Удаление комментариев из листинга программы
Создать программу, которая будет удалять из листинга программы на языке с++ (файл*.cpp) коментарии вида // коментарий. Для работы с...

Цвет комментариев в CODE::BLOCKS
Подскажите кто пользуется этой IDE и знает как изменить цвет комментариев: // Поянение, а то у меня монитор яркий и приходиться глаза...

Поиск и удаление комментариев из файла
Добрый вечер. Язык С++ изучаю недавно, помогите, пожалуйста, написать программу. Задача программы: найти комментарии в файле после // или...

Требуется проверка написанных комментариев к программе
Здравствуйте, проверьте и добавьте пожалуйста недостающие комментарии к действиям программы, которая считает введённые строки. Я написала...


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

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru