Основи програмування на С ++ для початківців

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

  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 и др.

128 думки про "Задачи и решение. С

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

    #визначте SEGMENT_PORT PORTD
    #визначити SEGMENT_DDR DDRD

    #визначте BUTTON_PORT PORTB
    #визначити 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 цифра) {
    SEGMENT_PORT = ~SEGMENT_DIGITS[digit]; // Інвертувати значення для загального анода
    }

    void update_display() {
    дисплей_цифра(статус == 0 ? 0 : поточна_цифра);
    }

    void handle_button_press() {
    if (статус == 0) {
    статус = 1;
    поточна_цифра = 0;
    } else {
    поточна_цифра = (поточна_цифра + 1) % 16;
    }
    update_display();
    }

    void handle_button_release() {
    if (статус == 1) {
    статус = 0;
    }
    }

    недійсне налаштування() {
    // Налаштування кнопки як входу з резистором, що підтягує.
    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);
    }

    порожня петля() {
    // Зчитування стану кнопки з виявленням фронтів (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() {
    налаштування();
    петля();
    return 0;
    }

Залишити коментар до herecomesfriday Скасувати відповідь

Ваша електронна адреса не буде опублікований. Обов'язкові поля позначені * *