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

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

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

Author24 — интернет-сервис помощи студентам
Здравствуйте. Помогите, пожалуйста! Задача Подсчитать кол-во символов в строке после последнего вхождения символа <<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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.12.2010, 21:20
Ответы с готовыми решениями:

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

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

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

3
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12841 / 7588 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
05.12.2010, 21:53
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  [ТС]
Спасибо, В этом решении для меня есть незнакомые моменты, поэтому возникли вопросы :
1)почему p-buf возвращает положительное значение?
2)как при вычитании символов получается число?
3)почему в последней формуле нельзя заменить buf на strlen(buf)?
4)почему *p,а не p?
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12841 / 7588 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
05.12.2010, 23:43
Роман_1985, ну давайте по порядку:
Функция strrchr() возвращает указатель на последнее вхождение символа в строку. buf - фактически указатель на первый элемент строки. Соответственно p - buf даёт количество символов между первым и найденным, то есть индекс найденного символа. strlen() возвращает длинну строки. Если от неё отнять количество символов до найденного включительно - получится количество оставшихся символов... Кстати, только-что дошло:
C++
1
std::cout << ( strlen(p) - 1 ) << " characters after last " << ch << std::endl;
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.12.2010, 23:43
Помогаю со студенческими работами здесь

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

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

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

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

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


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

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

Новые блоги и статьи
Создаем RESTful API с Laravel
Jason-Webb 28.04.2025
REST (Representational State Transfer) — это архитектурный стиль, который определяет набор принципов для создания веб-сервисов. Этот подход к построению API стал стандартом де-факто в современной. . .
Дженерики в C# - продвинутые техники
stackOverflow 28.04.2025
История дженериков началась с простой идеи — создать механизм для разработки типобезопасного кода без потери производительности. До их появления программисты использовали неуклюжие преобразования. . .
Тестирование в Python: PyTest, Mock и лучшие практики TDD
py-thonny 28.04.2025
Тестирование кода играет весомую роль в жизненном цикле разработки программного обеспечения. Для разработчиков Python существует богатый выбор инструментов, позволяющих создавать надёжные и. . .
Работа с PDF в Java с iText
Javaican 28.04.2025
Среди всех форматов PDF (Portable Document Format) заслуженно занимает особое место. Этот формат, созданный компанией Adobe, превратился в универсальный стандарт для обмена документами, не зависящий. . .
Динамические массивы в C++ - создание и использование
NullReferenced 27.04.2025
Динамические массивы представляют собой один из фундаментальных инструментов программирования на C++, позволяющий создавать структуры данных, размер которых определяется во время выполнения. . .
Асинхронный JavaScript: Промисы, Async/Await и Fetch API
Reangularity 27.04.2025
Пользователь заходит на веб-страницу, нажимает кнопку и. . . ничего не происходит. Сайт словно замер. Через несколько секунд всё внезапно оживает, но пользователь уже успел закрыть вкладку. Знакомая. . .
Management on GitLab and repository management in Visual Studio code
jigi33 27.04.2025
- repo management on GitLab - CI/ CD in GitLab - VCS repository management in Visual Studio code (see attachments)
Kanban или Scrum - что выбрать?
EggHead 27.04.2025
Kanban и Scrum — уже много лет удерживают лидирующие позиции среди гибких подходов. Руководители проектов и команды разработчиков то и дело сталкиваются с дилеммой: какой из этих двух методов выбрать. . .
Кастомные Middleware на C# в ASP.NET Core
UnmanagedCoder 27.04.2025
Разработка веб-приложений сегодня мало напоминает монолитное программирование прошлых лет. На смену громоздким блокам кода пришла модульная архитектура, где каждый компонент выполняет строго. . .
Анализ и линтинг кода JavaScript: ESLint, Prettier и JSHint
run.dev 26.04.2025
JavaScript прошёл долгий путь от простого языка для анимации веб-страниц до основы современной веб-разработки. С ростом сложности приложений, увеличением кодовых баз и масштабированием команд. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru