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

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

Войти
Регистрация
Восстановить пароль
 
kobrjatina
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 52
#1

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

02.11.2013, 22:43. Просмотров 890. Ответов 8
Метки нет (Все метки)

Дан текст. Если в тексте нет символа +, то оставить текст без изменения, иначе каждую из цифр, предшествующую первому вхождению символа +, заменить символом –.

Вот код, но там есть ошибка в 10 строке
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <string>
using namespace std;
int main()
{ char text[256] = "dsakfs23423daf3 asdfa23sdf asdf7sdaf +asdfsadf sad68fas+67df";
  puts (text);
  char st1[256];
  for (int i = 0; i < strlen (text); i++)
      
      if (text[256] = '+')
      { strncpy (st1, text, strchr (text, '+'));
        for (int i = 0; i < strlen (st1); i++)
            if (st1[i] == isdigit (st1[i]))
                st1[i] = '-'; 
      }
 
      else if (text[256] != '+') puts (text);
 
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.11.2013, 22:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Если в тексте нет символа +, то оставить текст без изменения, иначе каждую из цифр, предшествующую первому вхождению символа +, заменить символом - (C++):

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

Каждую из малых латинских букв, предшествующих первому вхождению символа *, заменить на цифру 3 - C++
Если в тексте нет символа *, то оставить текст без изменений. Иначе каждую из малых латинских букв, предшествующих первому вхождению...

Если эти числа равны, заменить их на 0, если нет - меньшое заменить большим, а большое оставить без изменения - C++
Дано 2 целых числа, каждое из низ не больше 2*10^9 по модулю. Если эти числа равны, заменить их на 0, если нет - меньшое заменить большим,...

Определить, сколько символов ‘e’ предшествует первому вхождению символа ‘u’ - C++
определить, сколько символов ‘e’ предшествует первому вхождению символа ‘u’ ( либо сколько всего символов ‘e’ в этой последовательности,...

Если последовательность отсортирована по возрастанию, оставить ее без изменения. Иначе получить иную последовательность - C++
Дана последовательность действительных чисел X1,X2,X3,…,Xn (n&gt;2, заранее неизвестно). Если последовательность отсортирована по возрастанию,...

определить, сколько символов ‘e’ предшествует первому вхождению символа ‘u’ ( либо сколько всего символов ‘e’ в этой последовательности) - C++
определить, сколько символов ‘e’ предшествует первому вхождению символа ‘u’ ( либо сколько всего символов ‘e’ в этой последовательности,...

8
kventin_zhuk
БНТУ ФИТР
215 / 155 / 15
Регистрация: 26.12.2012
Сообщений: 382
02.11.2013, 22:44 #2
kobrjatina, Все сделали, еще пожелания будут?

Наработки ваши давайте

Проходите по строке - нашли + - проход в обратном направлении, функциеё isdigit проходите в обратном направлении, пока не найдете цифру. Нашли - меняем её на минус. + к этому контроль границ массивов в циклах.
0
kobrjatina
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 52
02.11.2013, 22:55  [ТС] #3
я никого не заставляю делать мне задачу, добрые и отзывчивые люди помогают мне добровольно
0
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
02.11.2013, 23:19 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <regex>
#include <string>
 
using namespace::std;
 
int main()
{
    string s="dsakfs23423daf3 asdfa23sdf asdfsdaf +asdfsadf sadfasdf";
    cout <<"befor s= "<<s<<endl;
    smatch sm;
    if(regex_search(s,sm,regex("\\+")))
    {
        string temp=sm.prefix().str();
        temp=regex_replace(temp,regex("\\d"),string("-"));
        s=temp+sm[0].str()+sm.suffix().str();
    }
    cout <<"after s= "<<s<<endl;
    
 
    return 0;
}
1
MrGluck
03.11.2013, 04:35
  #5

Не по теме:

Цитата Сообщение от kobrjatina Посмотреть сообщение
я никого не заставляю делать мне задачу, добрые и отзывчивые люди помогают мне добровольно
хорошие у вас понятия по жизни. Работать также собираетесь?

0
ValeryS
Модератор
6651 / 5060 / 470
Регистрация: 14.02.2011
Сообщений: 16,919
30.11.2013, 15:58 #6
Цитата Сообщение от kobrjatina Посмотреть сообщение
text[256] = '+'
во первых сравнение это ==
во вторых ты пытаешься обратится к 257 ячейке которой нет
тебе нужно пройти по всей строке
C++
1
if (text[i] == '+')
в остальное не вникал
0
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
30.11.2013, 16:06 #7
Как то так:
C++
#include <iostream>
#include <string.h>
using namespace std;
 
int main()
{
    int t = 0;
    char text[] = "dsakfs23423daf3 asdfa23sdf asdf7sdaf +asdfsadf sad68fas+67df";
    
    cout << text << endl;
        
    for (int i = 0; i < strlen(text); i++)
    {
        if(text[i] == '+') { t = i; break; }
    }
 
    for (int i = 0; i < t; i++)
    {
        switch(text[i])
        {
            case '0':
            case '1':
            case '2':
            case '3':
            case '4':
            case '5':
            case '6':
            case '7':
            case '8':
            case '9':
                text[i] = '-';
                break;
        }
    }
 
    cout << text << endl;
}
1
silent_1991
Эксперт С++
4984 / 3041 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
03.12.2013, 20:56 #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <string>
#include <algorithm>
#include <cctype>
 
int main()
{
    std::string text = "sdj2134asdd1d12f5+dasd2314+dsad+345fcf";
    auto plus = std::find(std::begin(text), std::end(text), '+');
 
    if (plus != std::end(text)) {
        std::replace_if(std::begin(text), plus, [](char ch) { return std::isdigit(ch) != 0; }, '-');
    }
 
    std::cout << text << std::endl;
 
    return 0;
}
http://ideone.com/gsSTGm
1
zarko97
277 / 37 / 0
Регистрация: 11.10.2015
Сообщений: 393
18.03.2017, 18:58 #9
C++
1
2
3
4
5
6
7
8
9
10
if (some.find('+') == std::string::npos) return;
    for (auto pos = std::find(some.begin(), some.end(), '+'), it = pos; it != some.end() && pos != some.end(); ++it)
    {
        if (*std::prev(it) == std::isdigit(*std::prev(it)))
        {
            *std::prev(it) = '-';
            pos = std::find(it, some.end(), '+');
            it = pos;
        }
    }
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.03.2017, 18:58
Привет! Вот еще темы с ответами:

Каждую букву, стоящую после символа '.' непосредственно или отделенную символом ‘ ’ (пробел), преобразовать к - C++
Каждую букву, стоящую после символа '.' непосредственно или отделенную символом ‘ ’ (пробел), преобразовать к верхнему регистру.

Заменить в каждой строке текста символы, отличные от символа, введенного с клавиатуры, символом «#» - C++
С помощью текстового редактора создать файл на диске, содержащий текст на английском языке. Создать новый файл, преобразовав текст...

Определить длину введенной строки L, и если длина L четная, то удаляются 3 первых, иначе 3 последних символа - C++
#include &quot;stdafx.h&quot; #include &quot;conio.h&quot; #include &quot;stdio.h&quot; #include &quot;string.h&quot; #include &quot;stdlib.h&quot; int _tmain(int argc,...

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


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

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

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