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

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

Войти
Регистрация
Восстановить пароль
 
grrrrr
45 / 45 / 7
Регистрация: 21.04.2009
Сообщений: 265
#1

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

16.03.2011, 13:56. Просмотров 731. Ответов 10
Метки нет (Все метки)

Здравствуйте. Сделал функцию - изменения 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++;
           } 
        }
    }
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.03.2011, 13:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функция изменение 2-ой буквы на прописную. (C++):

Если слово начинается с латинской строчной буквы, заменить её на прописную - C++
Задача 1 : Вводим текст(слова). Под словом понимается последовательность литер, не содержащая пробелов и знаков препинания. Если слово...

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

Работа со строками. Заменить каждую первую букву в словах, начинающихся с гласной буквы на прописную - C++
Заменить каждую первую букву в словах, начинающихся с гласной буквы на прописную. Что только не делал, но так и не получилось. Заменяет...

Дана строка латинских букв. После заглавной буквы поставить вставить эту же прописную букву и наоборот - C++
Дана строка латинских букв. После заглавной буквы поставить вставить эту же прописную букву и наоборот. Добавлено через 1 час 11 минут...

Функция преобразует буквы верхнего регистра в строке s в буквы нижнего регистра - C++
Задание: strlwr char *strlwr( char *s); Функция преобразует буквы верхнего регистра в строке s в буквы нижнего регистра. P.S....

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
asics
Freelance
Эксперт С++
2847 / 1784 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
16.03.2011, 14:05 #2
grrrrr, Так не пойдет ?
C++
1
arr[1] = toupper(arr[1]);
1
grrrrr
45 / 45 / 7
Регистрация: 21.04.2009
Сообщений: 265
16.03.2011, 16:26  [ТС] #3
asics, Я не полностью задание написал. Извените. Надо изменить 2-ю букву в новом предложении. т.е. 2-ю букву после точки.

Добавлено через 1 час 49 минут
пожалуйста, дайте совет по функции.
0
MILAN
885 / 779 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
16.03.2011, 16:29 #4
grrrrr, приведите пример входных и выходных данных.
0
grrrrr
45 / 45 / 7
Регистрация: 21.04.2009
Сообщений: 265
16.03.2011, 17:07  [ТС] #5
MILAN, после запуска - ничего не показывает.
входная стока.
C++
1
char arr[256] = "Hello Vasia. Hello Pupkin. How are you?";
0
MILAN
885 / 779 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
16.03.2011, 17:19 #6
grrrrr, вы не поняли мой вопрос. Покажыте как должно быть?
0
LaГushan
124 / 124 / 14
Регистрация: 12.03.2011
Сообщений: 227
16.03.2011, 19:06 #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;
}
0
grrrrr
45 / 45 / 7
Регистрация: 21.04.2009
Сообщений: 265
16.03.2011, 20:09  [ТС] #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?

Вот как звучит задача:
В строке, содержащей последовательность слов, найти конец предложения, обозначенный символом "точка". В следующем слове вторую строчную букву заменить на прописную.
0
Gepar
1177 / 533 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
16.03.2011, 20:49 #9
grrrrr, а у вас второй символ после точки какраз таки и не буква (пробел тоже символ).
0
LaГushan
124 / 124 / 14
Регистрация: 12.03.2011
Сообщений: 227
16.03.2011, 22:19 #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;
}
0
grrrrr
45 / 45 / 7
Регистрация: 21.04.2009
Сообщений: 265
16.03.2011, 23:46  [ТС] #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";
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.03.2011, 23:46
Привет! Вот еще темы с ответами:

Функция подсчёта буквы - C++
определить функцию для вычисления количества букв &quot;c&quot; в слове... Помогите пожалуйста

Функция нахождения заданной буквы в предложении - C++
Дано речення, визначити чи є буква а в ньому. Якщо така буква є знайти порядковий номер першої із них. Перевожу. Дано предложение,...

Функция отслеживающая изменение состояния переменной - C++
Ребята, помогите пожалуйста написать в теме указанную функцию. Поясню. Есть неподвластная мне переменная из приложения к которой я пишу...

Функция подсчета слов, состоящих из одной буквы - C++
Здравствуйте помогите чутка доделать что не так надо подсчитать сколько слов в предложении начинаются с 1 буквы #include &lt;iostream&gt; ...


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

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

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