Форум программистов, компьютерный форум, киберфорум
Наши страницы
Комментарии
Войти
Регистрация
Восстановить пароль
  1. Старый комментарий
    Аватар для Avazart
    С++ «Неделя четвертая - Исключения - Исключения в классе Rational» #22
    C++
    1
    2
    3
    4
    
    Rational() {
            num = 0;
            den = 1;
        }
    Как насчет использовать список инициализации и перегрузить больше золота операторов?
    Например относительно int

    И деление на 0 мне кажется тут вполне уместно ибо сама операция / 0 по факту не происходит,
    Так что вероятно можно обойтись без проверки нуля в знаменателе.

    (1/2) / (0/1) = (1/0) т.е. бесконечность т.е. вроде INF / -INF для float.
    Запись от Avazart размещена 07.05.2018 в 10:10 Avazart вне форума
    Обновил(-а) Avazart 07.05.2018 в 13:29
  2. Старый комментарий
    Аватар для Avazart
    С++ «Неделя четвертая - Исключения - Исключения в классе Rational» #22
    C++
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    try 
    {
          Rational r(1, 0);
          auto x = Rational(1, 2) / Rational(0, 1);
    }
    catch (const invalid_argument& e) 
    {
      cerr<< e.what() <<endl;
    }
    catch (const domain_error& e) 
    {
      cerr<< e.what() <<endl;
    }
    Или еще проще используя базовый класс std::logic_error
    C++
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    try 
    {
          Rational r(1, 0);
          auto x = Rational(1, 2) / Rational(0, 1);
    }
    catch (const std::logic_error& e) 
    {
      cerr<< e.what() <<endl;
    }
    Запись от Avazart размещена 18.04.2018 в 11:54 Avazart вне форума
  3. Старый комментарий
    С++ «Неделя вторая - Контейнер set - Синонимы» #15
    Очень хорошо, спасибо. Когда начнешь разбирать задачи с курса Желтый пояс?
    Запись от MarkSD размещена 10.04.2018 в 00:00 MarkSD вне форума
  4. Старый комментарий
    Аватар для Avazart
    С++ «Неделя вторая - Контейнер vector - Очередь» #10
    Цитата:
    Очередь
    Цитата:
    C++
    1
    
    vector<bool> stack;
    Так стек или очередь?


    Цитата:
    Задание:
    Люди стоят в очереди, но никогда не уходят из её начала, зато могут приходить в конец и уходить оттуда. Более того, иногда некоторые люди могут прекращать и начинать беспокоиться из-за того, что очередь не продвигается.
    Вопрос что курил тот кто писал это задание?

    Цитата:
    Основы разработки на C++: белый пояс
    Наркомания, зеленый пояс.

    Бросайте этот курс пока не поздно ))).

    Цитата:
    C++
    1
    
    vector<bool>
    Плохое решение.
    Запись от Avazart размещена 22.12.2017 в 16:35 Avazart вне форума
    Обновил(-а) Avazart 22.12.2017 в 16:40
  5. Старый комментарий
    Аватар для Avazart
    С++ «Неделя третья - Введение в структуры и классы - Имена и фамилии» #17
    Цитата:
    C++
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
     void AddString(const string& s) 
    {
        v.push_back(s); //добавим строку
    }
     
    vector<string> GetSortedStrings() 
    {
        sort(begin(v), end(v)); //отсортируем вектор строк
        return v; //и вернем вектор
    }
    Почему бы сразу не содержать строки в отсортированном порядке? Т.е вставлять строку сразу в нужно место "по старшинству" ?

    Или ввести признак отсортированности что бы не сортировать повторно при повторных вызовах методах.
    Запись от Avazart размещена 25.10.2017 в 14:05 Avazart вне форума
  6. Старый комментарий
    С++ «Неделя третья - Введение в структуры и классы - Имена и фамилии» #17
    C++
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    class SortedStrings {
    public:
      void AddString(const string& s) {
        // добавить строку s в набор
        vstrings.push_back(s);
      }
      vector<string> GetSortedStrings() {
        // получить набор из всех добавленных строк в отсортированном порядке
        sort(vstrings.begin(), vstrings.end());
        return vstrings;
      }
    private:
      // приватные поля
      vector<string> vstrings;
    };
    Запись от flash_back размещена 24.10.2017 в 13:34 flash_back вне форума
  7. Старый комментарий
    С++ «Неделя вторая - Алгоритмы - Сортировка целых чисел по модулю, Сортировка без учета регистра» #16
    C++
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    
    #include <iostream>
    #include <vector>
    #include <string>
    #include <algorithm>
    #include <ctype.h>
     
    using namespace std;
     
    string str_low(string s){
        transform(s.begin(), s.end(), s.begin(), tolower);
        return s;
    }
     
    bool gt_abs(string s1,string s2) { 
        return (str_low(s1)<str_low(s2)); 
    }
     
    int main(){
        int n = 0;
        cin >> n;
        string temp = "";
        vector<string> v;
        for (int i=0;i<n;i++){
            cin >> temp;
            v.push_back(temp);
        }
        
        sort(v.begin(),v.end(),gt_abs);
     
        for (int i=0;i<v.size();i++){
            cout << v.at(i)<<" ";
        }
     
        return 0;
    }
    Запись от flash_back размещена 23.10.2017 в 13:18 flash_back вне форума
  8. Старый комментарий
    С++ «Неделя вторая - Алгоритмы - Сортировка целых чисел по модулю, Сортировка без учета регистра» #16
    C++
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    
    #include <iostream>
    #include <vector>
    #include <algorithm>
     
    using namespace std;
     
    bool gt_abs(int i,int j) { 
        return (abs(i)<abs(j)); 
    }
     
     
    int main(){
        int n = 0;
        cin >> n;
        int temp = 0;
        vector<int> v;
        for (int i=0;i<n;i++){
            cin >> temp;
            v.push_back(temp);
        }
        sort(v.begin(),v.end(),gt_abs);
        for (int i=0;i<v.size();i++){
            cout << v.at(i)<<" ";
        }
        return 0;
    }
    Запись от flash_back размещена 23.10.2017 в 13:04 flash_back вне форума
  9. Старый комментарий
    Аватар для Avazart
    С++ «Неделя вторая - Контейнер set - Синонимы» #15
    Да причем объявлять именно непосредственно перед использованием. Т.е. максимально локализовывать.
    Потом легче разобраться в коде и его редактировать.
    Запись от Avazart размещена 12.10.2017 в 20:17 Avazart вне форума
  10. Старый комментарий
    С++ «Неделя вторая - Контейнер set - Синонимы» #15
    Цитата:
    Сообщение от flash_back Просмотреть комментарий
    C++
    1
    2
    
        string s=""; /*согласен */
        int n = 0; /*переменные лучше сразу инициализировать*/
    Инициализировать переменные при объявлении - хорошая штука )))
    Запись от acmades размещена 12.10.2017 в 19:21 acmades вне форума
  11. Старый комментарий
    С++ «Неделя вторая - Контейнер set - Синонимы» #15
    C++
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
    #include <iostream>
    #include <set>
    #include <string>
     
    using namespace std;
     
    int main()
    {
        set<string> str_set;
        string s="";
        int n = 0;
        cin >> n;
        for (int i=0;i<n;i++){
            cin >> s;
            str_set.insert(s);
        }
        cout << str_set.size() << endl;
        return 0;
    }
    Запись от flash_back размещена 12.10.2017 в 13:04 flash_back вне форума
  12. Старый комментарий
    С++ «Неделя вторая - Контейнер map - Анаграммы» #12
    C++
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    
    #include <iostream>
    #include <map>
    #include <string>
    #include <vector>
     
    using namespace std;
     
    int main(){
        int n = 0;
        cin >> n ;
        vector<string> out; 
     
        for (int i=0;i<n;i++){
            string s2="",s1="";
            cin >> s1;
            cin >> s2;
            
            map<char,unsigned> m1, m2;
     
            for (unsigned j=0;j<s1.size();j++){
                ++m1[s1[j]];
            }
            for (unsigned j=0;j<s2.size();j++){
                ++m2[s2[j]];
            }
            if ( m1 == m2 ){
                out.push_back("YES");
            } else{
                out.push_back("NO");
            } 
        }
     
        vector<string>::iterator it;
     
        for (it=out.begin();it!=out.end();it++)
            cout << *it << endl;
     
        return 0;
    }
    Запись от flash_back размещена 10.10.2017 в 11:52 flash_back вне форума
  13. Старый комментарий
    С++ «Неделя вторая - Функции - Перемещение строк, разворот последовательности» #8
    C++
    1
    2
    3
    4
    5
    
    void MoveStrings(vector<string>& source, vector<string>& destination){
        for (auto s: source)
            destination.push_back(s);
        source.clear();
    }
    Запись от flash_back размещена 04.10.2017 в 15:41 flash_back вне форума
  14. Старый комментарий
    С++ «Неделя вторая - Функции - Отбор палиндромов» #7
    C++
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    
    bool IsPalindrom(string s)
    {
        int i = 0;
        int size = s.size();
        while(1)
        {
            if (!(s[i] == s[size-i-1]))
                return false;
            else if (( i == (size-i-1) ) || (( i - (size-i-1) ) == 1)) 
                return true;
            i++;
        }
    }
     
    vector<string> PalindromFilter(vector<string> words,  int minLength)
    {
        vector<string> output;
        vector<string>::iterator it;
     
        for (it = words.begin(); it != words.end(); it++){
            if (((*it).size() >= (unsigned)minLength) && IsPalindrom(*it))
                output.push_back(*it);
        }
     
        return output;
    }
    Запись от flash_back размещена 03.10.2017 в 14:07 flash_back вне форума
  15. Старый комментарий
    Аватар для Avazart
    С++ «Неделя вторая - Функции - Палиндром» #6
    Используйте передачу по константной ссылке.
    C++
    1
    
    bool IsPalindrom(const string& s)
    Запись от Avazart размещена 03.10.2017 в 13:00 Avazart вне форума
  16. Старый комментарий
    С++ «Неделя вторая - Функции - Палиндром» #6
    Цитата:
    Сообщение от flash_back Просмотреть комментарий
    C++
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    bool IsPalindrom(string s)
    {
        for(int i=0;;i++)
        {
            if (!(s[i] == s[s.size()-i-1]))
                return false;
            else if (( i == (s.size()-i-1) ) || (( i - (s.size()-i-1) ) == 1)) 
                return true;
            else
                continue;
        }
    }
    Поддерживаю! Просто тогда я еще не знал, что строку, как массив символов можно использовать и что в цикле
    C++
    1
    
    for(int i=0;/*ТУТ может быть пусто*/;i++)
    Запись от acmades размещена 03.10.2017 в 07:34 acmades вне форума
  17. Старый комментарий
    С++ «Неделя вторая - Функции - Палиндром» #6
    C++
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    bool IsPalindrom(string s)
    {
        for(int i=0;;i++)
        {
            if (!(s[i] == s[s.size()-i-1]))
                return false;
            else if (( i == (s.size()-i-1) ) || (( i - (s.size()-i-1) ) == 1)) 
                return true;
            else
                continue;
        }
     
    }
    Запись от flash_back размещена 02.10.2017 в 15:40 flash_back вне форума
  18. Старый комментарий
    Аватар для Avazart
    С++ «Неделя первая - Условный оператор и циклы - Наибольший общий делитель» #4
    Цитата:
    C++
    1
    2
    
        if (a > b) c = b; 
        else c = a;
    C++
    1
    
    int с = (a>b)? b : a;
    Запись от Avazart размещена 29.09.2017 в 17:04 Avazart вне форума
    Обновил(-а) Avazart 29.09.2017 в 17:05
  19. Старый комментарий
    С++ «Неделя первая - Условный оператор и циклы - Наибольший общий делитель» #4
    C++
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    #include <iostream>
     
    using namespace std;
     
    unsigned gcd(unsigned a, unsigned b)
    {
        if (b == 0)
            return a;
        if (a > b)
            return gcd (b, a % b);
        else
            return gcd (a, b % a);
    }
     
    int main(){
        unsigned a, b;
        cin >> a >> b;
        cout << gcd(a,b);
        return 0;
    }
    Запись от flash_back размещена 29.09.2017 в 15:52 flash_back вне форума
  20. Старый комментарий
    С++ «Неделя первая - Условный оператор и циклы - Двоичные числа» #5
    Нет.

    Вот это нагородил:

    C++
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    
    #include <iostream>
    #include <bitset>
    #include <algorithm>
     
    using namespace std;
     
    int main(){
        int N=0, B=0;
        cin >> N;
        bitset<64> mybitset (N);
        string mystring = mybitset.to_string<char,string::traits_type,string::allocator_type>();
        unsigned int pos = 0;
        reverse(mystring.begin(),mystring.end()); 
        for (unsigned int i=0;i<mystring.size();i++){
            if (mystring[i] == '1')
                pos = i;
        }
        string str2 = mystring.substr(0,pos+1);  
        reverse(str2.begin(),str2.end()); 
        cout << str2 << endl;
        return 0;
    }
    Запись от flash_back размещена 29.09.2017 в 15:40 flash_back вне форума
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru