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

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

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

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; на &quot;ца&quot;. очень нужно Добавлено через 21...

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

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно"
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;,...

После каждой буквы "о" в слове вставить сочетание "ля"
После каждой буквы &quot;о&quot; в слове вставить сочетание &quot;ля&quot;

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
2431 / 1831 / 404
Регистрация: 15.12.2013
Сообщений: 8,164
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
Модератор
Эксперт по электронике
8756 / 6546 / 887
Регистрация: 14.02.2011
Сообщений: 22,962
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
Модератор
Эксперт по электронике
8756 / 6546 / 887
Регистрация: 14.02.2011
Сообщений: 22,962
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
27192 / 16949 / 3745
Регистрация: 24.12.2010
Сообщений: 38,132
04.04.2015, 11:16 10
Цитата Сообщение от ValeryS Посмотреть сообщение
для этого нужно написать функцию перемещения
memmove
1
0 / 0 / 1
Регистрация: 03.11.2014
Сообщений: 113
04.04.2015, 11:28  [ТС] 11
Всем спасибо, догнал)
0
Модератор
Эксперт по электронике
8756 / 6546 / 887
Регистрация: 14.02.2011
Сообщений: 22,962
04.04.2015, 11:30 12
Цитата Сообщение от Байт Посмотреть сообщение
memmove
не уверен, проверять лень, но по моему, она портит массив источник если массивы пересекаются
она вроде начинает сначала, а в данном случае нужно с конца
но еще раз повторюсь, давно не работал, не уверен
0
Диссидент
Эксперт C
27192 / 16949 / 3745
Регистрация: 24.12.2010
Сообщений: 38,132
04.04.2015, 11:37 13
Цитата Сообщение от ValeryS Посмотреть сообщение
проверять лень
Именно memmove "умненькая", проверяет, с какого конца начинать. А memcpy - потупее, она с первого(нулевого) байта копирует. Зато чуток побыстрее
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.04.2015, 11:37
Помогаю со студенческими работами здесь

Замените буквы "а" и "о" в слове на "А" и "О".
Замените буквы &quot;а&quot; и &quot;о&quot; в слове на &quot;А&quot; и &quot;О&quot;.

Ввести символьную строку и заменить все буквы "а" на буквы "б" и наоборот, как заглавные, так и строчные.
1. Ввести символьную строку и заменить все буквы &quot;а&quot; на буквы &quot;б&quot; и наоборот, как заглавные, так и...

В текстовом файле заменить все лова начинающиеся с буквы "а" на первое место, которое начинается с буквы "с"
ЗАВТРА ЭКЗАМЕН И НЕ РЕШИЛА ЭТУ ЗАДАЧУ! НЕ ЗНАЮ КАК! ели знаете как ее решить-решите, очень надо! ...

После каждой буквы "о" в слове вставьте сочетание "ля
После каждой буквы &quot;о&quot; в слове вставьте сочетание &quot;ля&quot;.

Для каждой строки найти слова, которые не имеют ни одного из букв: "l", "k", "r", "s" i "j"
Задано символьные строки. Строка состоит из нескольких слов (наборов символов), которые разделяются...

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование)
Разработать программу с использованием наследования классов, реализующую классы: − воин;...


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

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

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