Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.70/40: Рейтинг темы: голосов - 40, средняя оценка - 4.70
0 / 0 / 0
Регистрация: 24.01.2012
Сообщений: 31

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

24.01.2012, 20:38. Показов 8591. Ответов 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
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.01.2012, 20:38
Ответы с готовыми решениями:

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

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

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

17
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
24.01.2012, 20:42
Цитата Сообщение от beliall Посмотреть сообщение
for (int k=1;k>=с;k++){
цикл то бесконечный(почти)

Цитата Сообщение от beliall Посмотреть сообщение
(int s=1;s>i;s++)
тоже самое
почему i равно 0
нумерация массивов с 0 начинается
1
0 / 0 / 0
Регистрация: 24.01.2012
Сообщений: 31
24.01.2012, 20:44  [ТС]
C++
1
while ( m[i]!='\0') i++;
это разве не определяет длину строки??
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
24.01.2012, 20:45
если хочешь найти конец строки не зная длину
то можно написать так
C++
1
for (int k=0;m[k]!=0;k++){
не знаю поймешь ли что здесь написано
1
 Аватар для soon
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
24.01.2012, 20:49
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
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
24.01.2012, 20:52
Цитата Сообщение от 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
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
24.01.2012, 20:53
Цитата Сообщение от beliall Посмотреть сообщение
это разве не определяет длину строки??
Да, определяет
Цитата Сообщение от ValeryS Посмотреть сообщение
цикл то бесконечный(почти)
Почему?

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

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

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

Добавлено через 37 секунд
Цитата Сообщение от ValeryS Посмотреть сообщение
а при i=0 будет крутится пока не зайдет в отрицательную область
А это почему?
1
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
24.01.2012, 21:05
Цитата Сообщение от 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
0 / 0 / 0
Регистрация: 24.01.2012
Сообщений: 31
24.01.2012, 21:07  [ТС]
Сделал вот так
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
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
24.01.2012, 21:10
ValeryS, ну то что, выражение не верное, я согласен.
Я уже предложил правильный вариант.
1
 Аватар для soon
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
24.01.2012, 21:10
beliall, пост #5.
Функция к C++ тоже подойдет.
1
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
24.01.2012, 21:13
Цитата Сообщение от 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
0 / 0 / 0
Регистрация: 24.01.2012
Сообщений: 31
24.01.2012, 21:26  [ТС]
Все получилось! Спасибо! окончательный вариант!
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
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
24.01.2012, 21:30
Цитата Сообщение от go Посмотреть сообщение
ValeryS, ну то что, выражение не верное, я согласен.
Я уже предложил правильный вариант.
я не спорил с твоим вариантом
я объяснял почему я написал
Цитата Сообщение от ValeryS Посмотреть сообщение
цикл то бесконечный(почти)
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
24.01.2012, 21:33
Цитата Сообщение от ValeryS Посмотреть сообщение
я объяснял почему я написал
Сообщение от ValeryS
цикл то бесконечный(почти)
http://codepad.org/StrRLzBa
В тайм-аут не уходит, значит не бесконечный. Другое дело, если объявить i, как unsigned, как и нужно объявлять
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
24.01.2012, 21:38
beliall,
нет ты действительно не смотришь
Цитата Сообщение от beliall Посмотреть сообщение
int s=1
почему со второй буквы то вывод????

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

Добавлено через 2 минуты
Цитата Сообщение от go Посмотреть сообщение
значит не бесконечный.
я же написал почти значит шибко большой
Цитата Сообщение от go Посмотреть сообщение
i, как unsigned,
не! если k объявить (лучше обе)
тогда будем крутится до 0
только нахрена нам этот тюнинг
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.01.2012, 21:38
Помогаю со студенческими работами здесь

Замена букв в слове
Нужна прога меняющая согласные буквы на гласные. Пример Дано:BDAARARBKAA Должно вывести:ABRAKADABRA Есть идеи?

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru