Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
42 / 10 / 9
Регистрация: 13.03.2015
Сообщений: 74
1

Дефектация электродвигателя

03.08.2022, 18:54. Показов 1500. Ответов 21
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Изучал я пару лет назад Си и уткнулся в то, что без грамотного наставника дальше я далеко не продвинусь. Синтаксис я освоил, начал работать с библиотеками. Поигрался с OpenCV. Заинтересовало сетевое программирование. Написал небольшой чат в консоли и на этом забуксовал. Не понимал что дальше делать. Устроится джуном на си в моём регионе не реально, поэтому решил перейти на C++. Вот изучаю потихоньку. Заодно вспоминаю что уже умею. Надеюсь в дальнейшем развиться как то в этом направлении. На данный момент занимаюсь ремонтом электрических машин (в том числе). И для задач по дефектации электрических машин решил написать программу с выводом результатов в файл. В дальнейшем планирую каким то образом результаты экспортировать в файл xls. Почитал по форумам - советуют смотреть в сторону csv. Очень хочется научиться работать с формами. А пока я выкладываю начало программы. В дальнейшем разобью функции по файлам и сделаю вывод в файл. Много чего добавлю, а ненужное уберу. Если увидите у меня ошибки - сообщите, приму к сведению. Если подскажите как делать лучше - тоже буду только рад. Хотелось бы конечно устроиться куда нибудь джуном на C++ может подскажете куда мне стоит развиваться и к чему стремиться.
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
#include <iostream>
#include <string>
#include <windows.h>
using namespace std;
 
// Обьявление логических глобальных переменных (переключателей)
bool sw1, sw2, sw3;
 
int main()
{
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);
    //setlocale(LC_ALL, "rus");
    string defect_korp(int, string); // Обьявляется функция считывающая нарушения корпуса электродвигателя
    string defect_sal(int, string); // Обьявляется функция считывающая нарушения сальникового ввода
    string defect_klem(int, string); // Обьявляется функция считывающая нарушения клеммной коробки
    // Обьявление переменных в которых хранятся данные по нарушениям.
    string negKorp, negSal, negKlem;
    // Обьявление переменных с пунктами меню.
    short a,b,c;
    // Дефектация корпуса электродвигателя
    cout << "Укажите цифру меню:\nКорпус электродвигателя имеет следы нарушений?\n1: Да\n2: Нет\n";
    cin >> a;
    if (a == 1) negKorp=defect_korp(a, negKorp);
    // Дефектация сальникового ввода
    cout << "Укажите цифру меню:\nСальниковый ввод имеет следы нарушений?\n1: Да\n2: Нет\n";
    cin >> b;
    if (b == 1) negSal = defect_sal(b, negSal);
    // Дефектация клеммной коробки
    cout << "Укажите цифру меню:\nКлеммная коробка имеет следы нарушений?\n1: Да\n2: Нет\n";
    cin >> c;
    if (c == 1) negKlem=defect_klem(c, negKlem);
    
    sw1 = (a == 1) ? 1 : 0;
    sw2 = (b == 1) ? 1 : 0;
    sw3 = (c == 1) ? 1 : 0;
    if (sw1 == 1)
        cout << "Корпус электродвигателя имеет следы нарушений." << negKorp << endl;
    else
        cout << "Корпус электродвигателя не имеет следов нарушений.\n";
    if (sw2 == 1)
        cout << "Сальниковый ввод имеет следы нарушений." << negSal << endl;
    else
        cout << "Сальниковый ввод следов нарушений не имеет.\n";
    if (sw3 == 1)
        cout << "Клеммная коробка имеет следы нарушений." << negKlem << endl;
    else
        cout << "Клеммная коробка следов нарушений не имеет.\n";
 
 
    
    return 0;
}
 
string defect_korp(int a, string negKorp)
{
    if (a == 1)
    {
        cout << "Укажите нарушения корпуса электродвигателя: ";
        cin.get();
        getline(cin, negKorp);
    }
    return negKorp;
}
 
string defect_sal(int b, string negSal)
{
    if (b == 1)
    {
        cout << "Укажите нарушения сальникового ввода: ";
        cin.get();
        getline(cin, negSal);
    }
    return negSal;
}
 
string defect_klem(int c, string negKlem)
{
    if (c == 1)
    {
        cout << "Укажите нарушения клеммной коробки: ";
        cin.get();
        getline(cin, negKlem);
    }
    return negKlem;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.08.2022, 18:54
Ответы с готовыми решениями:

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

Программирование электродвигателя
Приветствую, нуждаюсь в литературе, примерах кода на С++, линейного асинхронного двигателя с...

расчет электродвигателя
день добрый! итак, пишу диссертацию, в моей идее необходимо рассчитать электродвигатель который...

Выбор электродвигателя
Здравствуйте. Столкнулся с такой задачей: поршневой компрессор работает на коллекторном двигателе...

Подключение электродвигателя
Всем привет, наверное дурацкий вопрос, но электродвигателями занимаюсь нечасто... У этого...

21
4857 / 2656 / 913
Регистрация: 29.11.2010
Сообщений: 5,732
03.08.2022, 19:25 2
Цитата Сообщение от EikahElle Посмотреть сообщение
using namespace std;
Смешивание неймспейсов целиком считается плохой практикой.

Цитата Сообщение от EikahElle Посмотреть сообщение
// Обьявление логических глобальных переменных (переключателей)
bool sw1, sw2, sw3;
Глобальные переменные в среднем -- плохая практика и должны быть очень хорошо обоснованы.
В вашем случае они не нужны.

Цитата Сообщение от EikahElle Посмотреть сообщение
string defect_korp(int, string); // Обьявляется функция считывающая нарушения корпуса электродвигателя
    string defect_sal(int, string); // Обьявляется функция считывающая нарушения сальникового ввода
    string defect_klem(int, string); // Обьявляется функция считывающая нарушения клеммной коробки
В этих forward-объявлениях нет нужды. Они лишь ухудшают читаемость.

Цитата Сообщение от EikahElle Посмотреть сообщение
// Обьявление переменных в которых хранятся данные по нарушениям.
    string negKorp, negSal, negKlem;
    // Обьявление переменных с пунктами меню.
    short a,b,c;
В С++ считается хорошим тоном иметь наименьший scope у переменных.
Не надо сначала все переменные объявлять, а потом ими пользоваться. Объявляйте в наименьшей области видимости непосредственно перед использованием.

Цитата Сообщение от EikahElle Посмотреть сообщение
sw1 = (a == 1) ? 1 : 0;
    sw2 = (b == 1) ? 1 : 0;
    sw3 = (c == 1) ? 1 : 0;
Булевые переменные работают проще. В этом случае тернарные операторы не нужны.
sw1 = a == 1;


Логику программы не рассматриваю.

Добавлено через 6 минут
Цитата Сообщение от EikahElle Посмотреть сообщение
В дальнейшем планирую каким то образом результаты экспортировать в файл xls. Почитал по форумам - советуют смотреть в сторону csv.
Библиотеки есть для всего. CSV полегче, XML, JSON потяжелее, но функционал больше.

Цитата Сообщение от EikahElle Посмотреть сообщение
Очень хочется научиться работать с формами.
Есть из чего выбирать: C++ UI Libraries

Цитата Сообщение от EikahElle Посмотреть сообщение
может подскажете куда мне стоит развиваться и к чему стремиться
Продолжайте тренироваться писать код на плюсах, заодно выберите и прокачивайте основное направление развития -- гуй, игры, системное, драйверы, утилиты...
2
4263 / 3322 / 925
Регистрация: 25.03.2012
Сообщений: 12,515
Записей в блоге: 1
03.08.2022, 19:36 3
Цитата Сообщение от EikahElle Посмотреть сообщение
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
string defect_korp(int a, string negKorp)
{
    if (a == 1)
    {
        cout << "Укажите нарушения корпуса электродвигателя: ";
        cin.get();
        getline(cin, negKorp);
    }
    return negKorp;
}
string defect_sal(int b, string negSal)
{
    if (b == 1)
    {
        cout << "Укажите нарушения сальникового ввода: ";
        cin.get();
        getline(cin, negSal);
    }
    return negSal;
}
string defect_klem(int c, string negKlem)
{
    if (c == 1)
    {
        cout << "Укажите нарушения клеммной коробки: ";
        cin.get();
        getline(cin, negKlem);
    }
    return negKlem;
}
если это не заглушки для чего-то большего, а каждая функция реально нужна просто чтоб вывести одну строку и ввести другую. То этот пример - демонстрация абсолютного непонимания "что такое функция". Тут должна быть одна функция.

Кроме того использование этого string negKorp и аналогов в параметрах - демонстрирует, что автор абсолютно не понимает, что такое параметры функции и локальные переменные, он думает, что если он хочет получать значения negKorp из функции, то сначала нужно передать его в неё, а потом вернуть. почему автор не написал
C++
1
2
3
4
5
6
7
8
string defect(string prompt)
{
   string  temp;
        cout << prompt;
        cin.get();
        getline(cin, temp);
    return temp;
}
а потом не вызвал так?
C++
1
2
3
4
5
6
7
8
9
    if (a == 1) negKorp=defect("Укажите нарушения корпуса электродвигателя: ");
    // Дефектация сальникового ввода
    cout << "Укажите цифру меню:\nСальниковый ввод имеет следы нарушений?\n1: Да\n2: Нет\n";
    cin >> b;
    if (b == 1) negSal = defect("Укажите нарушения сальникового ввода: ");
    // Дефектация клеммной коробки
    cout << "Укажите цифру меню:\nКлеммная коробка имеет следы нарушений?\n1: Да\n2: Нет\n";
    cin >> c;
    if (c == 1) negKlem=defect("Укажите нарушения клеммной коробки: ");
ответ... дай угадаю... он боится, что getline(cin, temp) не присвоит negKorp в переменную negKorp
Переменная же называется temp... ужас какой, а вдруг мы выбрасываем значение вникуда???
ну то есть автор не понимает различие глобальных и локальных переменных и не понимает принципы вызова функции в различных контекстах.
2
42 / 10 / 9
Регистрация: 13.03.2015
Сообщений: 74
03.08.2022, 20:57  [ТС] 4
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Кроме того использование этого string negKorp и аналогов в параметрах - демонстрирует, что автор абсолютно не понимает, что такое параметры функции и локальные переменные, он думает, что если он хочет получать значения negKorp из функции, то сначала нужно передать его в неё, а потом вернуть. почему автор не написал
Да. Виноват. Я подзабыл как передавать функции параметры. Надо почитать. Спасибо что обратили внимание. И подсказали правильный способ.
lemegeton, Kuzia domovenok.
Спасибо большое за аргументированную критику. Буду исправляться и работать над собой.

Добавлено через 59 минут
Я исправился в некоторых моментах. Обьявлять переменные перед использованием не стал. Увеличивается обьём. Ухудшается читаемость.
Это не конечный вариант. На сегодня всё. Завтра продолжу.

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
#include <iostream>
#include <string>
#include <windows.h>
using namespace std;
 
 
 
int main()
{
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);
    string defect(string);
    void output(int, int, int, int, int, int, int, string, string, string, string);
    // Обьявление переменных в которых хранятся данные по нарушениям.
    string negKorp, negSal, negKlem, negStat;
    // Обьявление переменных с пунктами меню.
    short a,b,c,d,d0,d1,d2;
    // Дефектация корпуса электродвигателя
    cout << "Укажите цифру меню:\nКорпус электродвигателя имеет следы нарушений?\n1: Да\n2: Нет\n";
    cin >> a;
    if (a == 1) negKorp=defect("Укажите нарушения корпуса электродвигателя: ");
    // Дефектация сальникового ввода
    cout << "Укажите цифру меню:\nСальниковый ввод имеет следы нарушений?\n1: Да\n2: Нет\n";
    cin >> b;
    if (b == 1) negSal = defect("Укажите нарушения сальникового ввода: ");
    // Дефектация клеммной коробки
    cout << "Укажите цифру меню:\nКлеммная коробка имеет следы нарушений?\n1: Да\n2: Нет\n";
    cin >> c;
    if (c == 1) negKlem = defect("Укажите нарушения клеммной коробки: ");
    // Дефектация статорных обмоток электродвигателя
    cout << "Укажите цифру меню:\nСтаторные обмотки электродвигателя имеют эксплуатационное загрязнение?\n1: Да\n2: Нет\n";
    cin >> d0;
    cout << "Укажите цифру меню:\nСтаторные обмотки электродвигателя имеют следы термических повреждений?\n1: Да\n2: Нет\n";
    cin >> d1;
    cout << "Укажите цифру меню:\nСтаторные обмотки электродвигателя имеют следы повреждений изоляционного эмалевого покрытия?\n1: Да\n2: Нет\n";
    cin >> d2;
    cout << "Укажите цифру меню:\nСтаторные обмотки электродвигателя имеют следы механических повреждений?\n1: Да\n2: Нет\n";
    cin >> d;
    if (d == 1) negStat= defect("Укажите нарушения статорных обмоток: ");
    // Дефектация ИДО-06
 
    // Вывод результатов
    output(a, b, c, d0, d1, d2, d, negKorp, negSal, negKlem, negStat);
    
 
 
    
    return 0;
}
 
string defect(string prompt)
{
    string  temp;
    cout << prompt;
    cin.get();
    getline(cin, temp);
    return temp;
}
 
void output(int a, int b, int c, int d0, int d1, int d2, int d, string negKorp, string negSal, string negKlem, string negStat)
{
    // Обьявление логических переменных (переключателей)
    bool sw1, sw2, sw3, sw4, sw5, sw6, sw7;
    sw1 = a == 1; // Корпус электродвигателя
    sw2 = b == 1; // Сальниковый ввод
    sw3 = c == 1; // Клеммная коробка
    sw4 = d0 == 1; // Статорные обмотки: эксплуатационное загрязнение
    sw5 = d1 == 1; // Статорные обмотки: термические повреждения
    sw6 = d2 == 1; // Статорные обмотки: повреждения изоляционного эмалевого покрытия
    sw7 = d == 1; // Статорные обмотки: повреждения механические
 
    if (sw1 == 1)
        cout << "Корпус электродвигателя имеет следы нарушений." << negKorp << endl;
    else
        cout << "Корпус электродвигателя не имеет следов нарушений.\n";
    if (sw2 == 1)
        cout << "Сальниковый ввод имеет следы нарушений." << negSal << endl;
    else
        cout << "Сальниковый ввод следов нарушений не имеет.\n";
    if (sw3 == 1)
        cout << "Клеммная коробка имеет следы нарушений." << negKlem << endl;
    else
        cout << "Клеммная коробка следов нарушений не имеет.\n";
    if (sw5 || sw6 || sw7)
        cout << "Статорные обмотки электродвигателя находятся в неудовлетворительном состоянии. ";
    else
        cout << "Статорные обмотки электродвигателя находятся в удовлетворительном состоянии. ";
    if (sw4 == 1)
        cout << "Имеют эксплуатационное загрязнение. ";
    else
        cout << "Эксплуатационного загрязнения не имеют. ";
    if (sw5 == 1)
        cout << "Имеют термические повреждения. ";
    else
        cout << "Термических повреждений не имеют. ";
    if (sw6 == 1)
        cout << "Имеют повреждения изоляционного эмалевого покрытия. ";
    else
        cout << "Повреждений изоляционного эмалевого покрытия не имеют. ";
    if (sw7 == 1)
        cout << "Имеют механические повреждения: " << negStat << endl;
    else
        cout << "Механических повреждений не имеют.\n";
}
Добавлено через 1 минуту
Цитата Сообщение от lemegeton Посмотреть сообщение
Смешивание неймспейсов целиком считается плохой практикой.
Этого момента не понял. Так учат на курсах и в учебниках.
0
фрилансер
5840 / 5363 / 1102
Регистрация: 11.10.2019
Сообщений: 14,327
03.08.2022, 21:02 5
Цитата Сообщение от EikahElle Посмотреть сообщение
Так учат на курсах и в учебниках
значит, это - плохие курсы и учебники
1
447 / 315 / 62
Регистрация: 09.03.2016
Сообщений: 3,084
03.08.2022, 23:30 6
Что бы сам намотался якорь, надо написать вот эту беду?

Добавлено через 1 минуту
А я дурак руками мотал.

Добавлено через 3 минуты
high technology...
1
447 / 315 / 62
Регистрация: 09.03.2016
Сообщений: 3,084
03.08.2022, 23:39 7
https://www.cyberforum.ru/atta... 1659559166
Миниатюры
Дефектация электродвигателя  
1
42 / 10 / 9
Регистрация: 13.03.2015
Сообщений: 74
04.08.2022, 01:48  [ТС] 8
Цитата Сообщение от Наталья8 Посмотреть сообщение
Что бы сам намотался якорь, надо написать вот эту беду?
Я инженер-технолог и мастер ОТК. Слежу чтобы работниками выполнялись работы по технологиям согласованным с РМРС и РРР. Так же занимаюсь сдачей работ РМРС и РРР. А вот для сдачи работ необходимы акты. Акты дефектации, протоколы испытаний, извещения. Электрические машины - это не единственное направление которым мы занимаемся. Также электромонтаж и автоматика. Хотелось бы автоматизировать как то этот момент с актами, потому что он занимает какое то определённое время. Или хотя бы упростить его , чтобы можно было посадить на эту работу человека средних умственных способностей. Ну и паралельно хотелось бы научиться чему то новому.
2
3697 / 2647 / 761
Регистрация: 29.06.2020
Сообщений: 9,800
04.08.2022, 02:44 9
Цитата Сообщение от EikahElle Посмотреть сообщение
Или хотя бы упростить его , чтобы можно было посадить на эту работу человека средних умственных способностей. Ну и паралельно хотелось бы научиться чему то новому.
Это все осуществимо, но усилия придется приложить.
А также ознакомится и выбрать фреймворк для создания приложения(ий).
Фреймворк предоставляет :
- единую систему для создания GUI (формы, кнопочки и др. виджеты),
- единую систему работы со строками и локализации.
- работы с файлами, стандартными популярными форматами(xml и прочие), вплоть до создания отчетов (какого то документа, или просто макета для печати)
- поддержку мультимедиа, изображений, графиков и прочего бобра.
Все это скручивать по отдельности возможно, но это огромный кусок работы.

Добавлено через 4 минуты
Цитата Сообщение от EikahElle Посмотреть сообщение
Сообщение от lemegeton
Смешивание неймспейсов целиком считается плохой практикой.
Этого момента не понял. Так учат на курсах и в учебниках.
Пересечение имен приводит к ошибкам, в редких случаях довольно тонким.
Хорошая привычка, как можно меньше разбрасывать вокруг себя "граблей".

EikahElle, еще вас ждет довольно увесистый курс по ООП, которого в таком виде в "С" не было.
2
715 / 675 / 110
Регистрация: 29.05.2015
Сообщений: 4,066
04.08.2022, 06:59 10
Цитата Сообщение от EikahElle Посмотреть сообщение
Хотелось бы автоматизировать как то этот момент с актами, потому что он занимает какое то определённое время.
Самый простой способ "автоматизировать как то этот момент с актами" - это вывести стандартную форму акта на экран так, как она будет выглядеть в напечатанном виде, и с полями для заполнения в нужных местах. Что-бы открыть акт, запоолнить нужные поля и отправить на печать (сохранить и т.п.).
2
3697 / 2647 / 761
Регистрация: 29.06.2020
Сообщений: 9,800
04.08.2022, 11:28 11
Цитата Сообщение от alexu_007 Посмотреть сообщение
Самый простой способ
Цитата Сообщение от alexu_007 Посмотреть сообщение
это вывести стандартную форму акта на экран
Это далеко не самый простой способ, я бы даже сказал один из самых замороченных, по реализации.
1
447 / 315 / 62
Регистрация: 09.03.2016
Сообщений: 3,084
04.08.2022, 12:44 12
SmallEvil,
Прав.
Это серьёзная работа. Не для новичка.

Добавлено через 1 минуту
Может на бильдере.
Я такого не писал. Я не инженер технолог.

Добавлено через 1 минуту
Бильдер, это уже куча фреймворков, с gui_ом.
1
4263 / 3322 / 925
Регистрация: 25.03.2012
Сообщений: 12,515
Записей в блоге: 1
04.08.2022, 12:44 13
Алексей1153, SmallEvil, alexu_007, и главное Наталья8, вы тут все прикалываетесь? О чём тема?
2
4857 / 2656 / 913
Регистрация: 29.11.2010
Сообщений: 5,732
04.08.2022, 12:49 14
Цитата Сообщение от EikahElle Посмотреть сообщение
void output(int, int, int, int, int, int, int, string, string, string, string);
Не стоит делать форвард-декларации там, где можно написать функцию до её использования. Затрудняет чтение кода.
Если ещё возвращаемый тип не void, то оно похоже на создание переменной с конструктором.

Цитата Сообщение от EikahElle Посмотреть сообщение
// Обьявление переменных в которых хранятся данные по нарушениям.
    string negKorp, negSal, negKlem, negStat;
    // Обьявление переменных с пунктами меню.
Попробуйте объявлять переменные прямо непосредственно перед первым использованием. Читаемость улучшится.

Цитата Сообщение от EikahElle Посмотреть сообщение
void output(int a, int b, int c, int d0, int d1, int d2, int d, string negKorp, string negSal, string negKlem, string negStat)
{
    // Обьявление логических переменных (переключателей)
    bool sw1, sw2, sw3, sw4, sw5, sw6, sw7;
    sw1 = a == 1; // Корпус электродвигателя
    sw2 = b == 1; // Сальниковый ввод
    sw3 = c == 1; // Клеммная коробка
    sw4 = d0 == 1; // Статорные обмотки: эксплуатационное загрязнение
    sw5 = d1 == 1; // Статорные обмотки: термические повреждения
    sw6 = d2 == 1; // Статорные обмотки: повреждения изоляционного эмалевого покрытия
    sw7 = d == 1; // Статорные обмотки: повреждения механические
if (sw1 == 1)
        cout << "Корпус электродвигателя имеет следы нарушений." << negKorp << endl;
    else
        cout << "Корпус электродвигателя не имеет следов нарушений.\n";
    if (sw2 == 1)
        cout << "Сальниковый ввод имеет следы нарушений." << negSal << endl;
    else
        cout << "Сальниковый ввод следов нарушений не имеет.\n";
    if (sw3 == 1)
        cout << "Клеммная коробка имеет следы нарушений." << negKlem << endl;
    else
        cout << "Клеммная коробка следов нарушений не имеет.\n";
    if (sw5 || sw6 || sw7)
        cout << "Статорные обмотки электродвигателя находятся в неудовлетворительном состоянии. ";
    else
        cout << "Статорные обмотки электродвигателя находятся в удовлетворительном состоянии. ";
    if (sw4 == 1)
        cout << "Имеют эксплуатационное загрязнение. ";
    else
        cout << "Эксплуатационного загрязнения не имеют. ";
    if (sw5 == 1)
        cout << "Имеют термические повреждения. ";
    else
        cout << "Термических повреждений не имеют. ";
    if (sw6 == 1)
        cout << "Имеют повреждения изоляционного эмалевого покрытия. ";
    else
        cout << "Повреждений изоляционного эмалевого покрытия не имеют. ";
    if (sw7 == 1)
        cout << "Имеют механические повреждения: " << negStat << endl;
    else
        cout << "Механических повреждений не имеют.\n";
}
Хммм.
С подобной комплексной логикой программы вы очень быстро уедете в область, где читаемость и поддержка кода станет практически невозможна.

Стоит обобщить задачу и отделить данные от кода.
2
447 / 315 / 62
Регистрация: 09.03.2016
Сообщений: 3,084
04.08.2022, 12:57 15
https://www.cyberforum.ru/atta... 1659607003
Я как то послал учебник. Меня админ. того.... сего...
Миниатюры
Дефектация электродвигателя  
1
447 / 315 / 62
Регистрация: 09.03.2016
Сообщений: 3,084
04.08.2022, 13:05 16
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Алексей1153, SmallEvil, alexu_007, и главное Наталья8, вы тут все прикалываетесь? О чём тема?
Цитата Сообщение от EikahElle Посмотреть сообщение
Хотелось бы конечно устроиться куда нибудь джуном на C++ может подскажете куда мне стоит развиваться и к чему стремиться.
Почему? Тема достаточно широкая.
1
4857 / 2656 / 913
Регистрация: 29.11.2010
Сообщений: 5,732
04.08.2022, 13:11 17
Цитата Сообщение от EikahElle Посмотреть сообщение
Этого момента не понял. Так учат на курсах и в учебниках.
Иногда курсы и учебники устаревают, а то и вовсе учат плохому. )
Это всё прокатывает, пока вы не начинаете писать крупные программы с дополнительными библиотеками.
А потом начинается ад и появляются хорошие и плохие практики.

Пространства имён (namespace) в принципе появились потому, что программы стали очень большими, а количество красивых и удобных слов внезапно оказалось весьма и весьма ограниченным.

Сливать целые namespace-ы считается плохой практикой потому, что вы можете получить целый ряд ошибок, которые будет крайне трудно опознать.

Вот используете вы такой две библиотеки A и B.
И пишете using namespace.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
 
// в первой библиотеке
namespace A {
    int doSomething(double x) {
        return x * 2;
    }
}
 
// во второй библиотеке
namespace B {
    int doSomethingElse(int x) {
        return x * 3;
    }
}
 
using namespace A;
using namespace B;
 
int main() {
    std::cout << doSomething(10) << std::endl;
    std::cout << doSomethingElse(10) << std::endl;
}
И вродь всё работает. И результат как положено 20 и 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
#include <iostream>
 
// в первой библиотеке
namespace A {
    int doSomething(double x) {
        return x * 2;
    }
}
 
// во второй библиотеке
namespace B {
    int doSomething(int x) {
        return x * 3;
    }
    int doSomethingElse(int x) {
        return x * 3;
    }
}
 
using namespace A;
using namespace B;
 
int main() {
    std::cout << doSomething(10) << std::endl;
    std::cout << doSomethingElse(10) << std::endl;
}
Всё компилируется, а ответ неверный.
4
447 / 315 / 62
Регистрация: 09.03.2016
Сообщений: 3,084
04.08.2022, 13:18 18
Да... Учебник это одно. Практика другое.
1
4857 / 2656 / 913
Регистрация: 29.11.2010
Сообщений: 5,732
04.08.2022, 13:47 19
Цитата Сообщение от EikahElle Посмотреть сообщение
Этого момента не понял.
Чуть аллегории для понимания.

Вот есть у вас электрическая машина без мотора. Двухфазная. И вы на неё мотор хотите поставить.

Вам, допустим, подходит мотор Siemens 1LE1. Он, конечно, трёхфазный, но инженер-то разберётся, как подключить к двум фазам.

И вот вы говорите инженеру. "Пааставить на электрическую машину мотор 1LE1!"

И радостный уходите спать.

А потом вам прилетает, мол "не соответсвует заявленным характеристикам".

Вы, конечно, разбираться, и акааазывается, что дядюшка ляо тоже клепает мотор 1LE1. Но двухфазный!
Оказывается, инженер прикинул к носу, что у дядюшки ляо двигло больше подоходит, так как двухфазное.
Вот он его и влепил. А то, что вы имели в виду чет другое -- уже ваша проблема.

Надо было неймспейс указывать.
1
42 / 10 / 9
Регистрация: 13.03.2015
Сообщений: 74
04.08.2022, 17:43  [ТС] 20
Цитата Сообщение от SmallEvil Посмотреть сообщение
Это все осуществимо, но усилия придется приложить.
А также ознакомится и выбрать фреймворк для создания приложения(ий).
Я сейчас использую Visual Studio. Но мне рекомендовали смотреть в сторону QT.
Цитата Сообщение от SmallEvil Посмотреть сообщение
Пересечение имен приводит к ошибкам, в редких случаях довольно тонким.
Я понял этот момент. Буду искать выходы из этой ситуации.
Цитата Сообщение от alexu_007 Посмотреть сообщение
Самый простой способ "автоматизировать как то этот момент с актами" - это вывести стандартную форму акта на экран так, как она будет выглядеть в напечатанном виде, и с полями для заполнения в нужных местах. Что-бы открыть акт, запоолнить нужные поля и отправить на печать (сохранить и т.п.).
Я думал уже об этом. И наверное это пока что лучший способ для меня. Есть определённая форма согласованая с регистром и отступать от этой формы я не могу. Буду брать образец с пустыми полями и вставляться нужные данные в подходящие ячейки.
Цитата Сообщение от SmallEvil Посмотреть сообщение
еще вас ждет довольно увесистый курс по ООП, которого в таком виде в "С" не было.
Да. У меня есть книга по С++ и несколько курсов для начала. Я уже пролистал книгу и наткнулся на ООП. Курс будет действительно увесистый, но потихоньку я его освою. Я не думаю что там что то будет сложнее указателей из Си (указатель на указатель на массив из указателей на значения типа int).
Цитата Сообщение от lemegeton Посмотреть сообщение
Попробуйте объявлять переменные прямо непосредственно перед первым использованием. Читаемость улучшится.
Спасибо. Всё же ещё раз попробую.
Цитата Сообщение от lemegeton Посмотреть сообщение
Хммм.
С подобной комплексной логикой программы вы очень быстро уедете в область, где читаемость и поддержка кода станет практически невозможна.
И действительно. Программа выросла и я наблюдаю что я двигаюсь в ту область где читаемость и поддержка кода становится всё трудней и трудней. Буду искать способы решения.
Цитата Сообщение от lemegeton Посмотреть сообщение
Пространства имён (namespace) в принципе появились потому, что программы стали очень большими, а количество красивых и удобных слов внезапно оказалось весьма и весьма ограниченным.
Сливать целые namespace-ы считается плохой практикой потому, что вы можете получить целый ряд ошибок, которые будет крайне трудно опознать.
Спасибо, ответ по существу. Мне стало гораздо понятней.
Цитата Сообщение от lemegeton Посмотреть сообщение
Чуть аллегории для понимания.
Спасибо аллегорию я понял.
0
04.08.2022, 17:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.08.2022, 17:43
Помогаю со студенческими работами здесь

Подключение электродвигателя
Добрый вечер В электроники профан, кто может помочь есть Электродвигатель Mikroma SEK 25-1...

Расчет мощности электродвигателя
Не понимаю. Расскажите, пожалуйста, что делаю не так?

Модель электродвигателя в SolidWorks
Всем привет! Передо мной встала задача создать 3D модель электродвигателя, но не знаю как и с чего...

Реверс электродвигателя с концевиками
Например дан электродвигатель.Я нажимаю кнопку направо.Двигатель начинает вращаться, концевик...

Трудности с тягой электродвигателя
Народ, возникла проблемка! При подключнении к ардуинке нано коллекторного движка постоянного...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru