
Вопрос задан 24.02.2021 в 08:15.
Предмет Информатика.
Спрашивает Понурова Вера.
Програма С++ : Создайте односвязный список элементов типа CHAR. Удалите из списка все символы, не
являющиеся буквой латинского алфавита.

Ответы на вопрос

Отвечает Кашпаров Арсений.
#include <iostream>
#include <list>
#include <algorithm>
#include <iterator>
#include <cctype>
int main()
{
std::list<char> lt{'5', 'a', 'c','g', '7', 't', '!'};
std::cout << std::endl;
std::copy(lt.begin(), lt.end(), std::ostream_iterator<char>(std::cout, " "));
lt.remove_if([](char& var1)
{
return !(std::tolower(var1, std::locale()) >= 'a' && std::tolower(var1, std::locale()) <= 'z');
});
std::cout << std::endl;
std::copy(lt.begin(), lt.end(), std::ostream_iterator<char>(std::cout, " "));
}





Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.
Вот пример программы на C++, которая создает односвязный список элементов типа char
и удаляет из списка все символы, не являющиеся буквами латинского алфавита:
cpp#include <iostream>
using namespace std;
// Определение структуры узла списка
struct Node {
char data;
Node* next;
};
// Функция для добавления элемента в конец списка
void append(Node** head, char value) {
// Создание нового узла
Node* newNode = new Node();
newNode->data = value;
newNode->next = nullptr;
// Если список пуст, новый узел становится головным элементом
if (*head == nullptr) {
*head = newNode;
return;
}
// Иначе ищем последний узел и добавляем новый узел в конец
Node* last = *head;
while (last->next != nullptr) {
last = last->next;
}
last->next = newNode;
}
// Функция для удаления символов, не являющихся буквой латинского алфавита
void removeNonAlphabeticChars(Node** head) {
// Если список пуст, выходим из функции
if (*head == nullptr) {
return;
}
Node* current = *head;
Node* prev = nullptr;
// Пока не достигнут конец списка
while (current != nullptr) {
// Если текущий символ не является буквой латинского алфавита
if (!(current->data >= 'A' && current->data <= 'Z') &&
!(current->data >= 'a' && current->data <= 'z')) {
Node* next = current->next;
// Если текущий элемент - головной, обновляем голову списка
if (prev == nullptr) {
*head = next;
} else {
// Иначе, связываем предыдущий элемент с следующим
prev->next = next;
}
delete current;
current = next;
} else {
prev = current;
current = current->next;
}
}
}
// Функция для отображения содержимого списка
void displayList(Node* head) {
Node* current = head;
while (current != nullptr) {
cout << current->data << " ";
current = current->next;
}
cout << endl;
}
int main() {
Node* head = nullptr;
// Добавление элементов в список
append(&head, 'H');
append(&head, 'e');
append(&head, '1');
append(&head, 'l');
append(&head, '0');
append(&head, 'W');
append(&head, 'o');
append(&head, 'r');
append(&head, 'l');
append(&head, 'd');
append(&head, '!');
cout << "Исходный список: ";
displayList(head);
// Удаление символов, не являющихся буквой латинского алфавита
removeNonAlphabeticChars(&head);
cout <<


Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
Предметы
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili