Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Узнать больше
другие проекты хабра
  • Хабр
  • Карьера
  • Фриланс
Задать вопрос
myjcom

Roman

  • 504
    вклад
  • 0
    вопросов
  • 387
    ответов
  • 76%
    решений
Ответы
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Достижения
  • Как нециклически вывести массив в консоль?

    myjcom
    Roman @myjcom Куратор тега C++
    Вообще, хотелось бы узнать как можно нециклически вывести файлы в папке через filesystem, в интернете и на форумах не получилось найти :(

    https://en.cppreference.com/w/cpp/filesystem/recur...
    Ответ написан более года назад
    Комментировать
    Комментировать
  • Какие вы посоветуете книги по Хаскелю?

    myjcom
    Roman @myjcom
    Сейчас потянуло на функциональное программирование. Выбрал Haskell как наиболее универсальный ЯП.

    Могу посоветовать больше чем книгу. Вот тут .
    Там тебе в первую очередь нужен раздел Общение в котором увидишь ссылки на телеграмм чаты.
    Тебе нужен @haskell_learn — чат для новичков
    И про книги те которые действительно стоит прочитать тебе там тоже расскажут, а можешь сразу спросить в основном канале @haskellru — основной хаскельный чат
    Ответ написан более года назад
    1 комментарий
    1 комментарий
  • Как удалить повторяющиеся слова в строках используя lines?

    myjcom
    Roman @myjcom Куратор тега C++
    //lines.erase(unique(lines.begin(), lines.end()), lines.end());

    ^^^
    Не тот unique использовать пытался.
    У std::list он свой

    auto in = ifstream("in.txt");
    auto out = ofstream("out.txt");
    list<string> ls;
    copy(istream_iterator<string>(in), {}, back_inserter(ls));
    ls.sort();
    ls.unique();
    copy(ls.begin(), ls.end(), ostream_iterator<string>(out, "\n"));
    Ответ написан более года назад
    Комментировать
    Комментировать
  • Как повторно просить ввести данные пока не введут верные?

    myjcom
    Roman @myjcom Куратор тега C++
    #include <iostream>
    using namespace std;
    
    struct MyData {
      int value;
      MyData(int v) : value(v){}
      MyData() : value(0){}
    };
    
    istream& operator>>(istream& is, MyData& data)
    {
      is >> data.value;
      return is;
    }
    
    ostream& operator<<(ostream& os, MyData& data)
    {
      os << data.value;
      return os;
    }
    
    bool operator==(const MyData& lh, const MyData& rh)
    {
      return lh.value == rh.value;
    }
    
    bool operator!=(const MyData& lh, const MyData& rh)
    {
      return !(lh.value == rh.value);
    }
    
    MyData try_read_while_not(MyData d, const string& message)
    {
      MyData val;
      while(val != d)
      {
        cout << message;
        cin  >> val;
      }
      return val;
    }
    
    int main()
    {
      MyData correct(42);
      MyData val = try_read_while_not(correct, "Введите значение: ");
      cout << val;
    }
    Ответ написан более года назад
    Комментировать
    Комментировать
  • Не получется вывести сколько одинаковых символов содержит строка?

    myjcom
    Roman @myjcom Куратор тега C++
    Без пробелов


    Конец ввода это комбинация клавиш Ctrl + D в Linux и Ctrl + Z в Windows

    #include <iostream>
    #include <map>
    
    using namespace std;
    
    int main()
    {
      map<char, int> table;
      char c = 0;
    
      while(cin >> c) table[c]++;
    
      for(auto [ch, cnt] : table)
      {
        cout << "symbol: '" << ch << "' count: " << cnt << "\n";
      }
    }


    С пробелами

    #include <iostream>
    #include <string>
    #include <map>
    
    using namespace std;
    
    int main()
    {
      map<char, int> table;
      string s;
      getline(cin, s);
    
      for(char c : s) table[c]++;
    
      for(auto [ch, cnt] : table)
      {
        cout << "symbol: '" << ch << "' count: " << cnt << "\n";
      }
    }



    С выводом русских букв еще разобраться надо.
    Ответ написан более года назад
    Комментировать
    Комментировать
  • Куда вписать printf?

    myjcom
    Roman @myjcom
    int main()
    {
      int n = 0;
      while((n = get_int("set a starting population size: ")) < 9)
      {
        printf("...");
      }
    }
    Ответ написан более года назад
    6 комментариев
    6 комментариев
  • Как преобразовать цикл while в рекурсию?

    myjcom
    Roman @myjcom Куратор тега C++
    как вместо цикла while можно использовать рекурсию

    int getLength(long long value) {
        return (value == 0) ? 0 : getLength(value / 10) + 1;
    }
    Ответ написан более года назад
    3 комментария
    3 комментария
  • Как складывать элементы двумерного массива с++?

    myjcom
    Roman @myjcom Куратор тега C++
    В С++ можно так

    #include <iostream>
    #include <algorithm>
    #include <string>
    #include <numeric>
    #include <vector>
    #include <iterator>
    
    using namespace std;
    
    //Придумай сам алгоритм число в строку или нагугли
    string lineNumberToString(int ln)
    {
      return to_string(ln) + " сторка ";
    }
    
    int main()
    {
      auto nums2dArray = vector<vector<int>>{{32,23}, {25,12}};
    
      transform(begin(nums2dArray), 
                end(nums2dArray), 
                ostream_iterator<string>(cout, "\n"), 
                [](auto row){
                  static int lineNumber = 1;
                  return lineNumberToString(lineNumber++) + 
                         to_string(accumulate(begin(row), end(row), 0));
      });
    }

    Ответ написан более года назад
    Комментировать
    Комментировать
  • Как найти сумму отрицательных элементов в массиве?

    myjcom
    Roman @myjcom
    Вычислить и напечатать сумму отрицательных одинаковых элементов.

    Раз

    #include <stdio.h>
    
    #define N 18
    
    int main()
    {
      int a[N] = {-5, -5, 6, 13, 10, 16, -18, -18, 11, 17, -3, -3, -7, -7, 9, 31, -4, -4};
      int checked[N] = {0};
      int total = 0;
    
      for(int i = 0; i < N - 1; i++)
      {
        if(a[i] < 0)
        {
          int sum = a[i];
          for(int j = i + 1; j < N; j++)
          {
            if(!checked[j] && a[i] == a[j])
            {
              sum += a[j];
              checked[j] = 1;
            }
          }
    
          if(sum != a[i])
          {
            total += sum;
          }
        }
      }
      (total) ? printf("total sum %d", total)
              : printf("not found");
      return 0;
    }


    Два

    #include <stdio.h>
    
    #define N 18
    
    int main()
    {
      int a[N] = {-5, -5, 6, 13, 10, 16, -18, -18, 11, 17, -3, -3, -7, -7, 9, 31, -4, -4};
    
      int checked[N] = {0};
    
      int total = 0;
    
      for(int i = 0; i < N - 1; i++)
      {
        if(a[i] < 0)
        {
          int count = 1;
    
          for(int j = i + 1; j < N; j++)
          {
            if(!checked[j] && a[i] == a[j])
            {
              count++;
              checked[j] = 1;
            }
          }
    
          if(count > 1)
          {
            total += a[i] * count;
            // Тут сложение можно заменить умножением
            printf("number %d count %d sum %d\n", a[i], count, a[i] * count);
          }
        }
      }
      (total) ? printf("total sum %d", total)
              : printf("not found");
      return 0;
    }

    Ответ написан более года назад
    Комментировать
    Комментировать
  • Ошибка «Системе не удается найти указанный путь». C++ Как пофиксить?

    myjcom
    Roman @myjcom Куратор тега C++
    Как пофиксить это?
    5fac6c754c847323947673.png


    https://en.cppreference.com/w/cpp/header/cmath
    #include<cmath>
    Ответ написан более года назад
    Комментировать
    Комментировать
  • Почему не работает и как лучше? Через for или if?

    myjcom
    Roman @myjcom Куратор тега C++
    int k = 30, m = 560, n = 99;
    int* a[] = { &k, &m, &n };
    
    for (int i = 0; i < std::size(a) - 1; ++i)
    {
      for (int j = 0; j < std::size(a) - i - 1; ++j)
      {
        if (*a[j] < *a[j + 1])
        {
          std::swap(*a[i], *a[i + 1]);
        }
      }
    }
    std::cout << k << " < " << m << " < " << n;
    Ответ написан более года назад
    2 комментария
    2 комментария
  • Найти цифру 7 в числе от 100 до 1000?

    myjcom
    Roman @myjcom Куратор тега C++
    Нужно сгенерировать 15 чисел от 100 до 1000(включая дробные) и вывести 15 чисел в которых есть цыфра 7.

    Ну в 15 сгенерированных числах может и не быть 15 чисел с цифрой 7.

    spoiler

    #include <iostream>
    #include <vector>
    #include <string>
    #include <random>
    #include <algorithm>
    #include <iterator>
    #include <iomanip>
    #include <limits>
    using namespace std;
    
    // Не важно, пусть будет так.
    auto getNRandomNumbersVecFromRange(const double low, const double hi, const int n){
      random_device rd;
      mt19937 gen(rd());
      uniform_real_distribution<> dis(low, hi);
      vector<double> randNumbersVec(n);
      generate_n(randNumbersVec.begin(), n, [&dis, &gen]{ return dis(gen); });
      return randNumbersVec;
    }
    
    int main()
    {
      auto numbers = getNRandomNumbersVecFromRange(100.0, 1000.0, 15);
    
      cout << setprecision(numeric_limits<double>::digits10 + 1);
    
      copy(numbers.cbegin(), numbers.cend(), ostream_iterator<double>(cout, "\n"));
    
      cout << "\n" << "result:" << "\n"; // "\nresult\n"
    
      // А это важно --> to_string(n).find('7') != string::npos
    
      copy_if(numbers.cbegin(), numbers.cend(),
              ostream_iterator<double>(cout, "\n"),
              [](auto n) { return to_string(n).find('7') != string::npos; });
    }

    Ответ написан более года назад
    1 комментарий
    1 комментарий
  • Какой тип имеет первое (левое) вхождение оператора в выражении succ succ "abc"?

    myjcom
    Roman @myjcom
    (Char -> Char) -> (Char -> Char) -> Char -> Char
    
    succ <$> succ <$> "abc" 
    fmap (succ . succ) "abc"
    
    let f = fmap succ "abc" 
    let f' = fmap succ f
    
    Enum a => (a -> a) -> (a -> a) -> a -> a
    Ответ написан более года назад
    Комментировать
    Комментировать
  • В чем может быть проблема при передаче контейнера "сложных" объектов по UDP?

    myjcom
    Roman @myjcom Куратор тега C++
    https://www.boost.org/doc/libs/1_72_0/libs/seriali...
    на русском -> https://github.com/Danchetto/Boost.Serialization/b...
    Ответ написан более двух лет назад
    1 комментарий
    1 комментарий
  • Как сложить числа из файла, если в строке определенное слово?

    myjcom
    Roman @myjcom Куратор тега C++
    Хоть твой вопрос и похож на задание (см. Правила)
    Но тем не менее, вот
    <наколенная болванка>

    #include<iostream>
    #include<string>
    #include<fstream>
    #include<algorithm>
    #include<vector>
    #include<iterator>
    #include<numeric>
    using namespace std;
    
    struct Record {
      string surname;
      string dbname;
      int salary;
    };
    
    istream& operator>>(istream& is, Record& r)
    {
      is >> r.surname;
      is.ignore(6, '|');
      is >> r.dbname;
      is.ignore(6, '|');
      is.ignore(6, '*');
      is >> r.salary;
      return is;
    }
    
    ostream& operator<<(ostream& os, const Record& r)
    {
      os << r.surname << " "
         << r.dbname  << " "
         << r.salary;
      return os;
    }
    
    int main()
    {
     vector<Record> database;
     if(ifstream file("databasename.db"); file)
     {
       copy(istream_iterator<Record>(file), {}, back_inserter(database));
     }
    
     string db;
     cin >> db;
    
     int acc = accumulate(database.begin(), database.end(), 0, [&](int init, Record const& rec){
         return (db == rec.dbname) ? init + rec.salary : init;
     });
    
     cout << db << ": " << acc;
    
     //copy(database.begin(), database.end(), ostream_iterator<Record>(cout, "\n"));
    }


    2. Сам
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Как вызвать функцию для всех элементов списка в Haskell?

    myjcom
    Roman @myjcom
    Или так
    λ> myfun = (^2)
    λ> myfun <$> [1, 2, 3]
    [1,4,9]
    
    λ> myfun = (^2)
    λ> map myfun [1, 2, 3]
    [1,4,9]


    Что больше подходит под определение

    Есть функция:
    pow2 x = x ^ 2


    Есть такой список:
    [1, 2, 3, 4, 5]

    Как вызвать функцию для всех элементов списка


    Хотя еще
    squares :: Num a => [a] -> [a]
    squares lst = do
        x <- lst
        return (x ^ 2)
    
    squares' :: Num a => [a] -> [a]
    squares' lst = lst >>= \x -> return (x ^ 2)
    
    squares'' :: Num a => [a] -> [a]
    squares'' lst = [x ^ 2 | x <- lst]
    
    fx f lst = [f x | x <- lst]
    
    main = do 
      print $ fx (^2)   [1, 2, 3]
      print $ squares   [1, 2, 3]
      print $ squares'  [1, 2, 3]
      print $ squares'' [1, 2, 3]
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Как просто реализовать чтение/запись файлов в Haskell?

    myjcom
    Roman @myjcom
    Совсем по-простому (ооочень упрощенно)
    module Main where
    
    import System.IO
    
    main :: IO ()
    main = do
      content <- readFile "file.dat"
      putStrLn content
    
      putStr "enter x = "
    
      -- Флюшим вывод не забываем про ленивость языка
      hFlush stdout 
    
      x <- getLine 
    
      print (read x :: Int)
    
      writeFile "file.dat" x


    Остальное сам в рамках понимания языка.

    О Haskell по-человечески (Д.Шевченко)
    https://www.ohaskell.guide

    А.Холомьев (более продвинутое)
    https://anton-k.github.io/ru-haskell-book/book/hom...

    Ну и Липовача learnyouahaskell.com есть на русском
    Уилл Курт "Программируй на haskell" тоже.

    Все остальное (а это мноого чего) скорее для тех кому это нужно.
    В любом случае можно поискать ответы тут https://wiki.haskell.org/Haskell

    Например начать с https://wiki.haskell.org/Introduction_to_IO там далее есть секция
    Further reading
    Надо вот это --> For a comprehensive tutorial on using IO monad, look at the Haskell I/O inside: Down the Rabbit's Hole
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Какую книгу купить ребенку по программированию?

    myjcom
    Roman @myjcom
    https://www.mann-ivanov-ferber.ru/books/javascript...
    https://www.mann-ivanov-ferber.ru/books/python-dly...
    Ответ написан более двух лет назад
  • Как перевести элемент строки в int?

    myjcom
    Roman @myjcom Куратор тега C++
    stoi -> https://en.cppreference.com/w/cpp/string/basic_str...

    upd:
    Ну Ок.

    std::string s = "123456789101112";
    int  i = s[2] - '0';
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Как проще в VIsual C/C++ заменить "//" на "/" в переданном аргументе командной строки?

    myjcom
    Roman @myjcom Куратор тега C++
    #include <iostream>
    #include <algorithm>
    #include <string>
    
    using namespace std;
    
    
    int main()
    {
      string s = "G:/Dev/MinGW/bin/Patch.exe -p0 -i"
                 " G:/avidemux_2.7.4/avidemux_core/..//avidemux_core/"
                 "ffmpeg_package//patches////////libavcodec_ac3_h.patch ";
          auto end = unique(s.begin(), s.end(), [](unsigned char l, unsigned char r){
              return l == '/' && r == '/';
          });
      s.erase(end, s.end());
      cout << s;
    }


    https://en.cppreference.com/w/cpp/algorithm/unique
    https://en.cppreference.com/w/cpp/algorithm/unique_copy

    в зависимости от степени мутабельности.
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
Оценили как «Нравится»
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • Следующие →
Самые активные сегодня
  • Евгений
    • 15 ответов
    • 0 вопросов
  • Drno
    • 10 ответов
    • 0 вопросов
  • AlexNest
    Александр Нестеров
    • 8 ответов
    • 0 вопросов
  • Rst0
    Rst0
    • 8 ответов
    • 0 вопросов
  • rPman
    • 8 ответов
    • 0 вопросов
  • dimonchik2013
    Dimonchik
    • 8 ответов
    • 0 вопросов
  • © Habr
  • О сервисе
  • Обратная связь
  • Блог

Войдите на сайт

Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации