Ответы пользователя по тегу C++
  • Как в C++ красиво реализовать множество условий?

    risik
    @risik
    Программист
    Сложные условия следует разбивать на простые. равно как и слдожные функции следует разбивать на простые.

    (qX >= 0 && qY >= 0 && qX < room_size && qY < room_size)

    Это условие, как я вижу, проверяет вхождение я прямоугольник? Лучше всего в отдельную функцию. Повысит читаемость.
    например так:
    bool isInRoom(int qX, int qY, int room_size) 
    {
      if (qX < 0)
        return false;
      if (qY < 0)
        return false;
      if (qX >= room_size)
        return false;
      if (qY >= room_size)
        return false;
      return true;
    }


    Боитесь за производительность - inline функцию. Затем так:
    if (isInRoom(qX, qY, room_size) && water[qX][qY] < water[x][y] && water[x][y] != 0)
    ...


    или так:
    if (! isInRoom(qX, qY, room_size)) // проверка предусловия
      return;
    if (water[qX][qY] < water[x][y] && water[x][y] != 0)
    ...
    Ответ написан
    2 комментария
  • О нюансах работы со строками и массивами в C

    risik
    @risik
    Программист
    На вопрос Вам уже ответили - Вы и только Вы следите за достаточностью блока памяти. Строки в С почти ничем не отличаются от обычного массива. Разве что нуль символ компилятор ставит автоматически если инициализация строки производится в кавычках.

    Пример 1:
    char h[20]="Hello";
    Выделяется массив из 20-ти элементов char, первые 6 из которых будут заполнены значениями, остальные 14 будут иметь случайные значения.

    Пример 2:
    char h[20]={'H', 'e', 'l', 'l', 'o'};
    Выделяется массив из 20-ти элементов char, первые 5 из которых будут заполнены значениями, остальные 15 будут иметь случайные значения.

    Еще хотел обратить Ваше внимание на один момент.
    void strcpy(char *s, const char *t)
    указатель на char откуда копируете строку следует объявлять константным. В С++ так нужно уже давно. В С уже тоже. Хотя, не знаю с какой версии стандарта.
    Ответ написан
  • Как считать из файла символы до пробела C++?

    risik
    @risik
    Программист
    в файле точно целые числа?
    int a;
    ifs >> a;
    ...
    Ответ написан
    Комментировать
  • Как начать программировать на C/C++/C#?

    risik
    @risik
    Программист

    И еще уж раз Вы хотите под iOS/OS X, то C# для Вас не лучший выбор.

    Ответ написан
    1 комментарий
  • Как начать программировать на C/C++/C#?

    risik
    @risik
    Программист

    Кернигана сейчас читать в качестве первого учебника тяжело. Потому, что например, helloworld от Кернигана записывается примерно так:

    main()
    {
      printf("Hello World!");
    }
    
    а если у Вас на самом деле компилятор не С, а С++, что весьма вероятно с учетом указанных сред разработки (кроме CodeLite - про нее ничего не знаю), то это на самом деле ошибка. Надо
    int main()
    {
      printf("Hello World!");
      return 0;
    }
    

    Ответ написан
  • ООСП для Ubuntu

    risik
    @risik
    Программист
    «C-подобные языки» как то ну очень уж неконкретно. Полагаю, что Вас интересовали конкрент С и С++.
    Тогда добавлю ко всем предыдущим:
    — Anjuta. Можно использовать только когда у Вас есть makefile based проект. Достоинства — очень скромные требования к памяти.
    — MonoDevelop можно использовать и для С/С++, хотя в этом случае она не лучший выбор
    — лично для меня по совокупности факторов кажется самой удобной для новичка Netbeans.
    Ответ написан