Форум программистов, компьютерный форум CyberForum.ru

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

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

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

24.01.2012, 20:38. Просмотров 1061. Ответов 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.01.2012, 20:38     Замена буквы в слове!
Посмотрите здесь:

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

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

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

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

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

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6543 / 5009 / 462
Регистрация: 14.02.2011
Сообщений: 16,656
24.01.2012, 20:42     Замена буквы в слове! #2
Цитата Сообщение от beliall Посмотреть сообщение
for (int k=1;k>=с;k++){
цикл то бесконечный(почти)

Цитата Сообщение от beliall Посмотреть сообщение
(int s=1;s>i;s++)
тоже самое
почему i равно 0
нумерация массивов с 0 начинается
beliall
0 / 0 / 0
Регистрация: 24.01.2012
Сообщений: 31
24.01.2012, 20:44  [ТС]     Замена буквы в слове! #3
C++
1
while ( m[i]!='\0') i++;
это разве не определяет длину строки??
ValeryS
Модератор
6543 / 5009 / 462
Регистрация: 14.02.2011
Сообщений: 16,656
24.01.2012, 20:45     Замена буквы в слове! #4
если хочешь найти конец строки не зная длину
то можно написать так
C++
1
for (int k=0;m[k]!=0;k++){
не знаю поймешь ли что здесь написано
soon
2539 / 1304 / 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;
}
ValeryS
Модератор
6543 / 5009 / 462
Регистрация: 14.02.2011
Сообщений: 16,656
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 менять будешь????
тем более у тебя не сравнение == а присваивание =
go
Эксперт C++
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 )
ValeryS
Модератор
6543 / 5009 / 462
Регистрация: 14.02.2011
Сообщений: 16,656
24.01.2012, 20:58     Замена буквы в слове! #8
Цитата Сообщение от go Посмотреть сообщение
for ( k = 0 ; k < i - 1 ; ++k )
i - 1 не обязательно у строки есть лишний 0 элемент за пределы не выскочишь
++k почему преинкремент а не пост ???

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

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

Добавлено через 37 секунд
Цитата Сообщение от ValeryS Посмотреть сообщение
а при i=0 будет крутится пока не зайдет в отрицательную область
А это почему?
ValeryS
Модератор
6543 / 5009 / 462
Регистрация: 14.02.2011
Сообщений: 16,656
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
и мы выходим из цикла
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;
}
вылезает ошибка ничего не выводит!!
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
24.01.2012, 21:10     Замена буквы в слове! #12
ValeryS, ну то что, выражение не верное, я согласен.
Я уже предложил правильный вариант.
soon
2539 / 1304 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
24.01.2012, 21:10     Замена буквы в слове! #13
beliall, пост #5.
Функция к C++ тоже подойдет.
ValeryS
Модератор
6543 / 5009 / 462
Регистрация: 14.02.2011
Сообщений: 16,656
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 менять будешь????
тем более у тебя не сравнение == а присваивание =
ты вообше читаешь что тебе пишут?
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;
}
ValeryS
Модератор
6543 / 5009 / 462
Регистрация: 14.02.2011
Сообщений: 16,656
24.01.2012, 21:30     Замена буквы в слове! #16
Цитата Сообщение от go Посмотреть сообщение
ValeryS, ну то что, выражение не верное, я согласен.
Я уже предложил правильный вариант.
я не спорил с твоим вариантом
я объяснял почему я написал
Цитата Сообщение от ValeryS Посмотреть сообщение
цикл то бесконечный(почти)
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
24.01.2012, 21:33     Замена буквы в слове! #17
Цитата Сообщение от ValeryS Посмотреть сообщение
я объяснял почему я написал
Сообщение от ValeryS
цикл то бесконечный(почти)
http://codepad.org/StrRLzBa
В тайм-аут не уходит, значит не бесконечный. Другое дело, если объявить i, как unsigned, как и нужно объявлять
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.01.2012, 21:38     Замена буквы в слове!
Еще ссылки по теме:

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

Изменить регистр первой буквы в слове - C++
Записать фамилию, имя и отчество. Вывести фамилию большими буквами с помощью strupr.

Удвоить все буквы во введенном слове - C++
Слово вводится с клавиатуры. Удвоить все буквы во введенном слове.

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

Оставить в слове первые вхождения каждой буквы - C++
Доброго время суток. Задача на языке C++. Дана последовательность слов. Напечатать все слова, предварительно преобразовав каждое из них...


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

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6543 / 5009 / 462
Регистрация: 14.02.2011
Сообщений: 16,656
24.01.2012, 21:38     Замена буквы в слове! #18
beliall,
нет ты действительно не смотришь
Цитата Сообщение от beliall Посмотреть сообщение
int s=1
почему со второй буквы то вывод????

Цитата Сообщение от beliall Посмотреть сообщение
k<=i
ты вылезешь за пределы массива

Добавлено через 2 минуты
Цитата Сообщение от go Посмотреть сообщение
значит не бесконечный.
я же написал почти значит шибко большой
Цитата Сообщение от go Посмотреть сообщение
i, как unsigned,
не! если k объявить (лучше обе)
тогда будем крутится до 0
только нахрена нам этот тюнинг
Yandex
Объявления
24.01.2012, 21:38     Замена буквы в слове!
Ответ Создать тему
Опции темы

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