Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Liquil
233 / 218 / 37
Регистрация: 04.12.2013
Сообщений: 973
#1

Количество символов, отличных от латинских букв и пробелов - C++

14.12.2013, 14:09. Просмотров 690. Ответов 13
Метки нет (Все метки)

Здравствуйте, нужно посчитать количество символов в строке, отличных от латинских букв и пробелов. Кажется, что ошибка закралась где-то в 24 строке
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include "stdio.h"
#include "string.h"
#include <conio.h>
int kol(char*,int);
int main()
{
int Count, Length, i;
char str[80];
 
printf("Vvedite stroku:\n");
scanf("%s", str);
 
 
Length = strlen(str);
Count =kol(str, Length);
 
 
printf("Kolichestvo simvolov otlichnih ot latinskih bukv i probela %d\n", Count);
_getch();
}
int kol(char*str,int Length)
{int Count=0,i;
for (i = 0; i < Length; i++)
if (( str[i] <= 65 || str[i] >= 90 && str[i] <= 97 || str[i] >= 122)&&(str[i] == 32 )) Count++;
return Count;
} 
 
 
 
 
 
if (( str[i] <= 65 || str[i] >= 90 && str[i] <= 97 || str[i] >= 122)&&(str[i] == 32 )) Count++;
ошибка где-то здесь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2013, 14:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Количество символов, отличных от латинских букв и пробелов (C++):

Подсчитать количество символов отличных от заглавных латинских букв во всех словах массива - C++
Дан массив из n слов произвольной длины (длина слова не превышает 80 символов). Элементами слов могут быть любые графические символы....

Определить наибольшую последовательность отличных от пробелов символов - C++
Помоги если рубишь на си Помогите после завтра олимпиада по программированию у меня олимпиада а я не как не могу решить эти две...

дан текстовый файл. получить все его строки, содержащие более 20 символов, отличных от пробелов. - C++
Здравствуйте, помогите написать программу. дан текстовый файл. получить все его строки, содержащие более 20 символов, отличных от пробелов....

Удалить из введенной строки все символы, отличные от прописных латинских букв и пробелов - C++
Цель работы Научиться работать со строками. Освоить способ динамического захвата и освобождения памяти под символьные массивы....

Определить, что в i-ом столбце матрицы число латинских букв не меньше числа пробелов - C++
Дана символьная матрица размера mxn, нужно получить последовательность b1...bn из 0 и 1, в котором bi=1, тогда когда в i-ом столбце число...

В массиве определить длину серии символов отличных от букв - C++
помогите пожайлуста. Дан массив символов, содержащий текст. Определить длину содержащейся в нем максимальной серии символов,...

13
Doksim
57 / 57 / 8
Регистрация: 08.12.2013
Сообщений: 257
14.12.2013, 14:15 #2
Цитата Сообщение от Liquil Посмотреть сообщение
Здравствуйте, нужно посчитать количество символов в строке, отличных от латинских букв и пробелов. Кажется, что ошибка закралась где-то в 24 строке
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include "stdio.h"
#include "string.h"
#include <conio.h>
int kol(char*,int);
int main()
{
int Count, Length, i;
char str[80];
 
printf("Vvedite stroku:\n");
scanf("%s", str);
 
 
Length = strlen(str);
Count =kol(str, Length);
 
 
printf("Kolichestvo simvolov otlichnih ot latinskih bukv i probela %d\n", Count);
_getch();
}
int kol(char*str,int Length)
{int Count=0,i;
for (i = 0; i < Length; i++)
if (( str[i] <= 65 || str[i] >= 90 && str[i] <= 97 || str[i] >= 122)&&(str[i] == 32 )) Count++;
return Count;
} 
 
 
 
 
 
if (( str[i] <= 65 || str[i] >= 90 && str[i] <= 97 || str[i] >= 122)&&(str[i] == 32 )) Count++;
ошибка где-то здесь
текст ошибки кидайте.

Добавлено через 4 минуты
C++
1
if (( str[i] < 65 || str[i] > 90 && str[i] < 97 || str[i] > 122)&&(str[i] != ' ' )) Count++;
0
Liquil
233 / 218 / 37
Регистрация: 04.12.2013
Сообщений: 973
14.12.2013, 15:08  [ТС] #3
Цитата Сообщение от Doksim Посмотреть сообщение
текст ошибки кидайте.

Добавлено через 4 минуты
C++
1
if (( str[i] < 65 || str[i] > 90 && str[i] < 97 || str[i] > 122)&&(str[i] != ' ' )) Count++;
выдает 0 на выходе, если ввести, например, xxx65

Добавлено через 2 минуты
а нет, все впорядке, спасибо
0
Doksim
57 / 57 / 8
Регистрация: 08.12.2013
Сообщений: 257
14.12.2013, 15:19 #4
Цитата Сообщение от Liquil Посмотреть сообщение
выдает 0 на выходе, если ввести, например, xxx65

Добавлено через 2 минуты
а нет, все впорядке, спасибо
нзшт
0
ValeryS
Модератор
6653 / 5062 / 470
Регистрация: 14.02.2011
Сообщений: 16,926
14.12.2013, 15:24 #5
Цитата Сообщение от Doksim Посмотреть сообщение
(( str[i] <= 65 || str[i] >= 90 && str[i] <= 97 || str[i] >= 122)&&(str[i] == 32 ))
а что это за "волшебные" числа 65 90 97 122 32 ?
1
Doksim
57 / 57 / 8
Регистрация: 08.12.2013
Сообщений: 257
14.12.2013, 15:26 #6
Цитата Сообщение от ValeryS Посмотреть сообщение
а что это за "волшебные" числа 65 90 97 122 32 ?
ансикоды
0
ValeryS
Модератор
6653 / 5062 / 470
Регистрация: 14.02.2011
Сообщений: 16,926
14.12.2013, 15:37 #7
Цитата Сообщение от Doksim Посмотреть сообщение
ансикоды
вообще то я у ТС спрашивал
но так и быть расшифрую свой вопрос
во первых ASCII в шестнадцатеричном коде пишут
поскольку таблица в них составлена
но даже в них писать моветон
или писать коментарий что означают эти константы, потому что мало ли что они обозначают
или, что более правильно, писать символы
принцип самодокументируемой программы
Цитата Сообщение от Doksim Посмотреть сообщение
if (( str[i] <= 65 || str[i] >= 90 && str[i] <= 97 || str[i] >= 122)&&(str[i] == 32 )) Count++;
C++
1
if (( str[i] <= 'A'|| str[i] >= 'Z' && str[i] <= 'a' || str[i] >= 'z')&&(str[i] ==' ' )) Count++;
вот так более понятно ( о правильности условия не говорю)
в еще
первые 32 символа в таблице ASCII
занимают непечатные символы , перевод строки, табуляция и много чего еще
программа их тоже сосчитает
это надо ?
1
Doksim
57 / 57 / 8
Регистрация: 08.12.2013
Сообщений: 257
14.12.2013, 15:41 #8
Цитата Сообщение от ValeryS Посмотреть сообщение
во первых ASCII в шестнадцатеричном коде пишут
необязательно.
Цитата Сообщение от ValeryS Посмотреть сообщение
первые 32 символа в таблице ASCII
можно конечно не проверять но так более понятней.
Цитата Сообщение от ValeryS Посмотреть сообщение
if (( str[i] <= 'A'|| str[i] >= Z && str[i] <= 'a' || str[i] >= 'z')&&(str[i] ==' ' )) Count++;
а я и не знал что так можно. только в данном случае вот так:
C++
1
if (( str[i] < 'A'|| str[i] > Z && str[i] < 'a' || str[i] > 'z')&&(str[i] !=' ' )) Count++;
0
ValeryS
Модератор
6653 / 5062 / 470
Регистрация: 14.02.2011
Сообщений: 16,926
14.12.2013, 15:50 #9
Цитата Сообщение от Doksim Посмотреть сообщение
только в данном случае вот так:
ну я же сказал что о правильности условия не говорю
можно и так
C++
1
if( !((str[i]>='A' && str[i]<='Z') || (str[i]>='a' && str[i]<='z') || str[i] ==' ' )) Count++;
кому как удобней
Цитата Сообщение от Doksim Посмотреть сообщение
необязательно.
необязательно но желательно, можно ведь и в восмеричке написать
Цитата Сообщение от Doksim Посмотреть сообщение
а я и не знал что так можно.
а сам с символом пробела сравнивал
Цитата Сообщение от Doksim Посмотреть сообщение
str[i] != ' '
1
Doksim
57 / 57 / 8
Регистрация: 08.12.2013
Сообщений: 257
14.12.2013, 15:52 #10
Цитата Сообщение от ValeryS Посмотреть сообщение
необязательно но желательно, можно ведь и в восмеричке написать
покажите пример кода символа в шестнадцетиричной
0
ValeryS
Модератор
6653 / 5062 / 470
Регистрация: 14.02.2011
Сообщений: 16,926
14.12.2013, 15:55 #11
Цитата Сообщение от ValeryS Посмотреть сообщение
можно и так
а можно вообще вот так
C++
1
if( !( ( (str[i]|0x20)>='a' && (str[i]|0x20)<='z') || str[i] ==' ' ))
только уже придется расшифровывать
объяснить в чем прикол?

Добавлено через 30 секунд
Цитата Сообщение от Doksim Посмотреть сообщение
покажите пример кода символа в шестнадцетиричной
уже показал
1
Doksim
57 / 57 / 8
Регистрация: 08.12.2013
Сообщений: 257
14.12.2013, 15:58 #12
Цитата Сообщение от ValeryS Посмотреть сообщение
объяснить в чем прикол?
угу

Добавлено через 15 секунд
юбилейное сообщение)
0
ValeryS
Модератор
6653 / 5062 / 470
Регистрация: 14.02.2011
Сообщений: 16,926
14.12.2013, 16:07 #13
Doksim,
смотри
большие и малые буквы в латинском алфавите отличаются 6 битом (0x20)
A=0x41 a=0x61
B=0x42 b=0x62
и вот этим мы перегоняем буквы в малые, если они большие и ничего не делается если они малые
C++
1
ch|0x20
например
'A'|0x20= 'a'( 0x41|0x20=0x61)
'a'|0x20= 'a'( 0x61|0x20=0x61)

можно перегнать все в большие
C++
1
ch& ~0x20// =ch&0xDF
или поменять большие на малые и наоборот
C++
1
ch^0x20
1
Doksim
57 / 57 / 8
Регистрация: 08.12.2013
Сообщений: 257
14.12.2013, 16:12 #14
Цитата Сообщение от ValeryS Посмотреть сообщение
Doksim,
смотри
большие и малые буквы в латинском алфавите отличаются 6 битом (0x20)
A=0x41 a=0x61
B=0x42 b=0x62
и вот этим мы перегоняем буквы в малые, если они большие и ничего не делается если они малые
C++
1
ch|0x20
например
'A'|0x20= 'a'( 0x41|0x20=0x61)
'a'|0x20= 'a'( 0x61|0x20=0x61)

можно перегнать все в большие
C++
1
ch& ~0x20// =ch&0xDF
или поменять большие на малые и наоборот
C++
1
ch^0x20
Количество символов, отличных от латинских букв и пробелов
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2013, 16:12
Привет! Вот еще темы с ответами:

Определить в массиве максимальную серию символов, отличных от букв - C++
Добрый вечер. Есть проблемма с решением таких задач. 1. Дан массив символов, содержащий текст. Определить длину содержащейся в нем...

Определить в каждом предложении текста колличество символов, отличных от букв и пробела - C++
Помогите пожалуйста решить задачу!!! С помощью текстового редактора создать файл, содержащий текст, длина которого не превышает 1000...

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

Определить длину содержащейся в тексте максимальной серии символов, отличных от букв латинского алфавита - C++
1.Текст – это непустая последовательность букв. Дан текст. Определить длину содержащейся в тексте максимальной серии символов, отличных от...


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

Или воспользуйтесь поиском по форуму:
14
Yandex
Объявления
14.12.2013, 16:12
Ответ Создать тему
Опции темы

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