- Типи даних, змінними і константами
- Ввод с клавиатуры и вывод данных на экран
- Арифметические операции и комбинированные операторы
- Операторы выбора if и else в С
- Оператор switch в С
- Цикл for в C++
- Циклы while, do while, вложенные циклы
- Двумерные массивы C
- Массиви в C++
- Функції в C++
- Указатели C
- Покажчик на покажчик C ++
- Классы в С
Додатковий збірник задач з рішеннями
На цій сторінці зібрані всі завдання по темам уроків, розміщених на нашому сайті. К каждой задаче прилагается наш вариант решения. Постарайтесь всё же решать их самостоятельно и только потом сравнивать наш исходный код со своим. “Хочешь научиться программировать – программируй”!
Больше практических заданий с решениями найдёте тут.
Рекомендуем посетить Сайт для юных программистов – где вы найдете уроки по различным языкам программирования (в том числе для детей), 3D-моделированию, Linux и др.
Всім привіт,потрібна допомога в написанні коду на Сі для мікроконтролера С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;
}
Допоможіть будь ласка, через тиждень у мене іспит з с++ ще я зламав палець що мені робити допоможіть навчіть мене прогроммувати ато я вашому сайту поставлю 1 зірку швидко допоможіть мені суки тварюки
Як пройшов екзамен?
Дано натуральне число n (n <= 100), ціле число k (k =+-1) і послідовність цілих чисел a1, a2, ..., ан. Здійснити циклічний зсув елементів послідовності на 1 позицію вправо (при k =1) або вліво (при
k = −1)
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;
}