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

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

02.11.2013, 22:43. Просмотров 3219. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.11.2013, 22:43
Ответы с готовыми решениями:

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

Дан текст. Если в тексте нет символа *, то оставить этот текст без изменения, иначе каждую из малую букву, перед первым вхождением *, заменить на 3
Задача 3 Программирование алгоритмов обработки текстовой Дан текст. Если в тексте нет символа *,...

Дан текст. Если в тексте нет символа *, то оставить этот текст без изменения, иначе каждую из малых латинских
Дан текст. Если в тексте нет символа *, то оставить этот текст без изменения, иначе каждую из малых...

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

__________________
Помогаю в написании курсовых работ и дипломов здесь.
Записывайтесь на профессиональные курсы C++ разработчиков
8
БНТУ ФИТР
215 / 155 / 42
Регистрация: 26.12.2012
Сообщений: 382
02.11.2013, 22:44 2
kobrjatina, Все сделали, еще пожелания будут?

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

Проходите по строке - нашли + - проход в обратном направлении, функциеё isdigit проходите в обратном направлении, пока не найдете цифру. Нашли - меняем её на минус. + к этому контроль границ массивов в циклах.
0
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 52
02.11.2013, 22:55  [ТС] 3
я никого не заставляю делать мне задачу, добрые и отзывчивые люди помогают мне добровольно
0
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,039
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
Модератор
Эксперт по электронике
8370 / 6215 / 835
Регистрация: 14.02.2011
Сообщений: 21,582
30.11.2013, 15:58 6
Цитата Сообщение от kobrjatina Посмотреть сообщение
text[256] = '+'
во первых сравнение это ==
во вторых ты пытаешься обратится к 257 ячейке которой нет
тебе нужно пройти по всей строке
C++
1
if (text[i] == '+')
в остальное не вникал
0
2061 / 617 / 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
Эксперт С++
5042 / 3103 / 271
Регистрация: 11.11.2009
Сообщений: 7,047
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
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.03.2017, 18:58

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь или здесь.

Если в тексте нет символа *, то оставить текст без изменения
Есть текст, заканчивающийся точкой. Если в тексте нет символа *, то оставить этот текст без...

Если в тексте нет символа *, то оставить текст без изменения
1 Дан текст. а) Если в тексте нет символа *, то оставить этот текст без изменения, иначе каждую из...

Если в тексте нет символа *, то оставить текст без изменения
Есть текст, заканчивающийся точкой. Если в тексте нет символа *, то оставить этот текст без...

Преобразовать данный текст по следующему правилу: если нет символа «*», то оставить текст без изменений, иначе вставить перед и после каждого символа
Преобразовать данный текст по следующему правилу: если нет символа «*», то оставить текст без...


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

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

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