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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 28, средняя оценка - 4.96
Роман_1985
1 / 1 / 0
Регистрация: 05.12.2010
Сообщений: 34
#1

Узнать номер символа в строке. - C++

05.12.2010, 21:20. Просмотров 3691. Ответов 3
Метки нет (Все метки)

Здравствуйте. Помогите, пожалуйста! Задача Подсчитать кол-во символов в строке после последнего вхождения символа <<charg>>. Вот моя программа:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
    const int max=80;
    int n,j,m=0,kol;
    char charg1;
    cout<<"BBEDUTE CUMBO/I:";
    cin>>charg1;
    cout<<"CUMBO/I:"<<charg1<<endl<<endl;
    char str1[]="Это первая строка";
 
    kol=strlen(str1);cout<<kol<<endl;
    for (j=0;j<kol;j++)
    {if (str1[j]==charg1) n=j;}
    cout<<"HOMEP CUMBO/IA "<<charg1<<": "<<n<<endl;
    for (j=n;j<strlen(str1);j++) m++;
    cout<<"CHIC/IO POC/IE: "<<m;
    return 0;
}
Где {if (str1[j]==charg1) n=j;} усл оператор не срабатывает должным образом, но если вместо charg1 поставить параметр 'p' , всё работает как надо. (Почему?)
Так вот, как можно узнать номер символа charg в строке?

 Комментарий модератора 
Используйте соответствующие теги форматирования кода.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.12.2010, 21:20     Узнать номер символа в строке.
Посмотрите здесь:

C++ В каждой строке матрицы найти и вывести минимальный элемент и его номер в строке
C++ Нужно вычислить номер позиции первого значащего символа
C++ Найти порядковый номер слова максимальной длины в строке и номер позиции, с которой оно начинается
C++ Программа вычисляющая номер позиции первого символа 0
C++ Определить последнее вхождение символа “р” в строке и вывести строку, начиная с первого символа и до последнего “р” в строке
C++ Поменяйте чётные символы между строками, и после каждого четного символа добавьте его номер в исходной строке
Узнать позицию символа в строке string C++
C++ Определить порядковый номер введенного символа
C++ Найти число пробелов в строке и заменить их на номер по порядку в исходной строке
Вывести на экран порядковый номер слова максимальной длины и номер позиции в строке, с которой оно начинается C++
Вывести порядковый номер слова максимальной длины и номер позиции в строке, с которой оно начинается C++
Определить в заданной последовательности номер первого цифрового символа C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Эксперт С++
9439 / 5462 / 925
Регистрация: 25.07.2009
Сообщений: 10,481
05.12.2010, 21:53     Узнать номер символа в строке. #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <cstring>
    
int main(){
    const int MAX_LEN(256);
    char buf[MAX_LEN], * p, ch;
    
    std::cout << "String: ";
    std::cin.getline(buf, MAX_LEN);
    std::cout << "Character: ";
    std::cin >> ch;
    
    if ( ( p = strrchr(buf, ch) ) == NULL ){
        std::cerr << "Character not found in string!" << std::endl;
        return 1;
    }
    
    std::cout << ( strlen(buf) - (p - buf) - 1 ) << " characters after last " << ch << std::endl;
    
    return 0;
}
Роман_1985
1 / 1 / 0
Регистрация: 05.12.2010
Сообщений: 34
05.12.2010, 23:34  [ТС]     Узнать номер символа в строке. #3
Спасибо, В этом решении для меня есть незнакомые моменты, поэтому возникли вопросы :
1)почему p-buf возвращает положительное значение?
2)как при вычитании символов получается число?
3)почему в последней формуле нельзя заменить buf на strlen(buf)?
4)почему *p,а не p?
easybudda
Эксперт С++
9439 / 5462 / 925
Регистрация: 25.07.2009
Сообщений: 10,481
05.12.2010, 23:43     Узнать номер символа в строке. #4
Роман_1985, ну давайте по порядку:
Функция strrchr() возвращает указатель на последнее вхождение символа в строку. buf - фактически указатель на первый элемент строки. Соответственно p - buf даёт количество символов между первым и найденным, то есть индекс найденного символа. strlen() возвращает длинну строки. Если от неё отнять количество символов до найденного включительно - получится количество оставшихся символов... Кстати, только-что дошло:
C++
1
std::cout << ( strlen(p) - 1 ) << " characters after last " << ch << std::endl;
Yandex
Объявления
05.12.2010, 23:43     Узнать номер символа в строке.
Ответ Создать тему
Опции темы

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