Задать вопрос
  • Как сделать чтобы string считывался?

    myjcom
    @myjcom Куратор тега C++
    dmitrysergeevich198, опять?
    Что здесь не правильно?

    Как сделать чтобы string считывался?

    Не могу понять почему не получается с помощью getline это сделать.

    getline(cin, specialisty); локальной переменной с именем specialisty нет.
    #include <string> // не "string.h" (Си) и не <cstring>
    // ... 
    getline(cin, mvd->specialisty);
    // ...
    Ответ написан
  • Есть ли на специализации "Прикладная информатика" физика после 9 класса?

    myjcom
    @myjcom
    Программирование?
    Добрый день, планирую поступать в колледж на специальность прикладная информатика, но дело в том, что у меня очень плохо обстоят дела с физикой.

    Много ли будет физики

    ФГОС специальности 09.02.05 Прикладная информатика (по отраслям)
    Физики там нет, вообще нет.

    после 1 курса

    2 семестра 1-го курса будет физика в рамках школьной программы 10-11 класса, собственно как и остальные предметы. На первом курсе на базе 9 классов вы сжато осваиваете 2 года школы.
    Ответ написан
    Комментировать
  • Книги для новичка(для совсем новичка) Python?

    myjcom
    @myjcom
    Я полный ноль в программировании
    Что посоветуете новичку который только только начал?

    Пишут что эта годная:
    Starting Out with Python, 4th Edition / Начинаем программировать на Python
    инфо
    Год издания: 2019
    Автор: Tony Gaddis / Тони Гэддис
    Издательство: БХВ-Петербург
    ISBN: 978-5-9775-4002-5
    Язык: Русский


    P.S.
    Все что "Для чайников" лучше руками не трогать.

    Дополнительно
    The Python 3 Standard Library by Example / Стандартная библиотека Python 3: справочник с примерами, 2-е издание
    инфо
    од издания: 2019
    Автор: Doug Hellmann / Даг Хеллман
    Издательство: Диалектика
    ISBN: 978-5-6040043-8-8
    Язык: Русский


    Тут больше по алгоритмам (это же все таки Роберт Седжвик)
    Introduction to Programming in Python: An Interdisciplinary Approach / Программирование на языке Python.
    инфо
    Год издания: 2017
    Автор: Robert Sedgewick, Kevin Wayne, Robert Dondero / Роберт Седжвик, Кевин Уэйн, Роберт Дондеро
    Переводчик: Коваленко В.А.
    Издательство: Диалектика
    ISBN: 978-5-9908462-1-0
    Язык: Русский
    Ответ написан
    Комментировать
  • Как сделать двухмерный динамический массив в котором в одной ячейке может храниться несколько чисел?

    myjcom
    @myjcom Куратор тега C++
    #include <iostream>
    #include <vector>
    #include <tuple>
    using namespace std;
    
    int main()
    {
      vector<vector<tuple<int, int, int>>> values(3);
      values[0].emplace_back(1, 2, 3);
      values[1].emplace_back(4, 5, 6);
      values[2].emplace_back(7, 8, 9);
    
      for(const auto& xv : values)
      {
        for(const auto [one, two, three] : xv)
        {
          cout << one << " " << two << " " << three;
        }
        cout << "\n";
      }
      cin.get();
    }
    Ответ написан
    Комментировать
  • Где можно найти нормальный учебник по графам?

    myjcom
    @myjcom Куратор тега C++
    Касьянов В. Н., Евстигнеев В. А. - Графы в программировании: обработка, визуализация и применение
    Год выпуска: 2003
    Автор: В. Н. Касьянов, В. А. Евстигнеев
    Издательство: БХВ - Петербург
    ISBN: 5-94157-184-4
    Количество страниц: 1104

    P.S.

    Где я могу такое найти?

    там где весь мир ищет, если нет в библиотеке или магазине
    торренты уже 18 лет существуют.
    Ответ написан
    Комментировать
  • Не закрывается java фрейм, как исправить?

    myjcom
    @myjcom
    https://www.tutorialspoint.com/awt/awt_window_list...
    import java.awt.*;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    
    class CircleCanvas extends Canvas 
    {
      public void paint(Graphics g)
      {
        Dimension d = this.getSize();
        int diam = Math.min(d.width - 1, d.height - 1) - 60;
        g.drawOval(20, 20, diam, diam);
      }
    }
    
    class MyFrame extends Frame 
    {
      public MyFrame()
      {
        super("Painting");
        setBackground(Color.gray); // GRAY а не GREY
        setLayout(new GridLayout(3, 3));
        add(new CircleCanvas());
        setSize(500, 400);
        setVisible(true);
    
        // обработчик событий
        addWindowListener(new WindowAdapter()
        {
          public void windowClosing(WindowEvent we) 
          {
            System.exit(0);
          }	
        });
      }
    }
    
    public class RunGn
    {
      public static void main(String[] u) 
      {
        Frame f = new MyFrame();
      }
    }
    Ответ написан
    Комментировать
  • Что здесь не правильно?

    myjcom
    @myjcom Куратор тега C++
    Можно помочь с ответом, а не включать своё остроумие, подсказка небольшая.

    Больше не могу

    #include<iostream>
    #include<string>
    #include<vector>
    #include<iterator>
    #include<memory>
    #include<sstream>
    #include<Windows.h>
    using namespace std;
    
    enum class spType {ALL, SP, TH};
    
    class Policlinic
    {
    public:
      Policlinic();
      ~Policlinic();
      // ... 
      void addSpecialists(const string& s);
      void addTherapists(const string& s);
      void printPersonnel(spType = spType::ALL);
      // ...
      // Геттеры Сеттеры сам по шаблону
      // ...
    private:
      struct Personnel;
      unique_ptr<Personnel> m_personnel;
    
      string desk;
      string type;
    
      unsigned pharmacy = 0;
    
      friend istream& operator>>(istream& is, vector<string>& values);
      friend ostream& operator<<(ostream& os, const vector<string>& values);
    };
    
    struct Policlinic::Personnel
    {
      vector<string> specialists;
      vector<string> therapists;
    };
    
    Policlinic::Policlinic() : m_personnel(make_unique<Personnel>())
    {
    }
    
    Policlinic::~Policlinic()
    {
    }
    
    istream& operator>>(istream& is, vector<string>& values)
    {
      copy(istream_iterator<string>{is}, {}, back_inserter(values));
      return is;
    }
    
    ostream& operator<<(ostream& os, const vector<string>& values)
    {
      copy(values.begin(), values.end(), ostream_iterator<string>{os, "\n"});
      return os;
    }
    
    void Policlinic::addSpecialists(const string& s)
    {
      istringstream is(s);
      is >> m_personnel->specialists;
    }
    
    void Policlinic::addTherapists(const string& s)
    {
      istringstream is(s);
      is >> m_personnel->therapists;
    }
    
    void Policlinic::printPersonnel(spType stype)
    {
      switch(stype)
      {
      case spType::SP:
        cout << "Специалисты:\n"
             << m_personnel->specialists;
        break;
    
      case spType::TH:
        cout << "Терапевты:\n" 
             << m_personnel->therapists;
        break;
    
      default:
        cout << "[Весь персонал]\n";
             printPersonnel(spType::SP);
             printPersonnel(spType::TH);
        break;
      }
    }
    
    int main()
    {
      SetConsoleCP(1251);
      SetConsoleOutputCP(1251);
      setlocale(LC_ALL, "ru");
    
      Policlinic ply;
    
      // Для простоты
      string value;
      
      cout << "Введите врачей специалистов через пробел \n$: ";
      getline(cin, value);
      ply.addSpecialists(value);
      
      cout << "\nВведите врачей терапевтов через пробел\n$: ";
      getline(cin, value);
      ply.addTherapists(value);
     
      ply.printPersonnel(spType::ALL);
    
      system("pause");
    }

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

    myjcom
    @myjcom Куратор тега C++
    Из описания

    #include<iostream>
    #include<vector>
    #include<iterator>
    #include<algorithm>
    #include<fstream>
    #include<numeric>
    using namespace std;
    
    int get_min_even(const vector<int>& numbers)
    {
      vector<int> result;
      copy_if(numbers.cbegin(), numbers.cend(), 
              back_inserter(result), [](const int i){ return !(i % 2); });
      return *min_element(result.cbegin(), result.cend());
    }
    
    int main()
    {
      vector<int> numbers;
    
      ios_base::sync_with_stdio(false);
    
      if(ifstream in("D:\\numbers_in.txt"); in)
      {
        copy(istream_iterator<int>{in}, {}, back_inserter(numbers));
      }
    
      if(ofstream out("D:\\numbers_out.txt"); out)
      {
        out << get_min_even(numbers);
      }
    
      int count = numbers.size() - 2; // предположим 10
      
      for(int i = 0; i < count; ++i)
      {
        // вставка в начало вектора это BAD.
        numbers.push_back(accumulate(numbers.cbegin(), numbers.cend(), 0)); 
        numbers.erase(remove(numbers.begin(), numbers.end(), *min_element(numbers.begin(), numbers.end())));
      }
    
      // Это потому что вставляли в конец, теперь нужно перевернуть.
      reverse(numbers.begin(), numbers.end()); 
      // маленький костыль
      swap(numbers[count], numbers[count + 1]); 
    
      if(ofstream out("D:\\numbers_result_out.txt"); out)
      {
        copy(numbers.cbegin(), numbers.cend(), ostream_iterator<int>{out, "\n"});
      }
     
      cout << "Ok" << endl;
      cin.get();
    }

    Ответ написан
    Комментировать
  • Как сделать ввод элементов в динамический массив в классе?

    myjcom
    @myjcom Куратор тега C++
    Константин Подыганов,
    У меня при вводе ограничивается ввод до 5-ти символов, а я хочу ввести любое число, любого количества

    Допишешь сам?
    #include<iterator>
    #include<iostream>
    #include<algorithm>
    #include<memory>
    using namespace std;
    
    class Decmal
    {
    public:
      explicit Decmal(size_t size = 5);
      Decmal(const Decmal&);
      size_t get_size() const
      {
        return size;
      }
      // ...
    private:
      size_t size;
      unique_ptr<char> data;
      // ...
    private:
      void resize(size_t sz);
      friend istream& operator>>(istream& is, Decmal& dec);
      friend ostream& operator<<(ostream& os, const Decmal& dec);
    };
    
    Decmal::Decmal(size_t size) : size{ size }, data(new char[size])
    {
      fill_n(data.get(), size, '0');
    }
    
    Decmal::Decmal(const Decmal& rh)
    {
      size = rh.size;
      data.reset(new char[size]);
      copy_n(rh.data.get(), size, data.get());
    }
    
    void Decmal::resize(size_t new_size)
    {
      if(size < new_size)
      {
        data.reset(new char[new_size]);
        size = new_size;
      }
    }
    
    istream& operator>>(istream& is, Decmal& dec)
    {
      is.putback(is.get());
      size_t new_size = static_cast<size_t>(is.rdbuf()->in_avail() - 1);
    
      dec.resize(new_size);
    
      copy_n(istream_iterator<char>{is}, dec.size, dec.data.get());
      return is;
    }
    
    ostream& operator<<(ostream& os, const Decmal& dec)
    {
      copy_n(dec.data.get(), dec.size, ostream_iterator<char>{os});
      return os;
    }
    
    int main()
    {
      Decmal x;
    
      cin >> x;
    
      cout << x.get_size() << " " << x << endl;
    
      system("pause");
    }

    Константин Подыганов
    Не совсем понял принцип работы этого кода.

    Без всего

    #include<iterator>
    #include<iostream>
    #include<algorithm>
    
    using namespace std;
    
    class Decmal
    {
    public:
      explicit Decmal(size_t size = 5);
      Decmal(const Decmal&);
      ~Decmal(){ delete[] data; }
    
      size_t get_size() const
      {
        return size;
      }
      // ...
    private:
      size_t size;
      unsigned char* data = nullptr;
      // ...
    private:
      void resize(size_t sz);
      friend istream& operator>>(istream& is, Decmal& dec);
      friend ostream& operator<<(ostream& os, const Decmal& dec);
    };
    
    Decmal::Decmal(size_t size) : size{ size }, data(new unsigned char[size])
    {
      fill_n(data, size, '0');
    }
    
    Decmal::Decmal(const Decmal& rh)
    {
      size = rh.size;
      delete[] data;
    
      data = new unsigned char[size];
    
      copy_n(rh.data, size, data);
    }
    
    void Decmal::resize(size_t new_size)
    {
      if(size < new_size)
      {
        delete[] data;
        data = new unsigned char[new_size];
        size = new_size;
      }
    }
    
    istream& operator>>(istream& is, Decmal& dec)
    {
      char c = 0;
      size_t sz = 0;
    
      while(is.read(&c, 1) && c != '\n') // \n == 10 \r == 13
      {
        if(sz == dec.size)
        {
          unsigned char* tmp = new unsigned char[sz + 1];
          copy_n(dec.data, dec.size, tmp);
          dec.resize(sz + 1);
          copy_n(tmp, dec.size, dec.data);
          delete[] tmp;
        }
        dec.data[sz] = c;
        ++sz;
      }
    
      return is;
    }
    
    ostream & operator<<(ostream& os, const Decmal& dec)
    {
      copy_n(dec.data, dec.size, ostream_iterator<char>{os});
      return os;
    }
    
    int main()
    {
      Decmal x;
    
      cin >> x;
    
      cout << x.get_size() << " " << x << "\n";
    
      Decmal y = x;
    
      cout << y << endl;
    
      system("pause");
    }

    Ответ написан
    7 комментариев
  • Как сделать QGraphicsItem, который может быть и картинкой, и текстом?

    myjcom
    @myjcom Куратор тега C++
    QLabel может "быть" или картинкой, или текстом
    https://forum.qt.io/topic/82420/show-picture-using...
    Ответ написан
    Комментировать
  • Что почитать по современному C++ если уже программируешь, но на другом языке?

    myjcom
    @myjcom
    https://isocpp.org/wiki/faq/how-to-learn-cpp
    www.stroustrup.com/tour2.html
    shtonda.blogspot.com/2018/11/tour-c-plus-plus-stro...
    P.S.
    Литературы по современному С++ много (в оригинале намного больше), все не охватить ни в 1, ни в 5 книгах/курсах.
    https://en.cppreference.com/w/
    Ответ написан
    Комментировать
  • Как задать и считать бесконечность?

    myjcom
    @myjcom Куратор тега C++
    Code
    #include<iostream>
    #include<fstream>
    #include<limits>
    #include<vector>
    #include<iterator>
    #include<algorithm>
    #include<string>
    using namespace std;
    
    int main()
    {
      const string filein = "D:\\numbers_in.txt";
      const string fileout = "D:\\numbers_out.txt";
      vector<double> v;
    
      ios_base::sync_with_stdio(false);
    
      if(ifstream ifs(filein); ifs)
      {
        transform(istream_iterator<string>{ifs}, {}, back_inserter(v), [](const auto& xs){
          double d = numeric_limits<double>::infinity();
          try
          {
            d = stod(xs);
          }
          catch(...)
          {
            cout << "wrong\n";
          }
          return d;
        });
      }
    
      copy(v.begin(), v.end(), ostream_iterator<double>{cout, " "});
    
      if(ofstream ofs(fileout); ofs)
      {
        copy(v.begin(), v.end(), ostream_iterator<double>{ofs, " "});
      }
    
      cin.get();
    }

    numbers_in.txt
    -1.0 3.0e5 inf 23.01 55.003
    numbers_out.txt
    -1 300000 inf 23.01 55.003

    Для матрицы
    -1.0 3.0e5 inf
    5.0 inf 0.008
    1.45 3.99 -5.25

    +/- Аналогично

    #include<iostream>
    #include<fstream>
    #include<limits>
    #include<vector>
    #include<iterator>
    #include<algorithm>
    #include<string>
    #include<sstream>
    using namespace std;
    
    auto parse_line = [](istream& is)
    {
      vector<double> row;
      transform(istream_iterator<string>{is}, {}, back_inserter(row), [](const auto& xs){
          double d = numeric_limits<double>::infinity();
          try
          {
            d = stod(xs);
          }
          catch(...)
          {
            cout << "wrong\n";
          }
          return d;
        });
      return row;
    };
    
    int main()
    {
      const string filein = "D:\\numbers_in.txt";
      const string fileout = "D:\\numbers_out.txt";
    
      vector<vector<double>> matrix;
    
      ios_base::sync_with_stdio(false);
    
      if(ifstream ifs(filein); ifs)
      {
        string line;
        while(getline(ifs, line))
        {
          istringstream is{ line };
          matrix.push_back(parse_line(is));
        }
      }
    
      for(const auto& v : matrix)
      {
        copy(v.begin(), v.end(), ostream_iterator<double>{cout, " "});
        cout << "\n";
      }
      
      if(ofstream ofs(fileout); ofs)
      {
        for(const auto& v : matrix)
        {
          copy(v.begin(), v.end(), ostream_iterator<double>{ofs, " "});
          ofs << "\n";
        }
      }
    
      cin.get();
    }



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


    минимальный элемент среди этих элементов
    using Matrix = vector<vector<double>>;
    
    auto find_min = [](const Matrix& m)
    {
      vector<double> values;
      for(const auto& row : m)
      {
        values.push_back(*min_element(row.begin(), row.end()));
      }
      return *min_element(values.begin(), values.end());
    };
    
    // ... 
    
    cout << "Min element: " << find_min(matrix) << endl;

    Min element: -5.25
    Ответ написан
    Комментировать
  • Как работает стек?

    myjcom
    @myjcom
    А что делать, если элементы постоянно добавляются? Т.е я убрал 2 элемента, добавились еще 2 и так до бесконечности. Каким образом добраться до самого нижнего элемента?

    Персистентные структуры данных ----> Персистентный стек в частности
    Ответ написан
    Комментировать
  • Какие есть книги чтобы заполнить дыры по информатике и ИКТ?

    myjcom
    @myjcom
    Какие есть книги чтобы заполнить дыры по информатике и ИКТ?

    Что за дыры, конкретика не помешала бы.

    А так, или ждать перевод 13-го издания shtonda.blogspot.com/2018/07/computer-science-over...
    или найти (ищется) и прочитать 12 издание в оригинале (английский).
    или купить 13
    или довольствоваться отечественными учебниками по Информатике и ИКТ. (обо всем понемногу)

    посоветуйте книгу или другой ресурс которая бы охватывала все об икт и информатике

    Книги обо всем никогда небыло, нет и скорее всего никогда не будет.

    Тем более вы не рассказываете что у вас в бэкграунде имеется
    разброс огромный от серии "ХХХ для чайников" до Гарвардского курса CS50 ( на русском ;) )
    Ответ написан
    Комментировать
  • Что означает < в уравнение, и как его решить?

    myjcom
    @myjcom Куратор тега C++
    x++*n
    берем х умножаем на n, увеличиваем x на единицу. (постфиксный инкремент)

    А это уже
    (x+1)*n < n+1 // вы скобки забыли
    префиксный инкремент
    ++x * n < n + 1
    P.S.
    а выражение целиком это предикат
    Предикат в программировании — выражение, использующее одну или более величину с результатом булева типа.


    bool - type, capable of holding one of the two values: true or false.


    Зачем этот знак?

    less than operator C++
    1) Returns true if lhs is less than rhs, false otherwise.
    Ответ написан
    Комментировать
  • Как уменьшить количество аргументов функций?

    myjcom
    @myjcom
    Ответ написан
    Комментировать
  • Как исправить C2259?

    myjcom
    @myjcom Куратор тега C++
    // ...
    Effect(string n) : name{ n }{}
    virtual ~Effect() = 0;
    // ...
    // ...
    FireBall::FireBall(string _name) : Effect(_name), count{ 10 }
    {
    }
    // ...


    https://en.cppreference.com/w/cpp/memory/unique_ptr
    vector<unique_ptr<Effect>> effects;
    effects.push_back(make_unique<FireBall>("Огненный шар"));
    Ответ написан
    Комментировать
  • Почему мой код не работает согласно заданию?

    myjcom
    @myjcom Куратор тега C++
    int a{}, b{}, c{};
    cin >> a >> b >> c;
    cout << a * 100 + b * 10 + c;
    Ответ написан