С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
factura122
0 / 0 / 0
Регистрация: 09.11.2012
Сообщений: 70
#1

Работа со строками. Необходимо подсчитать слова содержащие русские и англ буквы - C++

06.01.2014, 23:57. Просмотров 290. Ответов 6
Метки нет (Все метки)

Среда Visual C++2010
По логике должно работать, но почему то кириллица игнорируется, пытался исправить подключением библиотеки locale не помогло. При использовании одной лишь латиницы алгоритм работает...
В чём может быть проблема?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <conio.h>
#include <stdio.h>
#include <string>
void main()
{
    printf("input\n");
    char s[100];
    scanf("%[^\n]s",s);
    int count=0;
    if(s[0]>='A' && s[0]<='Z')
        count=1;
    else
        count=0;
    for(int i=0;i<strlen(s)-1;i++)
     {
         if(s[i]==' ' && ((s[i+1]>='A'&& s[i+1]<='Z' && s[i+1]>='A' && s[i+1]<='я') || (s[i+1]>='a'&& s[i+1]<='z' && s[i+1]>='А' && s[i+1]<='я')) )
             count++;
     }
    printf("result-%d",count);
    _getch();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.01.2014, 23:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа со строками. Необходимо подсчитать слова содержащие русские и англ буквы (C++):

Строка: Подсчитать, сколько слов в строке, и вывести слова, содержащие 3 буквы. - C++
Дана строка,заканчивающаяся точкой.Подсчитать, сколько слов в строке.Вывести слова, содержащие 3 буквы.

Подсчитать количество слов содержащие две согласные буквы - C++
Помогите в написании кода: Подсчитать количество слов в тексте, содержащие две согласные буквы.

Вывести на экран слова, содержащие 3 буквы. - C++
Дана вот такая задачка на Си: Дана символьная строка, содержащая текст, заканчивающийся точкой. Вывести на экран слова, содержащие 3...

Удалить слова содержащие гласные буквы... - C++
Алгоритм вроде придумал но незнаю как записать... сначала наверно нужно создать char S; char D=&quot;eyuioa&quot;; // массив гласных ...

Вывести на экран слова, содержащие три буквы - C++
Дана строка, содержащая текст, заканчивающийся точкой. Вывести на экран слова, содержащие три буквы.

Вывести на экран слова, содержащие три буквы. - C++
Дана строка, содержащая текст, заканчивающийся точкой. Вывести на экран слова, содержащие три буквы.

6
MrLinch
12 / 10 / 6
Регистрация: 23.12.2012
Сообщений: 51
07.01.2014, 00:04 #2
Попробуй

C++
1
2
3
4
5
6
7
8
9
....
#include <Windows.h>
 
int main() {
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251); 
 
    ...
}
0
factura122
0 / 0 / 0
Регистрация: 09.11.2012
Сообщений: 70
07.01.2014, 00:09  [ТС] #3
А вообще проблема в кодировке?
0
MrLinch
12 / 10 / 6
Регистрация: 23.12.2012
Сообщений: 51
07.01.2014, 00:16 #4
Другой причины я не вижу... После подключения locale в main вы писали
C++
1
setlocale(LC_ALL, "Russian");
?
0
factura122
0 / 0 / 0
Регистрация: 09.11.2012
Сообщений: 70
07.01.2014, 00:21  [ТС] #5
Да именно это я и писал
0
vipslord
14 / 3 / 1
Регистрация: 09.12.2013
Сообщений: 33
07.01.2014, 09:10 #6
У каждой буквы есть свой аск код. Попробуй сравни, может поможет.
Помню что где-то дома был исходник, где я делал задачу подобную.
Если не ошибаюсь, то аск код просто сравниваеться.
http://ascii.org.ru/

C++
1
2
3
4
5
6
7
8
 for (int i = 0; i < strlen(s)-1; i++){
       if (s[i] >= 140 && s[i] <= A50 || //A-Z
           s[i] >= 160 && s[i] <= A70 ||  //a-z
           s[i] >=180 && s[i] <= F90 ||  //А-Я
           s[i] >= 0A0 &&  s[i] <= FA0 || //а-п 
           s[i] >= 0E0 &&  s[i] <= FE0 ) // р-я
 
     } k++;
А еще проще считай просто пробелы, встретил пробел? == слово. Изначально счетчику +1.
Буду дома, утром, посмотрю исходники.
0
factura122
0 / 0 / 0
Регистрация: 09.11.2012
Сообщений: 70
07.01.2014, 11:21  [ТС] #7
Спасибо, буду очень благодарен, проблема в том что работает со словами содержащими одну кодировку
0
07.01.2014, 11:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.01.2014, 11:21
Привет! Вот еще темы с ответами:

Найти все слова, содержащие латинские буквы (a, e, i, o, u) - C++
Задан текст. Найти все слова, содержащие латинские буквы (a, e, i, o, u). Напечатать эти слова в порядке увеличения количества букв (a, e,...

Вывести на экран слова, содержащие три буквы - C++
Дана строка, содержащая текст, заканчивающаяся точкой. Вывести на экран слова, содержащие три буквы. Задача на строки.

В строке найти слова содержащие ровно две буквы d - C++
Дана строка, в которой слова разделены одним пробелом. Напечатать все слова , содержащие ровно две буквы d. Помогите. Не знаю как...

Вывести на экран слова из текста, содержащие три буквы - C++
Дана строка, содержащая текст, заканчивающийся точкой. Вывести на экран слова, содержащие три буквы.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.