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

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

Войти
Регистрация
Восстановить пароль
 
Soull
18 / 4 / 0
Регистрация: 21.10.2012
Сообщений: 60
#1

Если в строке нет символа +, то оставить строку без изменений, иначе каждую из цифр перед символом + заменять на * - C++

21.01.2013, 00:41. Просмотров 629. Ответов 7
Метки нет (Все метки)

Ввести символьный массив из 12 символов. Если в тексте нет символа +, то оставить без изменений, в другом случаи каждую из цифр перед символом+ заменять на *.
Помогите, плиз.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.01.2013, 00:41     Если в строке нет символа +, то оставить строку без изменений, иначе каждую из цифр перед символом + заменять на *
Посмотрите здесь:
C++ Если в тексте нет символа +, то оставить текст без изменения, иначе каждую из цифр, предшествующую первому вхождению символа +, заменить символом -
C++ Если длина строки больше 10 - оставить первые 6 символов, иначе дополнить строку символами 'о'
Дано натуральное число n. Отбросить в нем все цифры, стоящие правее самой правой единицы либо оставить число без изменений, если единицы в нем нет C++
Если последовательность отсортирована по возрастанию, оставить ее без изменения. Иначе получить иную последовательность C++
C++ Если эти числа равны, заменить их на 0, если нет - меньшое заменить большим, а большое оставить без изменения
Каждую букву, стоящую после символа '.' непосредственно или отделенную символом ‘ ’ (пробел), преобразовать к C++
C++ Определить последнее вхождение символа “р” в строке и вывести строку, начиная с первого символа и до последнего “р” в строке
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
13052 / 7315 / 814
Регистрация: 27.09.2012
Сообщений: 18,052
Записей в блоге: 3
Завершенные тесты: 1
21.01.2013, 00:49     Если в строке нет символа +, то оставить строку без изменений, иначе каждую из цифр перед символом + заменять на * #2
как вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <cstring>
int main(){
    char str[13]="n23f6+123fd5";
    std::cout<<"Source: "<<str<<std::endl;
    for(char * p=str+strlen(str)-1;str<=p;--p){
        if(*p=='+'){
            for(;str<=p;--p)
                if(isdigit(*p))
                    *p='*';
            break;
        }
    }
    std::cout<<"Rezult: "<<str<<std::endl;
}
Название: Безымянный.jpg
Просмотров: 53

Размер: 9.7 Кб
Soull
18 / 4 / 0
Регистрация: 21.10.2012
Сообщений: 60
21.01.2013, 00:57  [ТС]     Если в строке нет символа +, то оставить строку без изменений, иначе каждую из цифр перед символом + заменять на * #3
спасибо огромное)))
ZaMaZaN4iK
Мой лучший друг-отладчик!
163 / 163 / 9
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
Завершенные тесты: 1
21.01.2013, 01:26     Если в строке нет символа +, то оставить строку без изменений, иначе каждую из цифр перед символом + заменять на * #4
Croessmah, а разве isdigit() не из <cctype> ?

Сейчас протестил, у меня и без cctype работает, и без cstring работает... Студия 2010
rangerx
1932 / 1541 / 141
Регистрация: 31.05.2009
Сообщений: 2,911
21.01.2013, 01:27     Если в строке нет символа +, то оставить строку без изменений, иначе каждую из цифр перед символом + заменять на * #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <cstring>
#include <cctype>
 
int main() {
 
    char s[13] = {0};
    std::cout << "input string: ";
    std::cin.getline(s, sizeof(s));
    
    char* end = std::strrchr(s, '+');
    
    if(end) {
        
        for(char* p = s; p != end; ++p)
            if(std::isdigit(*p)) *p = '*';
    }
    
    std::cout << "result: " << s << std::endl;
}
Soull
18 / 4 / 0
Регистрация: 21.10.2012
Сообщений: 60
21.01.2013, 01:28  [ТС]     Если в строке нет символа +, то оставить строку без изменений, иначе каждую из цифр перед символом + заменять на * #6
спасибо огромное)))
Croessmah
21.01.2013, 02:13
  #7

Не по теме:

Цитата Сообщение от ZaMaZaN4iK Посмотреть сообщение
Студия 2010
Приводить в пример студию как-то безобразно, имхо!

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.01.2013, 03:04     Если в строке нет символа +, то оставить строку без изменений, иначе каждую из цифр перед символом + заменять на *
Еще ссылки по теме:
Массив. Парные элементы массиве А удвоить, а нечетные оставить без изменений C++
В последовательности заменить все отрицательные члены на -1, положительные на 1, а нулевые оставить без изменений C++
Оставить первую половину текста без изменений, а вторую записать в обратном порядке C++
C++ Получить число, состоящее из суммы цифр, если оно четное - найти сумму двух первых цифр, иначе - разность
C++ Каждую цифру текста, которая находится перед первым символом "+", заменить на запятую

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

Или воспользуйтесь поиском по форуму:
rangerx
1932 / 1541 / 141
Регистрация: 31.05.2009
Сообщений: 2,911
21.01.2013, 03:04     Если в строке нет символа +, то оставить строку без изменений, иначе каждую из цифр перед символом + заменять на * #8
Цитата Сообщение от ZaMaZaN4iK Посмотреть сообщение
а разве isdigit() не из <cctype> ?
Сейчас протестил, у меня и без cctype работает, и без cstring работает... Студия 2010
isdigit есть в двух вариантах, одна лежит в cctype другая в locale. Другое дело, что эти заголовочные файлы могут быть включены внутри других используемых в данный момент заголовочных файлов, но при этом нет никакой гарантии, что при переносе кода на другой компилятор всё будет работать точно так же. Поэтому заголовочные файлы, функции из которых используются, рекомендуется всегда указывать явно.
Yandex
Объявления
21.01.2013, 03:04     Если в строке нет символа +, то оставить строку без изменений, иначе каждую из цифр перед символом + заменять на *
Ответ Создать тему
Опции темы

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