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

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

Войти
Регистрация
Восстановить пароль
 
TonyPride
2 / 2 / 1
Регистрация: 22.10.2012
Сообщений: 47
#1

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

22.10.2012, 13:59. Просмотров 335. Ответов 5
Метки нет (Все метки)

Доброго времени суток. Столкнулся с проблемой написания программы к задаче: "С клавиатуры вводится текст, либо набор символов в строку, нужно все элементы равные первому символу сделать заглавными, при этом первый может быть и прописным. Пример: 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;
 
}

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

Заменить все первые левые вхождения символа “a” на 00, а все правые вхождения символа “a” на 11 - C++
Заменить все первые левые вхождения символа “a” на 00, а все правые вхождения символа “a” на 11, остальные без изменений

Даны предложения. Заменить в нем все вхождения символа 'а' на '$' - C++
Даны предложения. Заменить в нем все вхождения символа 'а' на '$'

Заменить в строке все множественные вхождения заданного символа одним - C++
Функция заменяет в строке все множественные вхождения заданного символа одним для использование нелбходимо использовать Указатели....

Заменить все вхождения первого символа в массив на второй символ - C++
Задан символьный массив и два символа. Замените все вхождения первого символа в массив на второй символ. Нужно до пятницы. Заранее спасибо.

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

Вернуть сумму кодов всех элементов массива и заменить все вхождения символа «#» на букву А - C++
вот задание: Написать функцию, которая для заданного в качестве пара метра массива типа char возвращает сумму кодов всех его элементов и...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
DiffEreD
1430 / 767 / 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 Посмотреть сообщение
При решении задачи нельзя использовать библиотечные функции
Может и без компилятора, только на бумажке делать надо

0
David Sylva
1286 / 948 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
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;
 
}
1
TonyPride
2 / 2 / 1
Регистрация: 22.10.2012
Сообщений: 47
22.10.2012, 14:52  [ТС] #4
yuron_477, спасибо большое! Скажите, а можно заменить прописные на заглавные без использования toupper?
0
DiffEreD
1430 / 767 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
22.10.2012, 14:54 #5
В 3-ем посте без toupper.
1
TonyPride
2 / 2 / 1
Регистрация: 22.10.2012
Сообщений: 47
22.10.2012, 14:59  [ТС] #6
David Sylva,
yuron_477,
Спасибо огромное! Разобрался!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.10.2012, 14:59
Привет! Вот еще темы с ответами:

Напечатать все слова, отличные от последнего, удалив из слов все последующие вхождения первой буквы - C++
Дана последовательность, содержащая от 2 до 30 слов, в каждом из которых от 2 до 10 латинских букв, между соседними словами заданы не менее...

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

Заменить все символы "*" числом, совпадающим с порядковым номером вхождения данного символа в строку - C++
В заданной строке мне нужно заменить все &quot;*&quot; числом, которое будет отвечать номеру за порядком вхождения данного символа в строку.

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


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

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

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