Другие языки программирования и технологии

Нужно на с++ написать программу по заданию:даны две строки, содержащие не более 100 символов. Строки состоят из слов, р

Строки состоят из слов, разделенных пробелами. Распечатать каждую строку, заменив каждое слово, начинающееся с заданной буквы на заданное слово.
#include<iostream>
#include<conio.h>
#include<string>
using namespace std;
int main()
{
int j,k,b;
string s,t,r;
char c;
cout << "Введите 1-ю строку: "; getline(cin,s);
cout << "Введите 2-ю строку: "; getline(cin,t);
cout << "Введите букву: "; c=getch(); cout << c << endl;
cout << "Введите слово: "; getline(cin,r);
if(s[k=0]==c) k=1,b=0;
for(j=1;j-s.length();j++)
{
if(s[j]==' '&&k) s.replace(b,j-b,r),k=0,j+=r.length()-j+b;
if(s[j]==c&&s[j-1]==' ') k=1,b=j;
}
if(k) s.replace(b,j-b,r);

if(t[k=0]==c) k=1,b=0;
for(j=1;j-t.length();j++)
{
if(t[j]==' '&&k) t.replace(b,j-b,r),k=0,j+=r.length()-j+b;
if(t[j]==c&&t[j-1]==' ') k=1,b=j;
}
if(k) t.replace(b,j-b,r);
cout << s << endl << t << endl;
return 0;
}
BK
Bakht Kashenov
76 473
Лучший ответ
Ну если только за деньги.
А в чем собственно проблема?
Заводим массив указателей на символы (в данном случае из двух элементов) . Туда заносим слова.
Выводим слова на печать по следующему алгоритму (по сути у нас есть переменная счетчик, последовательно перебирающая элементы массива) :
0) Для первой строки:
1) пропускаем пробелы (просто увеличиваем переменную счетчик, ничего больше не делая) . Если видим НУЛЬ-символ - переходим к 4 шагу.
2) как дошли до первого символа не-пробела проверяем, явл. ли этот символ заданой буквой.
Если нет
2.1)выводим на печать символы пока не встретим пробел (или НУЛЬ-символ) ;
Если да
2.2)печатаем слово-замену, пропускаем все символы пока не встретим пробел (или НУЛЬ-символ) ;
3) Повторяем шаги 1-2
4) Повторяем шаги 1-3 для второй строки. Если видим НУЛЬ-символ - завершаем алгоритм

Все делается через вложенный цикл, внутри циклов проверяете условия.

Похожие вопросы