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

Вывести на экран порядковый номер слова,накрывающего К-ю позицию в строке - C++

Восстановить пароль Регистрация
 
inFinius
 Аватар для inFinius
1 / 1 / 0
Регистрация: 01.03.2010
Сообщений: 15
12.02.2011, 09:43     Вывести на экран порядковый номер слова,накрывающего К-ю позицию в строке #1
Дана строка символов, состоящая из произвольного текста,слова разделены пробелами.Вывести на экран порядковый номер слова,накрывающего К-ю позицию(если на К-ю позицию попадает пробел,то номер предыдущего слова)

помогите пожалуйста
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.02.2011, 09:43     Вывести на экран порядковый номер слова,накрывающего К-ю позицию в строке
Посмотрите здесь:

Вывести на экран порядковый номер слова, накрывающего k-ю позицию C++
C++ Порядковый номер буквы в строке
Дана строка. Вывести на экран порядковый номер слова минимальной длины и количество символов в этом слове. C++
C++ нужно вывести самое длинное слово и его порядковый номер в исходной строке.
C++ Найти порядковый номер слова максимальной длины в строке и номер позиции, с которой оно начинается
C++ Дана строка символов, состоящая из произвольного текста, слова раз-делены пробелами. Вывести на экран порядковый номер слова, накрывающего k позицию
C++ Вывести на экран порядковый номер слова минимальной длины и количество символов в этом слове
C++ Найти и вывести на экран сумму элементов, порядковый номер которых делится на 3

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
12.02.2011, 11:23     Вывести на экран порядковый номер слова,накрывающего К-ю позицию в строке #2
Без проверок на границы.
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
#include <cstdio>
#include <cstring>
 
int WordNumberAt(char *string, int position) {
  char *symbol = string + position;
  int word_number = 0;
  while (symbol != string) {
    while (symbol != string && *symbol == ' ') --symbol;
    if (symbol == string)
      return word_number;
    ++word_number;
    while (symbol != string && *symbol != ' ') --symbol;
  }
  return word_number;
}
 
int main(int argc, char *argv[]) {
  char string[] = "  Abc    def Ghi    jkl mN o    Prq     ";
  printf("%d\n", WordNumberAt(string, 1));
  printf("%d\n", WordNumberAt(string, 7));
  printf("%d\n", WordNumberAt(string, 12));
  printf("%d\n", WordNumberAt(string, strlen(string) - 1));
  return 0;
}
Mr.X
Эксперт С++
 Аватар для Mr.X
2802 / 1578 / 247
Регистрация: 03.05.2010
Сообщений: 3,666
13.02.2011, 09:50     Вывести на экран порядковый номер слова,накрывающего К-ю позицию в строке #3
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
/////////////////////////////////////////////////////////////////////////////////////////
//Дана строка символов, состоящая из произвольного текста, слова разделены пробелами.
//Вывести на экран порядковый номер слова, накрывающего К-ю позицию (если на К-ю позицию 
//попадает пробел, то номер предыдущего слова).
/////////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <iostream>
#include <iterator>
#include <sstream>
#include <string>
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::string  T_str;
/////////////////////////////////////////////////////////////////////////////////////////
void  normalize_str(T_str&  s)
{
    std::istringstream            ccin(s);
    std::istream_iterator<T_str>  ccin_beg(ccin),  
                                  ccin_end;
    
    std::ostringstream            sout;
    std::ostream_iterator<T_str>  sout_beg(sout, " ");
 
    std::copy(ccin_beg, ccin_end, sout_beg);
    s.assign(sout.str());
    if(!s.empty())
    {
        s.erase(s.size() - 1);
    }
}
/////////////////////////////////////////////////////////////////////////////////////////
int  get_word_ind_covering_position(int  pos, const T_str&  s)
{
    return  std::count(s.begin(), s.begin() + pos, ' ') + 1;
}
/////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));   
    std::cout << "Введите строку слов, разделенных пробелами: "
              << std::endl;
    T_str  s;
    getline(std::cin, s);
    if(s.empty()) exit(0);
 
    normalize_str(s);
    std::cout << "Введенная строка без пробелов в начале и в конце и с одинарными пробелами "
              << std::endl
              << "между словами:"
              << std::endl
              << s
              << std::endl;
    for(;;)
    {
        std::cout << "Введите номер позиции 0 <= n <= "
                  << s.size() - 1
                  << ": ";
 
        size_t  pos = 0;
        std::cin >> pos;
        if(   pos < 0
           || s.size() - 1 < pos)
        {
            break;
        }
 
        std::cout << "Позицию "
                  << pos
                  << " накрывает слово с порядковым номером "
                  << get_word_ind_covering_position(pos, s)
                  << "."
                  << std::endl
                  << std::endl;
    }
}
Yandex
Объявления
13.02.2011, 09:50     Вывести на экран порядковый номер слова,накрывающего К-ю позицию в строке
Ответ Создать тему
Опции темы

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