#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <ctype.h>
#define MAX_STRING_LENGTH 1000
#define MAX_SUBSTRINGS 100
LiquidCrystal_I2C lcd(0x27, 16, 2); // Установите правильный адрес I2C для вашего экрана
// Часть 1: Функция для извлечения подстрок, заключенных в фигурные скобки
void extract_braces_substrings(char strings[][MAX_STRING_LENGTH], int k, char substrings[][MAX_STRING_LENGTH], int *count) {
*count = 0;
for (int i = 0; i < k; i++) {
char *start = strchr(strings[i], '{');
while (start != NULL) {
char *end = strchr(start, '}');
if (end != NULL) {
int len = end - start - 1;
if (len > 0) {
strncpy(substrings[*count], start + 1, len);
substrings[*count][len] = '\0';
(*count)++;
}
start = strchr(end + 1, '{');
} else {
break;
}
}
}
}
// Часть 2: Функция для поиска подстроки, начинающейся с четного числа цифр
char* find_even_digit_substring(char substrings[][MAX_STRING_LENGTH], int count) {
for (int i = 0; i < count; i++) {
int digit_count = 0;
while (isdigit(substrings[i][digit_count])) {
digit_count++;
}
if (digit_count % 2 == 0 && digit_count != 0) {
return substrings[i];
}
}
return NULL;
}
void setup() {
Serial.begin(9600);
lcd.begin();
lcd.backlight();
int k;
Serial.println("Введите количество строк: ");
while (!Serial.available()); // Ждем ввода
k = Serial.parseInt();
Serial.println(k);
char strings[k][MAX_STRING_LENGTH];
for (int i = 0; i < k; i++) {
Serial.print("Введите строку ");
Serial.print(i + 1);
Serial.println(": ");
while (!Serial.available()); // Ждем ввода
String input = Serial.readStringUntil('\n');
input.toCharArray(strings[i], MAX_STRING_LENGTH);
}
char substrings[MAX_SUBSTRINGS][MAX_STRING_LENGTH];
int count;
// Часть 1: Выделение подстрок, заключенных в фигурные скобки
extract_braces_substrings(strings, k, substrings, &count);
if (count > 0) {
Serial.println("\nПодстроки, заключенные в фигурные скобки:");
for (int i = 0; i < count; i++) {
Serial.println(substrings[i]);
}
} else {
Serial.println("Нет подстрок, заключенных в фигурные скобки.");
}
// Часть 2: Поиск подстроки, начинающейся с четного числа цифр
char *even_digit_substring = find_even_digit_substring(substrings, count);
if (even_digit_substring) {
Serial.print("\nПервая подстрока, начинающаяся с четного числа цифр: ");
Serial.println(even_digit_substring);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(even_digit_substring);
} else {
Serial.println("Нет подстрок, начинающихся с четного числа цифр.");
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("No even digit");
}
}
void loop() {
// Пустой цикл
}