0 / 0 / 1
Регистрация: 03.11.2014
Сообщений: 113
1

Замените все буквы "р" на сочетание "ку"

03.04.2015, 11:41. Показов 1674. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <stdio.h>
 
using namespace std;
 
int main()
{
  char line[256] = {0};
  gets(line);
  char *p = line;
  for ( ; *p; ++p)
    if (*p == 'р')
      *p = 'ку';
  cout << line;
  return 0;
}
Проблема в том что он заменяет только 1 символ, например вместо рука пишет уука. Помогите плиз
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.04.2015, 11:41
Ответы с готовыми решениями:

Замените в слове Х все буквы "а" на сочетание "ку", а сочетание "ку" на букву "б"
Написать программу, заменяющую в слове Х все буквы &quot;а&quot; на сочетание &quot;ку&quot;, а сочетание &quot;ку&quot; на букву...

28.преобразуйте текст так, чтобы только первые буквы каждого предложения были написаны с большой буквы. 29. замените все
28.преобразуйте текст так, чтобы только первые буквы каждого предложения были написаны с большой...

Замените в строке все появления буквы h на букву H
Помогите, пожалуйста, решить. Дана строка. Замените в этой строке все появления буквы h на букву...

Замените все согласные буквы в предложении символом *
Выполнить задание с помощью класса StringBuilder (все слова в предложениях разделены пробелами).

Замените в данной строке все буквы на малые
Используйте функцию поиска и среза строк для извлечения часть строки «DSPAM», затем замените в...

12
-17 / 10 / 5
Регистрация: 24.12.2014
Сообщений: 88
03.04.2015, 12:20 2
Нужен ещё один массив, и смещать результат на 1 символ: как вариант того что ты пытаешься сделать
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 <stdio.h>
 
using namespace std;
 
int main()
{
    char line[256] = {0};
    gets(line);
    char *p = line;
    const char from[1]={'р'};
    const char to[2]={'к','у'};
 
    if (*p==from[1]) {
        *p=to[1];
        *(p+1)=to[2];
    }
 
    cout << line;
    system("pause");
    return 0;
}
1
0 / 0 / 1
Регистрация: 03.11.2014
Сообщений: 113
04.04.2015, 09:54  [ТС] 3
Я не понял как сдвигать, подскажите плиз

Добавлено через 21 секунду
Как это именно делать
0
0 / 0 / 1
Регистрация: 03.11.2014
Сообщений: 113
04.04.2015, 10:04  [ТС] 4
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
27
#include <iostream.h>
#include <math.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
 
int main()
{
clrscr();
    char line[256] = {0};
    gets(line);
    char *s = line;
    char from[1]={'r'};
    char to[2]={'k','u'};
 
    for (; *s; ++s){
    if (*s==from[1]){
        *s=to[1];
        *(s+1)=to[2];
        }
    }
 
    cout << "Stroka posle zameni: " << line << endl;
 
    getch();
    return 0;
}
в чем проблема прошу помочь, только не используя библиотеку string
0
2443 / 1841 / 406
Регистрация: 15.12.2013
Сообщений: 8,239
04.04.2015, 10:11 5
А еще можно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
    #include <iostream>
    #include <string>
    #include <regex>
     
    int main ()
    {
    std::string str;
    std:getline (std::cin, str);
    std::cout<<str<<std::endl;
    str=std::regex_replace (str,std::regex("р"),"ку");
    std::cout<<str<<std::endl;
    return 0;
    }
1
0 / 0 / 1
Регистрация: 03.11.2014
Сообщений: 113
04.04.2015, 10:17  [ТС] 6
У меня turbo C++, там не принимает regex и string, препод блин упертый не дает на другом компиляторе писать(((
0
Модератор
Эксперт по электронике
8924 / 6691 / 920
Регистрация: 14.02.2011
Сообщений: 23,580
04.04.2015, 10:25 7
Цитата Сообщение от ChingizBat Посмотреть сообщение
char from[1]={'r'};
Цитата Сообщение от ChingizBat Посмотреть сообщение
if (*s==from[1])
ниче, что за границы вылазим?
1
0 / 0 / 1
Регистрация: 03.11.2014
Сообщений: 113
04.04.2015, 10:40  [ТС] 8
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
#include <iostream.h>
#include <math.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
 
int main()
{
clrscr();
 
    char *s = "ruka reka roma";
    cout << "Stroka: " << s << endl;
 
    for (int i=0; i<strlen(s); i++){
    if (s[i]=='r'){
        s[i]='k';
        s[i+1]='u   ';
        }
    }
 
    cout << "Stroka posle zameni: " << s << endl;
 
    getch();
    return 0;
}
додумался только до такого, но тут сдвига нет
0
Модератор
Эксперт по электронике
8924 / 6691 / 920
Регистрация: 14.02.2011
Сообщений: 23,580
04.04.2015, 10:55 9
Лучший ответ Сообщение было отмечено ChingizBat как решение

Решение

Цитата Сообщение от ChingizBat Посмотреть сообщение
додумался только до такого, но тут сдвига нет
и не будет
или создавай новую строку в которую копируй все значения
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
char str1[256];
char str2[256];
.........................
for(int i=0,j=0;i<=strlen(str);i++,j++)
{
  if(str1[i]=='r')
   {
    str2[j++]='k';
    str2[j]='u';
   }
   else
   {
   str2[j]=str1[i];
   }
 
}
или расширяй свою строку, для этого нужно написать функцию перемещения
1
Диссидент
Эксперт C
27708 / 17324 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
04.04.2015, 11:16 10
Цитата Сообщение от ValeryS Посмотреть сообщение
для этого нужно написать функцию перемещения
memmove
1
0 / 0 / 1
Регистрация: 03.11.2014
Сообщений: 113
04.04.2015, 11:28  [ТС] 11
Всем спасибо, догнал)
0
Модератор
Эксперт по электронике
8924 / 6691 / 920
Регистрация: 14.02.2011
Сообщений: 23,580
04.04.2015, 11:30 12
Цитата Сообщение от Байт Посмотреть сообщение
memmove
не уверен, проверять лень, но по моему, она портит массив источник если массивы пересекаются
она вроде начинает сначала, а в данном случае нужно с конца
но еще раз повторюсь, давно не работал, не уверен
0
Диссидент
Эксперт C
27708 / 17324 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
04.04.2015, 11:37 13
Цитата Сообщение от ValeryS Посмотреть сообщение
проверять лень
Именно memmove "умненькая", проверяет, с какого конца начинать. А memcpy - потупее, она с первого(нулевого) байта копирует. Зато чуток побыстрее
1
04.04.2015, 11:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.04.2015, 11:37
Помогаю со студенческими работами здесь

Замените в массиве все цифры на большие буквы
Дан массив из 10 элементов типа char. Замените в нем все цифры на большие буквы (например, ‘0’...

Заменить в символьной строке все буквы «а» на сочетание «на».
Заменить в символьной строке все буквы «а» на сочетание «на»....

Дана строка символов . Замените в строке все маленькие буквы на одноименные большие
дкч

Дан массив из 10 элементов типа char. Замените в нем все цифры на большие буквы
Дан массив из 10 элементов типа char. Замените в нем все цифры на большие буквы (например, ‘0’...

Строки. Посчитать, сколько раз входит сочетание, вставить пробел, вычеркнуть все буквы е
1) Дано слово, посчитать, сколько раз входит в него сочетание, скажем, le; 2) Нужно вставить в...

Составьте программу которая позволяет ввести строку S затем замените все буквы ''и'' в ведённой строке на ''e''
Составьте программу которая позволяет ввести строку S затем замените все буквы ''и'' в ведённой...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru