Основы программирования на С++ для начинающих

Задачи и решение. С++

  1. Типы данных, переменные и константы
  2. Ввод с клавиатуры и вывод данных на экран
  3. Арифметические операции и комбинированные операторы
  4. Операторы выбора if и else в С++
  5. Оператор switch в С++
  6. Цикл for в C++
  7. Циклы while, do while, вложенные циклы
  8. Двумерные массивы C++
  9. Массивы в C++
  10. Функции в C++
  11. Указатели C++
  12. Указатель на указатель C++
  13. Классы в С++

Дополнительный сборник задач с решениями

практика программирования, задачи с решением, задачи по программированию с++, задачи по программированию C++

На этой странице собраны все задачи по темам уроков, размещенных на нашем сайте. К каждой задаче прилагается наш вариант решения. Постарайтесь всё же решать их самостоятельно и только потом сравнивать наш исходный код со своим. “Хочешь научиться программировать – программируй”!

Больше практических заданий с решениями найдёте здесь.

Рекомендуем посетить Сайт для юных программистов – где вы найдете уроки по различным языкам программирования (в том числе для детей), 3D-моделированию, Linux и др.

132 thoughts on “Задачи и решение. С++

  1. Всем привет,нужна помощь в написании кода на Си для микро контролера С8051F38 с жк экраном ,нужно подключить к микро контролеру 7сигментное табло(общий анод) через кнопку,при включении на табло и на экране должно отображатся 0,при зажатии на кнопку должен пойти отсчет вперед до 9 с задержкой в 500мс,при отпускании кнопки табло сохраняет последнее показанное число ,при очередном зажатии отсчет продолжается с того места где остановился и так по кругу,отсчет должен отображатся паралельно и на жк экране с надписью Status:running зеленым цветом когда отсчет идет,и Status :stop красным когда останавливается,пробовал,но не получается
    #include
    #include
    #include
    #define BUTTON_PIN PB0
    #define SEGMENT_A_PIN PD0
    #define SEGMENT_B_PIN PD1
    #define SEGMENT_C_PIN PD2
    #define SEGMENT_D_PIN PD3
    #define SEGMENT_E_PIN PD4
    #define SEGMENT_F_PIN PD5
    #define SEGMENT_G_PIN PD6

    #define SEGMENT_PORT PORTD
    #define SEGMENT_DDR DDRD

    #define BUTTON_PORT PORTB
    #define BUTTON_DDR DDRB

    // Таблица символов для 7-сегментного индикатора (общий анод)
    const unsigned char SEGMENT_DIGITS[] = {
    0b00001000, // 0
    0b00111110, // 1
    0b00100100, // 2
    0b00011100, // 3
    0b01001110, // 4
    0b01100100, // 5
    0b01111000, // 6
    0b00000110, // 7
    0b01111110, // 8
    0b01101100, // 9
    };

    // Переменные
    volatile uint8_t current_digit = 0;
    volatile uint8_t button_state_prev = 1; // Инициализация как “отпущена” для исключения ложных нажатий

    void display_digit(uint8_t digit) {
    SEGMENT_PORT = ~SEGMENT_DIGITS[digit]; // Инвертировать значения для общего анода
    }

    void update_display() {
    display_digit(status == 0 ? 0 : current_digit);
    }

    void handle_button_press() {
    if (status == 0) {
    status = 1;
    current_digit = 0;
    } else {
    current_digit = (current_digit + 1) % 16;
    }
    update_display();
    }

    void handle_button_release() {
    if (status == 1) {
    status = 0;
    }
    }

    void setup() {
    // Настройка кнопки как входа с подтягивающим резистором
    BUTTON_DDR &= ~(1 << BUTTON_PIN);
    BUTTON_PORT |= (1 << BUTTON_PIN);

    // Настройка выводов сегментов как выходов
    SEGMENT_DDR |= (1 << SEGMENT_A_PIN) |
    (1 << SEGMENT_B_PIN) |
    (1 << SEGMENT_C_PIN) |
    (1 << SEGMENT_D_PIN) |
    (1 << SEGMENT_E_PIN) |
    (1 << SEGMENT_F_PIN) |
    (1 << SEGMENT_G_PIN);
    }

    void loop() {
    // Считывание состояния кнопки с обнаружением фронтов (volatile для обновления флага)
    volatile uint8_t button_state = PINB & (1 << BUTTON_PIN);

    // Обработка нажатия кнопки с обнаружением фронтов
    if (!button_state && button_state_prev) {
    handle_button_press();
    }

    // Обработка отпускания кнопки с обнаружением фронтов
    if (button_state && !button_state_prev) {
    handle_button_release();
    }

    // Обновление отображения
    update_display();

    // Задержка 500 мс (заменить на соответствующую функцию задержки)
    _delay_ms(500);

    // Обновление предыдущего состояния кнопки
    button_state_prev = button_state;
    }

    int main() {
    setup();
    loop();
    return 0;
    }

  2. помогите пожалуйста, через неделю у меня экзамен по с++ ещё я сломал палец что мне делать помогите научите меня прогроммировать ато я вашему сайту поставлю 1 звезду быстро помогите мне суки твари

  3. Дано натуральне число n (n <=100), ціле число k (k =+-1) і послідовність цілих чисел a1, a2, …, an. Здійснити циклічний зсув елементів послідовності на 1 позицію вправо (при k =1) або вліво (при
    k = −1)

  4. cpp
    #include

    class Matrix
    {
    public:
    void setData()
    {
    if (arrBase != nullptr)
    {
    clearMatrix();
    }
    std::cin >> rows >> cols;
    arrBase = new int* [rows];
    for (int i = 0; i < rows; i++)
    {
    arrBase[i] = new int[cols];
    }

    int data;
    for (int i = 0; i < rows; i++)
    {
    for (int j = 0; j > data;
    arrBase[i][j] = data;
    }
    }

    arrInverted = new int* [cols];
    for (int i = 0; i < cols; i++)
    {
    arrInverted[i] = new int[rows];
    }
    for (int i = 0; i < cols; i++)
    {
    for (int j = 0; j < rows; j++)
    {
    arrInverted[i][j] = arrBase[j][i];
    }
    }
    }
    void getData()
    {
    std::cout << " ~ ~ ~ arrBase ~ ~ ~ " << std::endl;
    for (int i = 0; i < rows; i++)
    {
    for (int j = 0; j < cols; j++)
    {
    std::cout << arrBase[i][j] << "\t";
    }
    std::cout << std::endl;
    }
    std::cout << std::endl;

    std::cout << " ~ ~ ~ arrInverted ~ ~ ~ " << std::endl;
    for (int i = 0; i < cols; i++)
    {
    for (int j = 0; j < rows; j++)
    {
    std::cout << arrInverted[i][j] << "\t";
    }
    std::cout << std::endl;
    }
    std::cout << std::endl;
    }
    private:
    void clearMatrix()
    {
    for (int i = 0; i < rows; i++)
    {
    delete[] arrBase[i];
    }
    delete[] arrBase;
    arrBase = nullptr;

    for (int i = 0; i < cols; i++)
    {
    delete[] arrInverted[i];
    }
    delete arrInverted;
    arrInverted = nullptr;
    }
    int** arrBase = nullptr;
    int** arrInverted = nullptr;
    size_t rows;
    size_t cols;
    };

    int main()
    {
    Matrix m;
    m.setData();
    m.setData();
    m.setData();
    m.getData();
    return 0;
    }

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *