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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.68
vovaxo
0 / 0 / 0
Регистрация: 04.07.2011
Сообщений: 9
#1

Посимвольная обработка строки - C++

04.07.2011, 22:52. Просмотров 2585. Ответов 17
Метки нет (Все метки)

простой пример использования функции WordIndex(s,n).
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.07.2011, 22:52     Посимвольная обработка строки
Посмотрите здесь:

Посимвольная обработка UTF8 строки - C++
Добрый день. пишу программу в С++ в Linux Ubuntu, необходимо обрабатывать строку введенную в UTF-8 (русские символы) Есть...

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

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

Посимвольная обработка строк - C++
Дано слово. Определить, упорядочены ли его буквы по алфавиту. Выделить первую упорядоченную последовательность в новую строку. #include...

Посимвольная обработка текстового файла: распределение всех слов по длине - C++
Вывести в файле распределение всех слов по длине (т.е. сколько в файле слов из одной буквы, из двух и т.д.). За слово считать цепочку...

Работа с текстовым файлом: как посчитать кол-во букв в слове? (посимвольная обработка) - C++
Работа с текстовым файлом: как посчитать кол-во букв в слове? (посимвольная обработка)

Посимвольная запись в строки из файлов - C++
Доброго времени суток. После долгого больничного пытаюсь разобраться со вторым семестром! :) Проблема собственно в чем! Не могу...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tmesser
55 / 55 / 1
Регистрация: 18.12.2010
Сообщений: 385
04.07.2011, 23:13     Посимвольная обработка строки #2
Можно поконкретние задачу обяснить?
vovaxo
0 / 0 / 0
Регистрация: 04.07.2011
Сообщений: 9
04.07.2011, 23:32  [ТС]     Посимвольная обработка строки #3
мне нужна простенькая программа, которая показывает работу этой функции.
nameless
Эксперт C++
334 / 298 / 14
Регистрация: 16.06.2009
Сообщений: 486
05.07.2011, 00:02     Посимвольная обработка строки #4
vovaxo,

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
#include <stdio.h>
#include <string.h>
 
int WordIndex(char* str, int number)
{
   int length = 0;
   int i = 1;
   if (number > 0)
   {
       for (char* tok = strtok(str, " "); tok && i < number; tok = strtok(NULL, " "), ++i)
          length += strlen(tok) + 1;
 
       return (i < number) ? 0 : length + 1;
   }
 
   return 0;
}
 
int main()
{
   char str[] = "This is my test string";
   
   printf("%d", WordIndex(str, 5));
 
   return 0;
}
xAtom
914 / 739 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
05.07.2011, 00:05     Посимвольная обработка строки #5
Я как понял хотите получить индекс слова в строке, вот держи.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using namespace std;
 
int  WordIndex(const char* src, const char* str) {
      const char* ptr = strstr(src, str);
      if(ptr)
          return  ~(src - ptr) + 1;
      return -1;
}
 
void  main(void) {
 
     char str[] = "Word-Pad 2009";
 
     int index = WordIndex(str,  "Pad");
            if(index != -1)
                   cout << "слово найдено по-индексу: " << index << endl;
             else
                   cout << "слов не найдено" << endl;
 
 
        cin.get();
}
vovaxo
0 / 0 / 0
Регистрация: 04.07.2011
Сообщений: 9
05.07.2011, 00:14  [ТС]     Посимвольная обработка строки #6
xAtom
ета программа у меня не работает.
можна по-проще. например я не понимаю оператора return ~(src - ptr) + 1;
спасибо!

Добавлено через 4 минуты
а можно с более простыми операторами?
nameless
Эксперт C++
334 / 298 / 14
Регистрация: 16.06.2009
Сообщений: 486
05.07.2011, 09:42     Посимвольная обработка строки #7
vovaxo, Что я сильно загнул с решением можно было значительно проще.
diagon
Higher
1928 / 1194 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
05.07.2011, 09:47     Посимвольная обработка строки #8
Цитата Сообщение от vovaxo Посмотреть сообщение
простой пример использования функции WordIndex(s,n).
Что за функция ? Что она должна делать?
Индекс слова в строке без учета нескольких пробелов в строке:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <string.h>
unsigned WordIndex(const char * str, const char * word){
    unsigned res = 0;
    const char * p = strstr(str, word);
    while (p != str)
        if (*p-- == ' ') ++res;
    return ++res;
}
int main(){
    char str[100];
    char word[20];
    fgets(str, 100, stdin);
    scanf("%s",word);
    printf("%u\n", WordIndex(str, word) );
    return 0;
}
vovaxo
0 / 0 / 0
Регистрация: 04.07.2011
Сообщений: 9
05.07.2011, 18:49  [ТС]     Посимвольная обработка строки #9
WordIndex(s,n) определение позиции начала в строке s слова с номером n - выход - указатель на это слово.
нужен простой пример применения этой функции, без сложных операторов
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
05.07.2011, 18:52     Посимвольная обработка строки #10
vovaxo, вам уже сделали 3 варианта

Цитата Сообщение от vovaxo Посмотреть сообщение
WordIndex(s,n) определение позиции начала в строке s слова с номером n - выход - указатель на это слово.
нужен простой пример применения этой функции, без сложных операторов
так трудно было написать об этом в ПЕРВОМ посте
diagon
Higher
1928 / 1194 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
05.07.2011, 18:54     Посимвольная обработка строки #11
C
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
#include <string.h>
unsigned WordIndex(char * s, char * n){
    return strstr(s,n) - s + 1;
}
int main(){
    char s[100], n[20];
    gets(s);
    scanf("%s",n);
    printf("%d\n", WordIndex(s,n) );
    return 0;
}
Проще некуда.
Хотя стоп
выход - указатель на это слово.
Как это понимать?
Вам нужен свой аналог функции strstr?
vovaxo
0 / 0 / 0
Регистрация: 04.07.2011
Сообщений: 9
05.07.2011, 19:17  [ТС]     Посимвольная обработка строки #12
да это моя ошибка, следующий раз буду знать. просто в последнем сообщении были вопросы на которые ответил. спасибо.

Добавлено через 20 минут
diagon
Как это понимать?
Вам нужен свой аналог функции strstr?

мне нужно создать функцию для работы со строковыми переменными без использования библиотеки <string.h>. Определение позиции начала в строке s слова с номером n - выход - указатель на это слово char * WordIndex (s, n)
nameless
Эксперт C++
334 / 298 / 14
Регистрация: 16.06.2009
Сообщений: 486
05.07.2011, 19:27     Посимвольная обработка строки #13
diagon, На сколько я понимаю, ему нужна функция которая возвращала указатель на слово в строке по его номеру:

т.е.

C
1
printf("%s", WordIndex("This is string", 2)); // выведет "is"
diagon
Higher
1928 / 1194 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
05.07.2011, 19:27     Посимвольная обработка строки #14
strstr делает тоже самое.
Можно просто поискать ее реализации.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.07.2011, 23:02     Посимвольная обработка строки
Еще ссылки по теме:

Посимвольная работа с файлом - C++
Доброй ночи, камрады! Простой вопрос такой: необходимо посимвольно считать из текстового файла инфу, затем вывести в консоль сначала буквы,...

Посимвольная запись в файл - C++
Здравствуйте ! Ни как не могу ничего нагуглить, задача: Создать текстовый файл, имя файла вводится с клавиатуры. Внести в него данные...

Посимвольная проверка вводимых данных - C++
Доброго времени суток. Такая проблема: нужно запретить пользователю вводить не цифры и дробные числа через запятую. т.е. 4213 -...

Посимвольная проверка строк без массива - C++
Всем доброго времени суток, собственно, сабж: Нужно проверить 2 строки посимвольно на наличие одинаковых элементов, но без использования...

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


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

Или воспользуйтесь поиском по форуму:
vovaxo
0 / 0 / 0
Регистрация: 04.07.2011
Сообщений: 9
05.07.2011, 23:02  [ТС]     Посимвольная обработка строки #15
очень спасибо!!!

strstr делает тоже самое.
Можно просто поискать ее реализации.

да. но толька у меня задания использовать функцию WordIndex.

Добавлено через 3 часа 24 минуты
nameless,
а можна тот пример в программе(printf("%s", WordIndex("This is string", 2))
спасибо!!!
Yandex
Объявления
05.07.2011, 23:02     Посимвольная обработка строки
Ответ Создать тему
Опции темы

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