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

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

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

Author24 — интернет-сервис помощи студентам
Нужно найти в строке из 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
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.01.2012, 20:38
Ответы с готовыми решениями:

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

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

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

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

17
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,514
24.01.2012, 20:42 2
Цитата Сообщение от 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  [ТС] 3
C++
1
while ( m[i]!='\0') i++;
это разве не определяет длину строки??
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,514
24.01.2012, 20:45 4
если хочешь найти конец строки не зная длину
то можно написать так
C++
1
for (int k=0;m[k]!=0;k++){
не знаю поймешь ли что здесь написано
1
2554 / 1319 / 178
Регистрация: 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
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,514
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
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
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
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,514
24.01.2012, 20:58 8
Цитата Сообщение от 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 9
Цитата Сообщение от ValeryS Посмотреть сообщение
i - 1 не обязательно у строки есть лишний 0 элемент за пределы не выскочишь
Дело вкуса, зачем лишнея итерация?

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

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

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

Добавлено через 2 минуты
Цитата Сообщение от go Посмотреть сообщение
значит не бесконечный.
я же написал почти значит шибко большой
Цитата Сообщение от go Посмотреть сообщение
i, как unsigned,
не! если k объявить (лучше обе)
тогда будем крутится до 0
только нахрена нам этот тюнинг
0
24.01.2012, 21:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.01.2012, 21:38
Помогаю со студенческими работами здесь

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

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

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

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


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

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

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