C/C++, Для новичков |
Здравствуйте, гость ( Вход | Регистрация )
C/C++, Для новичков |
17 Apr 2017, 20:33
(Сообщение отредактировал Эроласт - 17 Apr 2017, 20:35)
Сообщение
#121
|
|
Зануда Сообщений: 2 236 Спасибо сказали: 2894 раза |
Почему то русскими буквами писать нельзя? Не положено. Вначале русскими, потом арабскими, потом еврейскими, и потом без толстого словаря программу не понять. Русскими транслитом тоже, собственно, нежелательно.Русским транслитом тоже не положено всё по тем же причинам. К слову, в некоторых интерпретируемых языках, вроде javascript и ruby, в названиях переменных допускаются любые буквы из юникода, но этой фичей никто в здравом уме всё равно не пользуется) Цитата а если писать на английском языке иногда забываешь что слово значит и потому путаешься Борись с трудностями! Я хорошенько так натаскал свой английский как раз за счёт программирования |
|
|
17 Apr 2017, 20:54
(Сообщение отредактировал t800 - 17 Apr 2017, 21:00)
Сообщение
#122
|
|
Разработчик Сообщений: 534 Спасибо сказали: 221 раз |
Почему то русскими буквами писать нельзя? Не положено. Вначале русскими, потом арабскими, потом еврейскими, и потом без толстого словаря программу не понять. Русскими транслитом тоже, собственно, нежелательно.А по-моему очень даже здорово если писать на С++ по русски. Во-первых понятней (а то все время приходится каждую строчку в Google Переводчике проверять) а во-вторых ошибок меньше чем когда русские слова английскими буквами пишешь. ЗЫ Да и я все такие нагуглил как сделать чтоб компилятор понимал русские буквы. Для это надо сперва дать команду Код sudo apt-get install clang а потом вместо Код g++ uchenik.cpp -o uchenik компилировать командой Код clang++ uchenik.cpp -o uchenik И тогда он на русские буквы не ругается! Вот переписал код вот так Код /* ucheniki.h */ #include <string> class Ученики { public: // Установка имени ученики void установить_имя(std::string имя_ученика) { имя = имя_ученика; } // Получение имени ученика std::string получить_имя() { return имя; } // Установка фамилии ученика void установить_фамилия(std::string фамилия_ученика) { фамилия = фамилия_ученика; } // Получение фамилии ученика std::string получить_фамилия() { return фамилия; } // Установка промежуточных оценок void установить_оценки(int оценки_ученика[]) { for (int i = 0; i < 5; ++i) { оценки[i] = оценки_ученика[i]; } } // Установка среднего балла void установить_средний_балл(float балл) { средний_балл = балл; } // Получение среднего балла float получить_средний_балл() { return средний_балл; } private: // Промежуточные оценки int оценки[5]; // Средний балл float средний_балл; // Имя std::string имя; // Фамилия std::string фамилия; }; Код /* ucheniki.cpp */ #include <iostream> #include "ucheniki.h" int main() { // Создание объекта класса Uchnik Ученики ученик; std::string имя; std::string фамилия; // Ввод имени с клавиатуры std::cout << "Имя: "; getline(std::cin, имя); // Ввод фамилии std::cout << "Фамилия: "; getline(std::cin, фамилия); // Сохранение имени и фамилии в объект класса Ucheniki ученик.установить_имя(имя); ученик.установить_фамилия(фамилия); // Оценки int оценки[5]; // Сумма всех оценок int сумма = 0; // Ввод промежуточных оценок for (int i = 0; i < 5; ++i) { std::cout << "Оценка " << i+1 << ": "; std::cin >> оценки[i]; // суммирование сумма += оценки[i]; } // Сохраняем промежуточные оценки в объект класса Uchenik ученик.установить_оценки(оценки); // Считаем средний балл float средний_балл = сумма / 5.0; // Сохраняем средний балл в объект класса Uchenik ученик.установить_средний_балл(средний_балл); // Выводим данные по ученику std::cout << "Средний бал для ученика " << ученик.получить_имя() << " " << ученик.получить_фамилия() << " равен: " << ученик.получить_средний_балл() << std::endl; return 0; } И все Работает! -------------------- |
|
|
18 Apr 2017, 08:16
Сообщение
#123
|
|
😸🧡✊✌️ Сообщений: 16 027 Спасибо сказали: 2672 раза |
Если компилятор воспринимает чёрт знает какие символы в качестве букв, это повод искать ему замену. Стандарт языка C++ чётко прописывает, какие символы считаются буквами. Всё остальное - нестандартное расширение и не сработает с другим компиляторе, лучше следующим стандарту.
-------------------- |
|
|
18 Apr 2017, 09:27
(Сообщение отредактировал t800 - 18 Apr 2017, 09:35)
Сообщение
#124
|
|
Разработчик Сообщений: 534 Спасибо сказали: 221 раз |
Если компилятор воспринимает чёрт знает какие символы в качестве букв, это повод искать ему замену. Стандарт языка C++ чётко прописывает, какие символы считаются буквами. Всё остальное - нестандартное расширение и не сработает с другим компиляторе, лучше следующим стандарту. Не знаю я сейчас нагулил что Google перешел на Clang, а поодерживать GCC отказался https://www.opennet.ru/opennews/art.shtml?num=43567 ЗЫ Уже два года как перешел. -------------------- |
|
|
18 Apr 2017, 10:16
Сообщение
#125
|
|
Immortal Сообщений: 6 764 Спасибо сказали: 7910 раз |
Цитата И все Работает! Лучше бы ты писал все по-английски (и не транслитом, да), t800. Потому как такими уроками ты вряд ли кого-то обучишь. |
|
|
18 Apr 2017, 14:08
(Сообщение отредактировал t800 - 18 Apr 2017, 14:10)
Сообщение
#126
|
|
Разработчик Сообщений: 534 Спасибо сказали: 221 раз |
Цитата И все Работает! Лучше бы ты писал все по-английски (и не транслитом, да), t800. Потому как такими уроками ты вряд ли кого-то обучишь. Просто если делаешь класс по английски. Оно даже самому не очень понятно. Потому что я ведь думаю на русском, а не на английском и чтобы делать на английском приходится смотреть в словарь а потом писать слово, а потом опять смотреть в словарь чтобы вспомнить, что это слово значит. А когда я переписал класс по русски все стало намного понятней и наглядней и я наконец понял почему в учебнике написано что ОПП для челока понятней потому, что человек думает объектами. Просто учебники писали американы и они думают на английском и поэтому когда в классе все объекты английские оно конечно им понятней. А я по английски думать не умею и мне стало понятней как "им понятней" только когда класс переписал по русски. И ИМХО любому новичку кто думает на русском тоже так будет. -------------------- |
|
|
18 Apr 2017, 14:12
Сообщение
#127
|
|
😸🧡✊✌️ Сообщений: 16 027 Спасибо сказали: 2672 раза |
Абстрактное мышление. Очень важный перк для программиста.
-------------------- |
|
|
18 Apr 2017, 14:29
(Сообщение отредактировал t800 - 18 Apr 2017, 14:29)
Сообщение
#128
|
|
Разработчик Сообщений: 534 Спасибо сказали: 221 раз |
Абстрактное мышление. Очень важный перк для программиста. Так ведь когда оно на русском то оно же много легче что-нибудь представить. Вот я например вижу слово СТОЛ и у меня тут же в голове возникает образ стола, а если я вижу слово БИАО или ТЕБУРУ то никакого образа стола у меня в голове не возникает, потому что биао - это стол по китайски, а тебуру по японски, а я-то ведь думаю по русски. Поэтому если думаешь по русски то объекты ИМХО лучше писать тоже по русски, потому что так понятней и представить их тоже легче. -------------------- |
|
|
18 Apr 2017, 14:42
Сообщение
#129
|
|
laughed as one fey Сообщений: 12 166 Спасибо сказали: 20585 раз |
Не надо писать на русском по множеству причин (большинство из них надуманные и социальные, но тем не менее). Но на транслите в любом случае хуже, да.
Все равно надо знать английский для документации А проблемы с незапоминанием названий должна решать среда разработки и, шире, грамотная архитектура. Цитата К слову, в некоторых интерпретируемых языках, вроде javascript и ruby, в названиях переменных допускаются любые буквы из юникода, но этой фичей никто в здравом уме всё равно не пользуется) В шарпе можно, в яве вроде тоже, потому что победа юникода над злом и мракобесием. |
|
|
18 Apr 2017, 14:54
(Сообщение отредактировал t800 - 18 Apr 2017, 14:56)
Сообщение
#130
|
|
Разработчик Сообщений: 534 Спасибо сказали: 221 раз |
Не надо писать на русском по множеству причин (большинство из них надуманные и социальные, но тем не менее). Но на транслите в любом случае хуже, да. Все равно надо знать английский для документации Фух ну я же вовсе не говорю что ВСЕМ НАДО писать по русски, я просто сказал что решил разобраться в классах. И взял из английский пример про студентов и начал его разбирать и в нем запутался. Тогда я взял и переименовал все английские объекты в русски и стало много понятней, а когда переписал все объекты и фунции по-русски стало вообще просто и я наконец то понял почему американы в книжках пишут что ООП для человека понятней потому что он думает объектами -просто американы думают английскими объектами поэтому им оно сразу понятней, а другим становится так же понятней только когда они как американы на английком языке думать научатся, а если думать по русски а названия через переводчик переводить, то оно вовсе не понятней. -------------------- |
|
|
18 Apr 2017, 15:05
Сообщение
#131
|
|
😸🧡✊✌️ Сообщений: 16 027 Спасибо сказали: 2672 раза |
Английский язык - айтишная лингва франка. К изучению обязательно.
-------------------- |
|
|
18 Apr 2017, 15:20
(Сообщение отредактировал t800 - 18 Apr 2017, 15:20)
Сообщение
#132
|
|
Разработчик Сообщений: 534 Спасибо сказали: 221 раз |
Английский язык - айтишная лигва франка. К изучению обязательно. Я разве против? Просто для того чтобы думать по английски как по русски надо английский выучить как русский, а когда думаешь про русски, а английский черех переводчик, то разобраться проще если писать объекты по русски. -------------------- |
|
|
18 Apr 2017, 17:32
(Сообщение отредактировал t800 - 18 Apr 2017, 18:00)
Сообщение
#133
|
|
Разработчик Сообщений: 534 Спасибо сказали: 221 раз |
Kcтати, я тут занялся свои новым сайтом, и я тут подумал: а можно как нибудь сделать, чтобы можно было написать на сайте код, нажать на кнопку компилятора, и код после этого можно было на сайте запустить? Тогда я думаю, новичкам интересно было бы программировать, ибо не надо ставить никакие компиляторы, а можно просто писать код, собирать и выполнять прямо на сайте.
-------------------- |
|
|
18 Apr 2017, 19:41
Сообщение
#134
|
|
😸🧡✊✌️ Сообщений: 16 027 Спасибо сказали: 2672 раза |
-------------------- |
|
|
18 Apr 2017, 20:25
(Сообщение отредактировал t800 - 19 Apr 2017, 12:43)
Сообщение
#135
|
|
Разработчик Сообщений: 534 Спасибо сказали: 221 раз |
-------------------- |
|
|
05 Jul 2018, 08:50
(Сообщение отредактировал tolich - 05 Jul 2018, 11:54)
Сообщение
#136
|
|
😸🧡✊✌️ Сообщений: 16 027 Спасибо сказали: 2672 раза |
Какая-то странная хрень с UDL-ами.
Код std::cout << std::boolalpha << (5.+10.i) << " " << std::complex<double>(5.+10.i) << std::endl; выводитКод true (5,10) То есть, похоже, что complex<double> за каким-то хреном приводится к bool. То же самое, если результат записать в переменную выводимого типа (auto). Typeid переменной имеет имя "Cd". ???Edit: Цитата The ISO C++14 library also defines the ‘i’ suffix, so C++14 code that includes the ‘<complex>’ header cannot use ‘i’ for the GNU extension. The ‘j’ suffix still has the GNU meaning. Но срабатывает именно расширение GNU, результат _Complex double...Edit: solved Я забыл уточнить, что использовал qmake, надо было добавить в pro-файл: Код CONFIG += strict_c++
-------------------- |
|
|
16 Jan 2020, 09:42
Сообщение
#137
|
|
😸🧡✊✌️ Сообщений: 16 027 Спасибо сказали: 2672 раза |
Код template<class T> const T operator++(T&t, int)
{ T temp(t); ++t; return temp; } -------------------- |
|
|
20 Jan 2022, 17:27
Сообщение
#138
|
|
😸🧡✊✌️ Сообщений: 16 027 Спасибо сказали: 2672 раза |
Код namespace concat_helpers
{ auto size(const std::string &s) { return s.size(); } constexpr auto size(const char *p) { auto q = p; while (*q++); return q - p; } constexpr auto size(char) { return 1; } std::string append(std::string &d, const std::string &s) { return d.append(s); } std::string append(std::string &d, const char *p) { return d.append(p); } std::string append(std::string &d, char ch) { return d.append(1, ch); } template<class T> size_t size(T t) { return std::to_string(t).size(); } template<class T> std::string append(std::string &d, T t) { return d.append(std::to_string(t)); } } template<typename...T> std::string concat(T...args) { size_t size = (concat_helpers::size(args) + ...); std::string result; result.reserve(size); (concat_helpers::append(result, args), ...); return result; } -------------------- |
|
|
Текстовая версия | Сейчас: 25 April 2024 - 20:31 |
Copyright by Алексей Крючков
Programming by Degtyarev Dmitry |