IPB

Здравствуйте, гость ( Вход | Регистрация )

7 страниц V  « < 5 6 7  
Reply to this topicStart new topic
> C/C++, Для новичков
Эроласт
сообщение 17 Apr 2017, 20:33 (Сообщение отредактировал Эроласт - 17 Apr 2017, 20:35)
Сообщение #121

Зануда
Сообщений: 2 236
Спасибо сказали: 2894 раза




Цитата(tolich @ 17 Apr 2017, 22:24) *
Цитата(t800 @ 17 Apr 2017, 17:51) *
Почему то русскими буквами писать нельзя?
Не положено. Вначале русскими, потом арабскими, потом еврейскими, и потом без толстого словаря программу не понять. Русскими транслитом тоже, собственно, нежелательно.

Русским транслитом тоже не положено всё по тем же причинам.
К слову, в некоторых интерпретируемых языках, вроде javascript и ruby, в названиях переменных допускаются любые буквы из юникода, но этой фичей никто в здравом уме всё равно не пользуется)

Цитата
а если писать на английском языке иногда забываешь что слово значит и потому путаешься

Борись с трудностями! Я хорошенько так натаскал свой английский как раз за счёт программирования smile.gif
Go to the top of the pageAdd Nick
 
+Quote Post
t800
сообщение 17 Apr 2017, 20:54 (Сообщение отредактировал t800 - 17 Apr 2017, 21:00)
Сообщение #122

Разработчик
Сообщений: 534
Спасибо сказали: 221 раз




Цитата(tolich @ 17 Apr 2017, 22:24) *
Цитата(t800 @ 17 Apr 2017, 17:51) *
Почему то русскими буквами писать нельзя?
Не положено. Вначале русскими, потом арабскими, потом еврейскими, и потом без толстого словаря программу не понять. Русскими транслитом тоже, собственно, нежелательно.


А по-моему очень даже здорово если писать на С++ по русски. Во-первых понятней (а то все время приходится каждую строчку в 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;
}


И все Работает!




--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
tolich
сообщение 18 Apr 2017, 08:16
Сообщение #123

😸🧡✊✌️
Сообщений: 16 002
Спасибо сказали: 2623 раза




Если компилятор воспринимает чёрт знает какие символы в качестве букв, это повод искать ему замену. Стандарт языка C++ чётко прописывает, какие символы считаются буквами. Всё остальное - нестандартное расширение и не сработает с другим компиляторе, лучше следующим стандарту.


--------------------
Я слежу за тобой!
* tolic.narod.ru

Lu...pa...gamhi...dho?


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
t800
сообщение 18 Apr 2017, 09:27 (Сообщение отредактировал t800 - 18 Apr 2017, 09:35)
Сообщение #124

Разработчик
Сообщений: 534
Спасибо сказали: 221 раз




Цитата(tolich @ 18 Apr 2017, 11:16) *
Если компилятор воспринимает чёрт знает какие символы в качестве букв, это повод искать ему замену. Стандарт языка C++ чётко прописывает, какие символы считаются буквами. Всё остальное - нестандартное расширение и не сработает с другим компиляторе, лучше следующим стандарту.


Не знаю я сейчас нагулил что Google перешел на Clang, а поодерживать GCC отказался https://www.opennet.ru/opennews/art.shtml?num=43567

ЗЫ Уже два года как перешел.


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
IQUARE
сообщение 18 Apr 2017, 10:16
Сообщение #125

Immortal
Сообщений: 6 761
Спасибо сказали: 7901 раз




Цитата
И все Работает!

Лучше бы ты писал все по-английски (и не транслитом, да), t800. Потому как такими уроками ты вряд ли кого-то обучишь.
Go to the top of the pageAdd Nick
 
+Quote Post
t800
сообщение 18 Apr 2017, 14:08 (Сообщение отредактировал t800 - 18 Apr 2017, 14:10)
Сообщение #126

Разработчик
Сообщений: 534
Спасибо сказали: 221 раз




Цитата(IQUARE @ 18 Apr 2017, 13:16) *
Цитата
И все Работает!

Лучше бы ты писал все по-английски (и не транслитом, да), t800. Потому как такими уроками ты вряд ли кого-то обучишь.


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

А когда я переписал класс по русски все стало намного понятней и наглядней и я наконец понял почему в учебнике написано что ОПП для челока понятней потому, что человек думает объектами. Просто учебники писали американы и они думают на английском и поэтому когда в классе все объекты английские оно конечно им понятней. А я по английски думать не умею и мне стало понятней как "им понятней" только когда класс переписал по русски. И ИМХО любому новичку кто думает на русском тоже так будет.


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
tolich
сообщение 18 Apr 2017, 14:12
Сообщение #127

😸🧡✊✌️
Сообщений: 16 002
Спасибо сказали: 2623 раза




Абстрактное мышление. Очень важный перк для программиста.


--------------------
Я слежу за тобой!
* tolic.narod.ru

Lu...pa...gamhi...dho?
Go to the top of the pageAdd Nick
 
+Quote Post
t800
сообщение 18 Apr 2017, 14:29 (Сообщение отредактировал t800 - 18 Apr 2017, 14:29)
Сообщение #128

Разработчик
Сообщений: 534
Спасибо сказали: 221 раз




Цитата(tolich @ 18 Apr 2017, 17:12) *
Абстрактное мышление. Очень важный перк для программиста.


Так ведь когда оно на русском то оно же много легче что-нибудь представить.
Вот я например вижу слово СТОЛ и у меня тут же в голове возникает образ стола, а если я вижу слово БИАО или ТЕБУРУ то никакого образа стола у меня в голове не возникает, потому что биао - это стол по китайски, а тебуру по японски, а я-то ведь думаю по русски. Поэтому если думаешь по русски то объекты ИМХО лучше писать тоже по русски, потому что так понятней и представить их тоже легче.


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
feanor
сообщение 18 Apr 2017, 14:42
Сообщение #129

laughed as one fey
Сообщений: 12 166
Спасибо сказали: 20581 раз




Не надо писать на русском по множеству причин (большинство из них надуманные и социальные, но тем не менее). Но на транслите в любом случае хуже, да.
Все равно надо знать английский для документации и стэковерфлоу

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

Цитата
К слову, в некоторых интерпретируемых языках, вроде javascript и ruby, в названиях переменных допускаются любые буквы из юникода, но этой фичей никто в здравом уме всё равно не пользуется)
В шарпе можно, в яве вроде тоже, потому что победа юникода над злом и мракобесием.



Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
t800
сообщение 18 Apr 2017, 14:54 (Сообщение отредактировал t800 - 18 Apr 2017, 14:56)
Сообщение #130

Разработчик
Сообщений: 534
Спасибо сказали: 221 раз




Цитата(feanor @ 18 Apr 2017, 17:42) *
Не надо писать на русском по множеству причин (большинство из них надуманные и социальные, но тем не менее). Но на транслите в любом случае хуже, да.
Все равно надо знать английский для документации и стэковерфлоу


Фух ну я же вовсе не говорю что ВСЕМ НАДО писать по русски, я просто сказал что решил разобраться в классах. И взял из английский пример про студентов и начал его разбирать и в нем запутался. Тогда я взял и переименовал все английские объекты в русски и стало много понятней, а когда переписал все объекты и фунции по-русски стало вообще просто и я наконец то понял почему американы в книжках пишут что ООП для человека понятней потому что он думает объектами -просто американы думают английскими объектами поэтому им оно сразу понятней, а другим становится так же понятней только когда они как американы на английком языке думать научатся, а если думать по русски а названия через переводчик переводить, то оно вовсе не понятней.


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
tolich
сообщение 18 Apr 2017, 15:05
Сообщение #131

😸🧡✊✌️
Сообщений: 16 002
Спасибо сказали: 2623 раза




Английский язык - айтишная лингва франка. К изучению обязательно.


--------------------
Я слежу за тобой!
* tolic.narod.ru

Lu...pa...gamhi...dho?
Go to the top of the pageAdd Nick
 
+Quote Post
t800
сообщение 18 Apr 2017, 15:20 (Сообщение отредактировал t800 - 18 Apr 2017, 15:20)
Сообщение #132

Разработчик
Сообщений: 534
Спасибо сказали: 221 раз




Цитата(tolich @ 18 Apr 2017, 18:05) *
Английский язык - айтишная лигва франка. К изучению обязательно.


Я разве против? Просто для того чтобы думать по английски как по русски надо английский выучить как русский, а когда думаешь про русски, а английский черех переводчик, то разобраться проще если писать объекты по русски.


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
t800
сообщение 18 Apr 2017, 17:32 (Сообщение отредактировал t800 - 18 Apr 2017, 18:00)
Сообщение #133

Разработчик
Сообщений: 534
Спасибо сказали: 221 раз




Kcтати, я тут занялся свои новым сайтом, и я тут подумал: а можно как нибудь сделать, чтобы можно было написать на сайте код, нажать на кнопку компилятора, и код после этого можно было на сайте запустить? Тогда я думаю, новичкам интересно было бы программировать, ибо не надо ставить никакие компиляторы, а можно просто писать код, собирать и выполнять прямо на сайте.


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
tolich
сообщение 18 Apr 2017, 19:41
Сообщение #134

😸🧡✊✌️
Сообщений: 16 002
Спасибо сказали: 2623 раза




http://cpp.sh/


--------------------
Я слежу за тобой!
* tolic.narod.ru

Lu...pa...gamhi...dho?


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
t800
сообщение 18 Apr 2017, 20:25 (Сообщение отредактировал t800 - 19 Apr 2017, 12:43)
Сообщение #135

Разработчик
Сообщений: 534
Спасибо сказали: 221 раз




Цитата(tolich @ 18 Apr 2017, 22:41) *


Класно!

ЗЫ Добавил его себе на сайт


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
tolich
сообщение 05 Jul 2018, 08:50 (Сообщение отредактировал tolich - 05 Jul 2018, 11:54)
Сообщение #136

😸🧡✊✌️
Сообщений: 16 002
Спасибо сказали: 2623 раза




Какая-то странная хрень с 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++


--------------------
Я слежу за тобой!
* tolic.narod.ru

Lu...pa...gamhi...dho?
Go to the top of the pageAdd Nick
 
+Quote Post
tolich
сообщение 16 Jan 2020, 09:42
Сообщение #137

😸🧡✊✌️
Сообщений: 16 002
Спасибо сказали: 2623 раза




Код
template<class T> const T operator++(T&t, int)
{
    T temp(t);
    ++t;
    return temp;
}


--------------------
Я слежу за тобой!
* tolic.narod.ru

Lu...pa...gamhi...dho?
Go to the top of the pageAdd Nick
 
+Quote Post
tolich
сообщение 20 Jan 2022, 17:27
Сообщение #138

😸🧡✊✌️
Сообщений: 16 002
Спасибо сказали: 2623 раза




Код
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;
}


--------------------
Я слежу за тобой!
* tolic.narod.ru

Lu...pa...gamhi...dho?
Go to the top of the pageAdd Nick
 
+Quote Post

7 страниц V  « < 5 6 7
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 29 March 2024 - 01:40
Copyright by Алексей Крючков
Strategy Gamez by GrayMage
Programming by Degtyarev Dmitry
  Яндекс.Метрика