• Существует ли компилятор в BASH?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    До чего же много извращенцев всяких в интернете.
    Ваш странный вопрос легко гуглится https://github.com/jcampbell05/bashjs
    Ответ написан
    Комментировать
  • Как считать предложение из файла и вывести его в несколько строк?

    @WAR_VIK
    Считанную из файла строку можно разбить по пробелам вот так:
    #include <iostream>
    #include <string>
    #include <vector>
    #include <sstream>
    
    int main() {
    std::string str{"This string in file"};
    std::stringstream s(str);
    std::vector<std::string> vec;
    std::string word{""};
    while(s >> word) vec.push_back(word);
    for(auto &i : vec) std::cout << i << '\n';
    return 0;
    }

    Или с помощью регулярного выражения:
    #include <iostream>
    #include <regex>
    #include <string>
    #include <vector>
    
    int main() {
    std::string str{"Hello! This string of your file"};
    std::regex reg{"\\S+"};
    std::vector<std::string> vec;
    std::smatch sm;
    while(std::regex_search(str, sm, reg)) {
          vec.push_back(sm.str());
          str = sm.suffix();
    }
    for(auto &i : vec) std::cout << i <<' \n';
    return 0;
    }

    Или реализовать указанный в первом ответе алгоритм:
    #include <iostream>
    #include <string>
    #include <vector>
    
    void split(std::string& str, std::vector<std::string>& vec) {
           std::string tmp{""}, delimiter{".!?"};
           int pos{0};
           for(int i{0}; i < str.length(); ++i) {
                   tmp += str[i];
                   pos = delimiter.find(str[i]);
                   if(pos > -1) {
                            vec.push_back(tmp); 
                            tmp = "";
                            while(str[i+1] == ' ') ++i;
                   }
           }
    }
    
    int main() {
            std::string s{"Hi bro! How are you?     This your string of file."};
            std::vector<std::string> res;
            split(s, res);
            for(auto& el : res) std::cout << el << '\n';
            return 0;
    }
    Ответ написан
    3 комментария
  • Есть ли разница для компьютера: x**3 или x*x*x?

    gbg
    @gbg Куратор тега Программирование
    Любые ответы на любые вопросы
    Для таких вопросов есть специальный инструмент.

    Препод прав.

    При возведении в маленькую натуральную степень (2-30) компилятор может использовать векторные инструкции и получить результат очень быстро.

    При использовании pow() происходит вызов специальной подпрограммы (что является относительно медленным делом), которая делает гораздо больше арифметических действий ( и работает только с числами с плавающей запятой, что потребует преобразования int->double )
    Ответ написан
    Комментировать