Предмет: Информатика, автор: TAO9909

Написать программу на языке С++(со всеми ОБЪЯСНЕНИЯМИ пожалуйста) пожалуйста

Написать функцию, которая принимает строку. Удаляет из строки символы, не являющиеся символами латинского алфавита. Возвращает количество удаленных символов.​

Ответы

Автор ответа: Koljisto
1

#include <iostream>

#include <string>

#include <algorithm>

#include <Windows.h>

using namespace std;

bool check_alphabet(char symbol) {

string alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

for (size_t j = 0; j < alphabet.size(); j++)

{

 if (alphabet[j] == symbol) {

  return true;

 }

}

return false;

}

pair<int,string> erase_counter_char_in_str_not_latin(string str) {

int i = 0;

int count = 0;

while (i <= str.size() - 1) {

 if (not (check_alphabet(toupper(str[i])))) {

  str.erase(str.begin() + i);

  count++;

  i--; // раз удалили, то нужно вернуться назад на один: i~45m -> i5~m (i уже идёт на следующий)

 }

 i++;

}

return make_pair(count, str);

}

int main()

{

SetConsoleCP(1251);

SetConsoleOutputCP(1251);

setlocale(LC_ALL, "Russian");

string str;

cout << "Введите строку: " << endl;

cin >> str;

pair<int,string> pair_count_str = erase_counter_char_in_str_not_latin(str);

cout << endl << "Удалено: " << pair_count_str.first << endl;

cout << "Конечная строка: " << pair_count_str.second;

}


Koljisto: Немного неправильно сделал, требовалась полноценная функция для возврата только счётчика..
TAO9909: ничего, спасибо большое
Koljisto: Сейчас перепишу
TAO9909: хорошо
Koljisto: Еще исправил баг, так что на пользу)
TAO9909: ок
Похожие вопросы
Предмет: Другие предметы, автор: Аноним
Предмет: Математика, автор: oleggodorozha222