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

Все последующие вхождения символа заменить на заглавные - C++

Восстановить пароль Регистрация
 
TonyPride
2 / 2 / 1
Регистрация: 22.10.2012
Сообщений: 47
22.10.2012, 13:59     Все последующие вхождения символа заменить на заглавные #1
Доброго времени суток. Столкнулся с проблемой написания программы к задаче: "С клавиатуры вводится текст, либо набор символов в строку, нужно все элементы равные первому символу сделать заглавными, при этом первый может быть и прописным. Пример: abcdaaaad заменить на abcdAAAAd. При решении задачи нельзя использовать библиотечные функции."
С символьными массивами раньше вообще не доводилось работать, написал код, но там куча ошибок, которые никак не могу исправить.
Код

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 <iostream>
#define N 80
using namespace std;
 
int main()
{
    int i;
    char q[N], *p, *r;
    cout<<"Print string"<<endl;
    for (int i=1; (i<N) && (q[i]); i++)
    {
      cin>>q[i];
    }
    cout<<q<<endl;
    p=q;
    for (i=1; q[i]; i++)
    {
        r=&q[i];
        if (*p==*q);
        {
            *r=*r-32;
        }
    }
    cout<<q;
 
}

Помогите, пожалуйста. Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.10.2012, 13:59     Все последующие вхождения символа заменить на заглавные
Посмотрите здесь:

Заменить в строке все множественные вхождения заданного символа одним C++
Как в переменной строкового типа заменить все вхождения одного символа на другой? C++
Напечатать все слова, которые отличаются от последнего, но предварительно надо уничтожить из них все последующие вхождения первой буквы C++
Работа со строкой (удалить все цифры, подсчитать количество и сумму удаленных цифр, заменить все заглавные латинские буквы на строчные) C++
Преобразовать каждое слово в строке, заменив в нем все последующие вхождения его первой буквы на символ «.» C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
22.10.2012, 14:25     Все последующие вхождения символа заменить на заглавные #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <cctype>
using namespace std;
 
int main()
{
    setlocale (LC_ALL, "Russian");
    char str[256];
    cout<<"-> ";
    cin.getline(str, '\n');
    for (int i = 1; str[i]; i++)
    {
        if (str[i] == str[0])
            str[i] = toupper(str[i]);
    }
    cout<<"-> "<<str<<endl;
    system("pause");
    return 0;
}

Не по теме:


Цитата Сообщение от TonyPride Посмотреть сообщение
При решении задачи нельзя использовать библиотечные функции
Может и без компилятора, только на бумажке делать надо

David Sylva
 Аватар для David Sylva
1280 / 942 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
22.10.2012, 14:32     Все последующие вхождения символа заменить на заглавные #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream> 
 
int main() 
{    
    char str[] = "abcdaaaad"; 
    char s = str[0]; 
    unsigned int i; 
    for ( i = 1; i < strlen(str); i++) 
        if(str[i] == s) 
            str[i] = int(s) - 32; 
 
    std::cout << str << std::endl;
 
}
TonyPride
2 / 2 / 1
Регистрация: 22.10.2012
Сообщений: 47
22.10.2012, 14:52  [ТС]     Все последующие вхождения символа заменить на заглавные #4
yuron_477, спасибо большое! Скажите, а можно заменить прописные на заглавные без использования toupper?
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
22.10.2012, 14:54     Все последующие вхождения символа заменить на заглавные #5
В 3-ем посте без toupper.
TonyPride
2 / 2 / 1
Регистрация: 22.10.2012
Сообщений: 47
22.10.2012, 14:59  [ТС]     Все последующие вхождения символа заменить на заглавные #6
David Sylva,
yuron_477,
Спасибо огромное! Разобрался!
Yandex
Объявления
22.10.2012, 14:59     Все последующие вхождения символа заменить на заглавные
Ответ Создать тему
Опции темы

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