Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
kobrjatina
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 52
#1

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

02.11.2013, 22:43. Просмотров 1029. Ответов 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
Ответы с готовыми решениями:

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

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

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

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

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

8
kventin_zhuk
БНТУ ФИТР
215 / 155 / 41
Регистрация: 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
969 / 188 / 32
Регистрация: 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
Модератор
7210 / 5473 / 681
Регистрация: 14.02.2011
Сообщений: 18,513
30.11.2013, 15:58 #6
Цитата Сообщение от kobrjatina Посмотреть сообщение
text[256] = '+'
во первых сравнение это ==
во вторых ты пытаешься обратится к 257 ячейке которой нет
тебе нужно пройти по всей строке
C++
1
if (text[i] == '+')
в остальное не вникал
0
programina
2050 / 605 / 41
Регистрация: 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
Эксперт С++
5009 / 3069 / 270
Регистрация: 11.11.2009
Сообщений: 7,043
Завершенные тесты: 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
279 / 39 / 13
Регистрация: 11.10.2015
Сообщений: 405
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
18.03.2017, 18:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.03.2017, 18:58

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

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

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


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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