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

Функция изменение 2-ой буквы на прописную. - C++

Восстановить пароль Регистрация
 
grrrrr
 Аватар для grrrrr
45 / 45 / 7
Регистрация: 21.04.2009
Сообщений: 265
16.03.2011, 13:56     Функция изменение 2-ой буквы на прописную. #1
Здравствуйте. Сделал функцию - изменения 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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <cstdlib>
#include <iostream>
#include <cctype>
 
using namespace std;
 
void str(char *, int);
 
int main(int argc, char *argv[])
{
    char arr[256] = "Hello Vasia. Hello Pupkin. How are you?";
    
    int k=strlen(arr);
        
    str(arr, k);
    
    cout << arr << "\n";
 
    system("PAUSE");
    return EXIT_SUCCESS;
}
void str(char *stroka, int n)
{
    int i=0, c=0, s;
 
    while(stroka[i])
    {        
        if(stroka[i]=='.') 
        {
           s=0;               
           while(s < 2 || stroka[i])
           {              
               if(isalpha(stroka[i])) s++;
               
               c++;
               
               if(s == 1)   toupper(stroka[i]);            
               i++;
           } 
        }
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.03.2011, 13:56     Функция изменение 2-ой буквы на прописную.
Посмотрите здесь:

C++ Изменение одной буквы на другое количество
Функция подсчёта буквы C++
Конвертировать число от 1 до 999 в прописную строку C++
C++ Если слово начинается с латинской строчной буквы, заменить её на прописную
C++ Дана строка латинских букв. После заглавной буквы поставить вставить эту же прописную букву и наоборот
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
16.03.2011, 14:05     Функция изменение 2-ой буквы на прописную. #2
grrrrr, Так не пойдет ?
C++
1
arr[1] = toupper(arr[1]);
grrrrr
 Аватар для grrrrr
45 / 45 / 7
Регистрация: 21.04.2009
Сообщений: 265
16.03.2011, 16:26  [ТС]     Функция изменение 2-ой буквы на прописную. #3
asics, Я не полностью задание написал. Извените. Надо изменить 2-ю букву в новом предложении. т.е. 2-ю букву после точки.

Добавлено через 1 час 49 минут
пожалуйста, дайте совет по функции.
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
16.03.2011, 16:29     Функция изменение 2-ой буквы на прописную. #4
grrrrr, приведите пример входных и выходных данных.
grrrrr
 Аватар для grrrrr
45 / 45 / 7
Регистрация: 21.04.2009
Сообщений: 265
16.03.2011, 17:07  [ТС]     Функция изменение 2-ой буквы на прописную. #5
MILAN, после запуска - ничего не показывает.
входная стока.
C++
1
char arr[256] = "Hello Vasia. Hello Pupkin. How are you?";
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
16.03.2011, 17:19     Функция изменение 2-ой буквы на прописную. #6
grrrrr, вы не поняли мой вопрос. Покажыте как должно быть?
LaГushan
123 / 123 / 14
Регистрация: 12.03.2011
Сообщений: 227
16.03.2011, 19:06     Функция изменение 2-ой буквы на прописную. #7
Если каждый 2-й символ после точки, менять в верхний регистр, то делаем так. Только они у вас итак в верхнем регистре

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
int main(int argc, char *argv[])
{
    char arr[256] = "Hello Vasia. Hello Pupkin. How are you?";
    
    size_t k=strlen(arr);
     for(int i = 0;i < k;i++)
         if(arr[i] == '.')
             arr[i+2] = toupper(arr[i+2]);
     std::cout << arr;
 
    system("PAUSE");
    return EXIT_SUCCESS;
}
grrrrr
 Аватар для grrrrr
45 / 45 / 7
Регистрация: 21.04.2009
Сообщений: 265
16.03.2011, 20:09  [ТС]     Функция изменение 2-ой буквы на прописную. #8
LaГushan,
Цитата Сообщение от grrrrr Посмотреть сообщение
Надо изменить 2-ю букву в новом предложении.
имеется ввиду букву, а не любой символ. Ваш цикл немного не верен, т.к. можно допустить что после прохождения 2 циклов arr[i+2] в строке может находится что угодно - пробел, символ и т.д.

MILAN,
исходная:
Hello Vasia. Hello Pupkin. How are you?
выходная:
Hello Vasia. HЕllo Pupkin. HOw are you?

Вот как звучит задача:
В строке, содержащей последовательность слов, найти конец предложения, обозначенный символом "точка". В следующем слове вторую строчную букву заменить на прописную.
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,511
16.03.2011, 20:49     Функция изменение 2-ой буквы на прописную. #9
grrrrr, а у вас второй символ после точки какраз таки и не буква (пробел тоже символ).
LaГushan
123 / 123 / 14
Регистрация: 12.03.2011
Сообщений: 227
16.03.2011, 22:19     Функция изменение 2-ой буквы на прописную. #10
grrrrr, ну теперь в принципе понятно. Вот, алгоритм может не самый красивый, но по крайней мере работает
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <string>
 
int main(int argc, char *argv[])
{
    std::string s = "Hello vasia.  Hello Pupkin. How are you?";
    int k= 0;
    int p = 1;
    while( k != std::string::npos ) { k = s.find('.',k+1);
    while(!isalpha(s[k+p]) && k != std::string::npos){p+=1;
           s[k+p+1] = toupper(s[k+p+1]);
    }
    p = 1;
    }
    std::cout << s;
        system("PAUSE");
    return EXIT_SUCCESS;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.03.2011, 23:46     Функция изменение 2-ой буквы на прописную.
Еще ссылки по теме:

C++ Функция преобразует буквы верхнего регистра в строке s в буквы нижнего регистра
Функция отслеживающая изменение состояния переменной C++
C++ Функция подсчета слов, состоящих из одной буквы

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

Или воспользуйтесь поиском по форуму:
grrrrr
 Аватар для grrrrr
45 / 45 / 7
Регистрация: 21.04.2009
Сообщений: 265
16.03.2011, 23:46  [ТС]     Функция изменение 2-ой буквы на прописную. #11
Сделал, но по африкански, вот кому интересно.

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
#include <iostream>
#include <cctype>
 
using namespace std;
 
void str(char *, int);
 
 
int main()
{
    char arr[256] = "Hello Vasia. Hello Pupkin. How are you?";
 
       
    int k=strlen(arr);      
        
    str(arr, k);
    cout << arr << "\n";
    
 
    
 
    return 0;
}
void str(char *stroka, int n)
{
    int i=0, s;
 
    while(stroka[i])
    {
       if(stroka[i] == '.') 
       {           
           s=0;
           while(s!=2)
           {
               if(isalpha(stroka[i])) s++;
               i++;
           }
           stroka[i-1] = toupper(stroka[i-1]);
       }
       i++;
    }
    cout << "\n";
}
Yandex
Объявления
16.03.2011, 23:46     Функция изменение 2-ой буквы на прописную.
Ответ Создать тему
Опции темы

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