С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Никитах
0 / 0 / 0
Регистрация: 21.02.2013
Сообщений: 10
#1

Укажите ошибку! - C++

29.03.2013, 19:04. Просмотров 346. Ответов 3
Метки нет (Все метки)

В строке удвоить все символы ‘&’. Под вставкой символа n в строку после к-го элемента понимается смещение всех элементов, начиная с (к+1)-го вправо на 1 позицию и присваивание (к+1)-му элементу строки значения n.

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
#include <iostream>
#include <string>
 
using namespace std;
 
int main()
{
string s;
cout << "Vvedite stroku:"; cin >> s;
int n=s.size();
for (int i=0;i<n;i=n+1)
{
n=s.size();
string sti(s,i,1);
if (sti=="&")
{
 
string t(s,0,i);
string w(s,i,n-1);
s=t+"&"+w;
i=i+1;
 
}
}
cout << s << endl;
}

Что надо подправить чтобы & удваивался всегда при любом способе его ввода?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.03.2013, 19:04
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Укажите ошибку! (C++):

Укажите на ошибку - C++
Подскажите ошибку пожалуйста #include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; void main() ...

Укажите на ошибку - C++
Привет, есть проект, в нем был только один файл core.cpp в нем было и объявления функций и их описания, короче говоря все было в одном...

Укажите на ошибку - C++
Проблема с enum. Пишет что, нужно что-то перед enum. Поясните пожалуйста #include &lt;iostream&gt; using namespace std; int main() ...

укажите на ошибку в листинге - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;iomanip&gt; using namespace System; void main( ) { cout &lt;&lt; &quot;I love&quot;; ...

Укажите пожалуйста ошибку(и) - C++
#include &lt;iostream&gt; using namespace std; struct box { char maker; float height; float width; float length; float...

Укажите ошибку пожалуйста - C++
№ 3 вариант 8 #include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; int main() { const float Eps=1E-4; int...

3
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
29.03.2013, 22:51 #2
Никитах, вот вам мой вариант, мне кажется так будет лучше и понятней

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
33
34
35
36
37
38
include <iostream>
#include <algorithm>
#include <string>               
using namespace std;
 
//предикат для нахождения искомого символа
bool alpha(char elem)
{
    //возвращаем true если символ найден
    return elem == '&';
}
 
int main()
{
    char symbol = '&'; 
    string str("Hell&o w&orl&d");
    str.reserve(str.size() * 2);            //т.к. работаем с итераторами, резервируем 
                                            //память, чтобы избежать перереспределения
                                            //при вставке дубликатов
 
    //итератор
    string::iterator pos = str.begin();        
 
    //идем до конца строки и ищем
    while((pos = find_if(pos, str.end(), alpha)) != str.end()) 
    {
        //вставляем дубликат 
        str.insert(++pos, symbol);
        //переходим на новый символ
        ++pos;
    }
    
    //выводим результат
    cout << str << endl;
 
    cout << "\n\n";
    return 0;
}
Добавлено через 15 минут
Никитах, а вот твой вариант

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <string>               
using namespace std;
 
int main()
{
    string s("Hell&o w&orl&d");
 
    for(unsigned i = 0; i < s.size(); ++i)
    {
        if(s[i] == '&')
        {
            string tmp(s, i, s.size() - i);     //промежуточная строки
            string tmp1(s, 0, i + 1);
            tmp1 += tmp;
            s = tmp1;
            ++i;
        }
    }
 
    cout << s << endl;
}
1
Никитах
0 / 0 / 0
Регистрация: 21.02.2013
Сообщений: 10
29.03.2013, 23:00  [ТС] #3
Но мне нужно чтобы я сам вводил любое слово или предложение из консоли а не одно прописанное в программе что тогда стоит поменять в моем варианте?
0
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
29.03.2013, 23:20 #4
Никитах,

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
#include <iostream>
#include <string>               
using namespace std;
 
int main()
{
    string s;
    cout << "Enter the string: ";
        getline(cin, s, '\n');
 
    for(unsigned i = 0; i < s.size(); ++i)
    {
        if(s[i] == '&')
        {
            string tmp(s, i, s.size() - i);     //промежуточная строки
            string tmp1(s, 0, i + 1);
            tmp1 += tmp;
            s = tmp1;
            ++i;
        }
    }
 
    cout << s << endl;
}
1
29.03.2013, 23:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.03.2013, 23:20
Привет! Вот еще темы с ответами:

Задачка по C++! Укажите пожалуйста на ошибку! - C++
Набросал упрощенный вариантик программы. Пытаюсь в конструкторе zveri присвоить значение переменной home из функии другого класс. Где...

Укажите на ошибку или исправте!!! - C++
Здраствуйте!! написал консольную программу которая захватывает написанную строку, потом проверяет её на наличие Больших и маленьких букв!!!...

Вылетает программа, укажите ошибку - C++
Программа вылетает. Помогите пожалуйста. Условие программы: В программе используется класс good_time и перегрузка оператора...

Калькулятор Z-1. Укажите на ошибку в программе к задаче - C++
Уважаемые форумчане, укажите пожалуйста на ошибку в программе. Пишу программу к задаче, валится на 10 тесте (Wrong Answer)....


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

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

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