Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
q1q1
0 / 0 / 0
Регистрация: 17.10.2010
Сообщений: 7
1

В строках текста, оканчивающихся на "*", заменить все "b" на "с"

17.10.2010, 16:44. Просмотров 1006. Ответов 8
Метки нет (Все метки)

В строках текста, Оканчивающихся на "*", заменить все "b" на "с".
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <conio.h>
     main()
{
    char q[80];
    int i;
printf("\n Vvedite stroky \n");
 scanf("%s",q);
 clrscr();
 i=0;
 while (q[i] != '\0') {
           if(q[i]=='b')
    q[i]='c';
    i++;
}
printf("resault:%s",q);
return(0);
}
буквы меняю, а как сделать, чтоб меняло в определнной строке, оканчивающейся на "*".
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2010, 16:44
Ответы с готовыми решениями:

Создать запись "Двигатель", которая содержит элементы "Название", "Мощность", "Скорость", "Цена"
Создать запись &quot;Двигатель&quot;, которая содержит элементы &quot;Название&quot;, &quot;Мощность&quot;, &quot;Скорость&quot;,...

"Перевернуть" в строке все слова (Например: "Жили были" в "илиЖ илыб")
&quot;Перевернуть&quot; в строке все слова. (Например: &quot;Жили были дед и баба&quot; - &quot;илиЖ илиб дед и абаб&quot;)

В строке заменить последовательность слов "один", "два", "три"
Помогите,плз) В строке заменить последовательность слов &quot;один&quot;, &quot;два&quot;, &quot;три&quot; на &quot;1-2-3&quot;

Ввести структуру "историческое событие" с полями "число", "месяц", "год", "событие"
Ввести структуру ИСТОРИЧЕСКОЕ СОБЫТИЕ с полями ЧИСЛО, МЕСЯЦ, ГОД, СОБЫТИЕ. Составить и...

Из исходного текста сформировать новый файл, в котором знаки + и – заменить словами "плюс" и "минус"
Суть задачи состоит вот в чем - Ввести с клавиатуры или из файла текст содержащий знаки + и -. Из...

8
TheMachinist
244 / 176 / 47
Регистрация: 14.06.2010
Сообщений: 422
17.10.2010, 17:15 2
C
1
2
3
4
5
6
7
8
9
#include <string.h>  
 
if(q[strlen(q)-1] == '*'){
 while (q[i] != '\0') {
           if(q[i]=='b')
        q[i]='c';
        i++;
}
 }
1
q1q1
0 / 0 / 0
Регистрация: 17.10.2010
Сообщений: 7
17.10.2010, 17:22  [ТС] 3
клев) спасиб, а еще вопросик, как сделать чтоб в нескольких строках работать, а не в одной тольк
0
TheMachinist
244 / 176 / 47
Регистрация: 14.06.2010
Сообщений: 422
17.10.2010, 17:34 4
Вместо scanf используй gets(q) и puts(q)

а что в таком случае со звездочками делать надо подумать
0
17.10.2010, 17:34
q1q1
0 / 0 / 0
Регистрация: 17.10.2010
Сообщений: 7
17.10.2010, 17:56  [ТС] 5
еще... например если вводим baran baran baran* печатает тоже самое, а если baranbaranbaran* заменяет, пробелы не учитывает чтот
0
TheMachinist
244 / 176 / 47
Регистрация: 14.06.2010
Сообщений: 422
17.10.2010, 19:20 6
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
28
29
30
31
32
#include <stdio.h>
#include <conio.h>
#include <string>
 
       int  main()
{
        char q[80];
        int i;
        char * pch, *pch2; // указатели на символы в нашей строке
printf("\n Vvedite stroky \n");
 gets(q);
 
pch = strtok(q," "); // указатель1 указывает на первое слово строки(то что до первого пробела)
 while(pch != NULL) // зацикливаем это дело пока строка не кончится(на каждом проходе цикла получаем слово)
 {
     pch2 = strchr(pch,'*'); // указатель2 ищет в слове звездочку
     if(pch2 != NULL) // если находит то ....
     {
         pch2 = strchr(pch,'b'); // этот же указатель в этом же слове ищет букву 'b'
        while(pch2 != NULL) // зацикливаем поиск буквы 'b' в слове(на случай что 'b' может быть не одна)
        {
            pch2 = strchr(pch2+1,'b'); // найдя хоть одну ищем дальше ,до конца слова
            if(pch2 != NULL) *pch2 = 'c'; // если находим - заменяем на 'c'
        }
     } // end if
     printf("%s ",pch); // выводим слово на экран
     pch = strtok(NULL," "); // если не конец строки - указатель1 переходит к следующему слову
} // end while
 
_getch();
return(0);
}
1
q1q1
0 / 0 / 0
Регистрация: 17.10.2010
Сообщений: 7
17.10.2010, 21:35  [ТС] 7
эммм...зацикливаем поиск буквы 'b' в слове... над же в строке...
при запуске, не меняет буквы, тупо повторяет напечатанное... странн
0
TheMachinist
244 / 176 / 47
Регистрация: 14.06.2010
Сообщений: 422
17.10.2010, 21:49 8
Вообще то меняет буквы только в тех словах, где есть "*", или которое заканчивается звездочкой
blablabla blablabla* blabla blabla*

во втором и четвертом словах b поменяет на c
0
q1q1
0 / 0 / 0
Регистрация: 17.10.2010
Сообщений: 7
18.10.2010, 18:29  [ТС] 9
если встретилась одна буква 'b", она не поменяется, только если 2 или больше, + надо чтоб во всей строке где в конце стоит * менять буквы

Добавлено через 20 часов 28 минут
мыслей нет?
0
18.10.2010, 18:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.10.2010, 18:29

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

Подсчитать общее количество вхождений в строку символов "А", "a", "B" и "b"
#include &lt;stdio.h&gt; #include &lt;string.h&gt; #include &lt;conio.h&gt; main() { int i; int k; ...

Заменить в строке все буквы "О" на "Ъ", а буквы "Е" - на случайные символы
Помогите плз с программой на Си: Дана символьная строка. Заменить в ней все буквы &quot;О&quot; на &quot;Ъ&quot;, а...


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

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

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