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

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

Войти
Регистрация
Восстановить пароль
 
inFinius
1 / 1 / 0
Регистрация: 01.03.2010
Сообщений: 15
#1

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

12.02.2011, 09:43. Просмотров 1046. Ответов 2
Метки нет (Все метки)

Дана строка символов, состоящая из произвольного текста,слова разделены пробелами.Вывести на экран порядковый номер слова,накрывающего К-ю позицию(если на К-ю позицию попадает пробел,то номер предыдущего слова)

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

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

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

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

Вывести на экран порядковый номер слова минимальной длины и количество символов в этом слове - C++
Дана строка, состоящая из слов, разделенных пробелами. Вывести на экран порядковый номер слова минимальной длины и количество символов в...

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

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

Вывести самое длинное слово и его порядковый номер в исходной строке - C++
Здраствуйте,мне нужно вывести самое длинное слово и его порядковый номер в исходной строке.Спасибо

Вывести порядковый номер слова минимальной длины и количество символов в этом слове - C++
Дана строка символов, состоящая из произвольного текста, слова разделены пробелами. Вывести на экран порядковый номер слова минимальной...

Найти и вывести на экран сумму элементов, порядковый номер которых делится на 3 - C++
Элементы случайно заполненного одномерного массива d преобразуйте по формуле d = i/d. В новом массиве найдите и выведите на экран сумму...

Найти и вывести на экран максимальный элемент массива, а также его порядковый номер - C++
Найти и вывести на экран максимальный элемент данного массива U(10), а также его порядковый номер

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

Найти порядковый номер слова максимальной длины - C++
Помогите, пожалуйста! Очень нужно!


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
2918 / 1347 / 134
Регистрация: 29.11.2010
Сообщений: 2,721
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
Эксперт С++
3043 / 1688 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
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     Вывести на экран порядковый номер слова,накрывающего К-ю позицию в строке
Ответ Создать тему
Опции темы

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