1 / 1 / 0
Регистрация: 05.12.2010
Сообщений: 34
1

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

05.12.2010, 21:20. Показов 11982. Ответов 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 в строке?

 Комментарий модератора 
Используйте соответствующие теги форматирования кода.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.12.2010, 21:20
Ответы с готовыми решениями:

Узнать позицию символа в строке string
Привет, как узнать индекс символа 'l' в строке string ? string s = &quot;Hello&quot;;

Определить последнее вхождение символа “р” в строке и вывести строку, начиная с первого символа и до последнего “р” в строке
Заданы 2 строки, состоящие из слов, разделенных пробелами. Определить последнее вхождение символа...

Поменяйте чётные символы между строками, и после каждого четного символа добавьте его номер в исходной строке
Запросите у пользователя 2 строки длинной от 4 до 20 символов.Поменяйте чётные символы между...

Замена символа в строке на число соответствующему номеру по порядку вхождения этого символа в строку
В заданной строке заменить каждый символ «*» числом, соответствующим номеру по порядку вхождения...

3
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
11178 / 7110 / 1680
Регистрация: 25.07.2009
Сообщений: 13,003
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;
}
1
1 / 1 / 0
Регистрация: 05.12.2010
Сообщений: 34
05.12.2010, 23:34  [ТС] 3
Спасибо, В этом решении для меня есть незнакомые моменты, поэтому возникли вопросы :
1)почему p-buf возвращает положительное значение?
2)как при вычитании символов получается число?
3)почему в последней формуле нельзя заменить buf на strlen(buf)?
4)почему *p,а не p?
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
11178 / 7110 / 1680
Регистрация: 25.07.2009
Сообщений: 13,003
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;
2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.12.2010, 23:43
Помогаю со студенческими работами здесь

В строке заменить каждый символ «!» числом, равным индексу этого символа в строке
В заданной строке заменить каждый символ «!» числом, равным индексу этого символа в строке. ...

Вывести порядковый номер слова максимальной длины и номер позиции в строке, с которой оно начинается
как вывести на экран порядковый номер слова максимальной длины и номер позиции в строке, с которой...

Найти порядковый номер слова максимальной длины в строке и номер позиции, с которой оно начинается
помогите пожалуйста с программой( среда Visual C ) Дана строка символов, состоящая из...

Вывести на экран порядковый номер слова максимальной длины и номер позиции в строке, с которой оно начинается
и так, вот условие: дана строка символов, состоящая из произвольного текста, слова разделены...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru