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

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

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

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

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

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

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

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

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Tmesser
55 / 55 / 1
Регистрация: 18.12.2010
Сообщений: 385
04.07.2011, 23:13 #2
Можно поконкретние задачу обяснить?
0
vovaxo
0 / 0 / 0
Регистрация: 04.07.2011
Сообщений: 9
04.07.2011, 23:32  [ТС] #3
мне нужна простенькая программа, которая показывает работу этой функции.
0
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;
}
1
xAtom
915 / 740 / 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();
}
0
vovaxo
0 / 0 / 0
Регистрация: 04.07.2011
Сообщений: 9
05.07.2011, 00:14  [ТС] #6
xAtom
ета программа у меня не работает.
можна по-проще. например я не понимаю оператора return ~(src - ptr) + 1;
спасибо!

Добавлено через 4 минуты
а можно с более простыми операторами?
0
nameless
Эксперт C++
334 / 298 / 14
Регистрация: 16.06.2009
Сообщений: 486
05.07.2011, 09:42 #7
vovaxo, Что я сильно загнул с решением можно было значительно проще.
0
diagon
Higher
1929 / 1195 / 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;
}
1
vovaxo
0 / 0 / 0
Регистрация: 04.07.2011
Сообщений: 9
05.07.2011, 18:49  [ТС] #9
WordIndex(s,n) определение позиции начала в строке s слова с номером n - выход - указатель на это слово.
нужен простой пример применения этой функции, без сложных операторов
0
Jupiter
Каратель
Эксперт С++
6554 / 3975 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
05.07.2011, 18:52 #10
vovaxo, вам уже сделали 3 варианта

Цитата Сообщение от vovaxo Посмотреть сообщение
WordIndex(s,n) определение позиции начала в строке s слова с номером n - выход - указатель на это слово.
нужен простой пример применения этой функции, без сложных операторов
так трудно было написать об этом в ПЕРВОМ посте
0
diagon
Higher
1929 / 1195 / 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?
1
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)
0
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"
1
diagon
Higher
1929 / 1195 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
05.07.2011, 19:27 #14
strstr делает тоже самое.
Можно просто поискать ее реализации.
1
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))
спасибо!!!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.07.2011, 23:02
Привет! Вот еще темы с ответами:

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

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

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

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


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

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

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