Как убрать чтение символов?
Например, при том же вводе "How are you" без символа "?" должно возвращать true, или, например, how. are. you) тоже true.
Как это реализовать?
#include "iostream"
const int max = 100;
using namespace std;
void lower(char *s) { for (int i = 0; s[i]; i++)s[i] = tolower(s[i]); }
int main() {
char a[max];
do {
cin.getline(a, max);
lower(a);
system("cls");
} while (strcmp(a, "how are you?") != 0);
cout << "I'm good";
cin.get();
}
Другие языки программирования и технологии
С++. Чтение символов.
Т. е задача убрать всю пунктуацию, преобразовать в строчные и сравнить?
Если так, то:
http://ideone.com/IzNkJF

Если так, то:
http://ideone.com/IzNkJF

Почти работает, только оставляет в конце лишний пробел http://rextester.com/JYE35688
И проверку на нежелательные символы надо доработать.
Улучшенный вариант:
char* src = " hoW . aRe. , you ?";
char dest[100];
char prev = ' ';
for(int n = strlen(src), i = 0, d = 0 ; i <= n; i++)
{
char c = src[i];
if (c && c <= '/' || c >= ':' && c <= '@')
{
c = ' ';
if (prev == c)
continue;
}
else if (c)
c = tolower(c);
prev = c;
dest[d++] = c;
}
std::cout << "*" << dest << "*";
Такие алгоритмы надо самому писать, иначе не научишься программировать.
И проверку на нежелательные символы надо доработать.
Улучшенный вариант:
char* src = " hoW . aRe. , you ?";
char dest[100];
char prev = ' ';
for(int n = strlen(src), i = 0, d = 0 ; i <= n; i++)
{
char c = src[i];
if (c && c <= '/' || c >= ':' && c <= '@')
{
c = ' ';
if (prev == c)
continue;
}
else if (c)
c = tolower(c);
prev = c;
dest[d++] = c;
}
std::cout << "*" << dest << "*";
Такие алгоритмы надо самому писать, иначе не научишься программировать.
Убрать чтение символов? Это врядли получится. Вы хотите сделать что-то вроде распознования текста? Тогда тут все не так просто. Самый примитивный вариант - выбрать все нежелательные символы, и заменять их в считанной строке на ""(пустую строку). Обычно подобным функция replace занимается, но не уверен, что в c++ она называется именно так. Правда тут вам придется предусмотреть ВСЕ нежелательные символы.
Но и то в итоге вы получите просто отфильтрованный текст, где если при вводе допущена любая ошибка - лишний пробел, грамматическая ошибка и т. д. - ваш код работать не будет. Вообще, на тему распознавания смысла текста (семантический анализ) целые диссертации пишутся, так что всё не так просто)
Но и то в итоге вы получите просто отфильтрованный текст, где если при вводе допущена любая ошибка - лишний пробел, грамматическая ошибка и т. д. - ваш код работать не будет. Вообще, на тему распознавания смысла текста (семантический анализ) целые диссертации пишутся, так что всё не так просто)
*** Кана***
А есть хоть какие-то варианты?
Похожие вопросы
- Символ "Забоя"
- Изображение символов компьютера
- Visual Basic. Как в переменной удалить определенные символы?
- FASM. Замена символов в строке, используя подпрограммы.
- Условие при котором отбираются слова 5 или более символов. Язык Си.
- Borland C. Чтение файла с помощью прерываний
- Как удалить символ из переменной типа строки в PHP?
- Написать программу которая подсчитывает частоту встречаемости символов в заданном текстовом файле С++
- Как создать свой символ? В таблице символов нет такого, что мне нужно.
- Ассемблер, вывод символа
Не могли бы Вы расписать что творится после "before"?
И как записать как функцию?