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

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

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

Замена буквы в слове! - C++

24.01.2012, 20:38. Просмотров 1223. Ответов 17
Метки нет (Все метки)

Нужно найти в строке из 19 символов найти букву 'o' и если после нее стоит буква 's' , то заменить на 'a'! Не могу понять как сделать(
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# include<iostream>
using namespace std;
int main()
{
 char m[]="oshtelndywsbflhtwos";
 int i=0 ;
 while ( m[i]!='\0') i++;
 for (int k=1;k>=i;k++){
     if (m[k]='o')
         if (m[k+1]='s')
             m[k+1]='a';
 }
 for (int s=1;s>i;s++)
     cout << m[s];
 
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.01.2012, 20:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Замена буквы в слове! (C++):

Строки. В каждом чётном по порядку слове удалить все нечётные буквы, а в каждом нечётном слове удалить все чётные буквы. - C++
8.4.1. Помогите, пожалуйста, решить задачу в С++. Дана строка символов, состоящая из русских слов, разделённых пробелами. В...

Сделать маленькими все буквы в тех словах, в которых нет ни одной буквы, встречающейся в последнем слове строки. - C++
Помогите разобраться с задачей по практике, что только не пробовал, программа упорно отказывается работать. Алгоритм достаточно прост и...

Дано слово. Удалить из него все повторяющиеся буквы, оставив их первые вхождения, то есть в слове должны остаться только различные буквы. - C++
Дано слово. Удалить из него все повторяющиеся буквы, оставив их первые вхождения, то есть в слове должны остаться только различные буквы....

Замена букв в слове - C++
Всем привет. Уважаемые программисты, помогите плиз решить простую задачку... Суть задачи: Дан текст. Нужна прога которая ищет в нем...

Замена одинаковых символов в слове - C++
Ввести фразу. Все последовательности одинаковых символов заменить на выражения N(C). Где N – количество последовательных одинаковых...

Различные буквы в слове. - C++
Дано слово, определить, сколько различных букв в нем.

17
ValeryS
Модератор
6707 / 5116 / 482
Регистрация: 14.02.2011
Сообщений: 17,188
24.01.2012, 20:42 #2
Цитата Сообщение от beliall Посмотреть сообщение
for (int k=1;k>=с;k++){
цикл то бесконечный(почти)

Цитата Сообщение от beliall Посмотреть сообщение
(int s=1;s>i;s++)
тоже самое
почему i равно 0
нумерация массивов с 0 начинается
1
beliall
0 / 0 / 0
Регистрация: 24.01.2012
Сообщений: 31
24.01.2012, 20:44  [ТС] #3
C++
1
while ( m[i]!='\0') i++;
это разве не определяет длину строки??
0
ValeryS
Модератор
6707 / 5116 / 482
Регистрация: 14.02.2011
Сообщений: 17,188
24.01.2012, 20:45 #4
если хочешь найти конец строки не зная длину
то можно написать так
C++
1
for (int k=0;m[k]!=0;k++){
не знаю поймешь ли что здесь написано
1
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
24.01.2012, 20:49 #5
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
 
void func(char* str)
{
    char* pos;
    if(*str == '\0')
        return;
    for(pos = str; *(pos + 1) != '\0'; ++pos)
        if((*pos == 'o') && (*(pos + 1) == 's'))
            *pos = 'a';
}
 
int main()
{
    char m [] = "oshtelndywsbflhtwos";
    func(m);
    printf("%s\n", m);
    return 0;
}
1
ValeryS
Модератор
6707 / 5116 / 482
Регистрация: 14.02.2011
Сообщений: 17,188
24.01.2012, 20:52 #6
Цитата Сообщение от beliall Посмотреть сообщение
while ( m[i]!='\0') i++;
это разве не определяет длину строки??
пардон не заметил
тогда цикл никогда не выполнится
i например равно 10
тогда
Цитата Сообщение от beliall Посмотреть сообщение
for (int k=1;k>=i;k++)
1>=10 ложь выход из цикла
пиши так
C++
1
for (int k=0;k<i;k++)
Добавлено через 2 минуты
Цитата Сообщение от beliall Посмотреть сообщение
if (m[k]='o')
if (m[k+1]='s')
m[k+1]='a';
s менять будешь????
тем более у тебя не сравнение == а присваивание =
1
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
24.01.2012, 20:53 #7
Цитата Сообщение от beliall Посмотреть сообщение
это разве не определяет длину строки??
Да, определяет
Цитата Сообщение от ValeryS Посмотреть сообщение
цикл то бесконечный(почти)
Почему?

Цитата Сообщение от beliall Посмотреть сообщение
for (int k=1;k>=i;k++){
Скорее так
C
1
for ( k = 0 ; k < i - 1 ; ++k )
1
ValeryS
Модератор
6707 / 5116 / 482
Регистрация: 14.02.2011
Сообщений: 17,188
24.01.2012, 20:58 #8
Цитата Сообщение от go Посмотреть сообщение
for ( k = 0 ; k < i - 1 ; ++k )
i - 1 не обязательно у строки есть лишний 0 элемент за пределы не выскочишь
++k почему преинкремент а не пост ???

Добавлено через 1 минуту
Цитата Сообщение от go Посмотреть сообщение
Почему?
ответил уже не заметил поиска длины а при i=0 будет крутится пока не зайдет в отрицательную область
1
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
24.01.2012, 20:59 #9
Цитата Сообщение от ValeryS Посмотреть сообщение
i - 1 не обязательно у строки есть лишний 0 элемент за пределы не выскочишь
Дело вкуса, зачем лишнея итерация?

Цитата Сообщение от ValeryS Посмотреть сообщение
++k почему преинкремент а не пост ???
Дело вкуса, а вообще быстрее работает.

Добавлено через 37 секунд
Цитата Сообщение от ValeryS Посмотреть сообщение
а при i=0 будет крутится пока не зайдет в отрицательную область
А это почему?
1
ValeryS
Модератор
6707 / 5116 / 482
Регистрация: 14.02.2011
Сообщений: 17,188
24.01.2012, 21:05 #10
Цитата Сообщение от go Посмотреть сообщение
А это почему?
Цитата Сообщение от beliall Посмотреть сообщение
for (int k=1;k>=i;k++){
при i=0
C
1
for (int k=1;k>=0;k++)
цикл крутится пока k не станет отрицательным
это 2147483647 итераций
не следующей итерации k=-2147483648
и мы выходим из цикла
1
beliall
0 / 0 / 0
Регистрация: 24.01.2012
Сообщений: 31
24.01.2012, 21:07  [ТС] #11
Сделал вот так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# include<iostream>
using namespace std;
int main()
{
 char m[]="oshtelndywsbflhtwos";
 int i=0;
 while ( m[i]!='\0') i++;
for (int k=1;k<=i;k++){
     if (m[k]='o')
         if (m[k+1]='s')
             m[k+1]='a';
 }
 for (int s=1;s>i;s++)
     cout << m[s];
 
    return 0;
}
вылезает ошибка ничего не выводит!!
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
24.01.2012, 21:10 #12
ValeryS, ну то что, выражение не верное, я согласен.
Я уже предложил правильный вариант.
1
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
24.01.2012, 21:10 #13
beliall, пост #5.
Функция к C++ тоже подойдет.
1
ValeryS
Модератор
6707 / 5116 / 482
Регистрация: 14.02.2011
Сообщений: 17,188
24.01.2012, 21:13 #14
Цитата Сообщение от beliall Посмотреть сообщение
вылезает ошибка ничего не выводит!!
Цитата Сообщение от beliall Посмотреть сообщение
for (int s=1;s>i;s++)
cout << m[s];
как думаешь будет выводить???
один цикл поправил другой нет
причем как поправил то
почему присвоение с 1
со второй буквы пойдешь

Цитата Сообщение от beliall Посмотреть сообщение
k<=i
при такой записи за границы вылезешь
тебе уже написали
Цитата Сообщение от ValeryS Посмотреть сообщение
1 for (int k=0;k<i;k++)
Цитата Сообщение от go Посмотреть сообщение
1 for ( k = 0 ; k < i - 1 ; ++k )
и вот это

Цитата Сообщение от ValeryS Посмотреть сообщение
Добавлено через 2 минуты
C++
1
2
3
if (m[k]='o')
 if (m[k+1]='s')
 m[k+1]='a';
s менять будешь????
тем более у тебя не сравнение == а присваивание =
ты вообше читаешь что тебе пишут?
1
beliall
0 / 0 / 0
Регистрация: 24.01.2012
Сообщений: 31
24.01.2012, 21:26  [ТС] #15
Все получилось! Спасибо! окончательный вариант!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# include<iostream>
using namespace std;
int main()
{
 char m[]="oshtelndywsbflhtwos";
 int i=0;
 while ( m[i]!='\0') i++;
for (int k=0;k<=i;k++){
     if (m[k]=='o')
         if (m[k+1]=='s')
             m[k+1]='a';
 }
 for (int s=1;s<i;s++)
     cout << m[s];
 
    return 0;
}
0
24.01.2012, 21:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.01.2012, 21:26
Привет! Вот еще темы с ответами:

Поменять местами буквы в слове - C++
Дано слово. Поменять местами его вторую и пятую буквы. С++

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

Удалить повторяющиеся буквы в слове - C++
Удалить повторяющиеся буквы в слове. Кто может помочь?

Найти одинаковые буквы в слове - C++
В слове имеются только две одинаковых буквы. Найти их


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

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

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