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

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

Войти
Регистрация
Восстановить пароль
 
Евгений123
0 / 0 / 0
Регистрация: 18.10.2012
Сообщений: 12
#1

Преобразовать точки в троеточия - C++

18.10.2012, 21:18. Просмотров 416. Ответов 4
Метки нет (Все метки)

Дана строка символов. Преобразовать ее, заменив в ней каждую точку многоточием.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>


void main ()
{int i;
char stroka [100];
printf ("vvedite stroku\n");
gets (stroka);


for (i=0; i < strlen(stroka); i++)
{if (stroka[i]=='.')
{stroka[i]='.';
stroka[i+1]='.';
stroka[i+2]='.';
i=i+2;
}

}
printf ("%s", stroka);

getch();


}
Почти работающий код, только при замене точки на троеточие он заменяет последующие символы
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.10.2012, 21:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Преобразовать точки в троеточия (C++):

Как преобразовать большое число в строку через stringstream и ограничить знаки после точки - C++
опять возникла проблема которая была недавно но с другим методом нужно преобразовать большое число типо double в строку через...

Во введенной строке заменить все запятые на точки, а точки - на восклицательные знаки - C++
Во введенной строке заменить все запятые на точки, а точки - на восклицательные знаки. Подсчитать количество сделанных замен.

Во введенной строке заменить все запятые на точки, а точки - на восклицательные знаки - C++
15. В введенной строке заменить все запятые на точки, а точки - на восклицательные знаки. Подсчитать количество таких замен. почему оно...

Вывести расстояние от заданной точки до точки пересечения диагоналей прямоугольников - C++
Прямоугольники заданы координатами их вершин. 1)Вывести расстояние от заданной точки до точки пересечения диагоналей. 2) Вывести...

Как найти координаты точки на прямой удаленной от заданной точки на х - C++
Добрый день! Помогите мне пожалуйста со следующей задачей. Дано 3 точки с координатами A(x1,y1), B(x2,y2), C(x3,y3) Нужно найти...

Массив, заполненный 1 и 0. Найти путь, состоящий из нулей, от точки до точки. - C++
Доброго времени суток всем! Вот такая задача, ничего не могу даже сообразить по ней, подкиньте идеи, пожалуйста (ну или код в C++ )

4
Thinker
Эксперт С++
4228 / 2202 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
18.10.2012, 21:23 #2
Цитата Сообщение от Евгений123 Посмотреть сообщение
Почти работающий код, только при замене точки на троеточие он заменяет последующие символы
так вы не просто заменяйте, а перед этим на 2 позиции все символы сдвиньте вправо)
0
Петррр
5972 / 3409 / 337
Регистрация: 28.10.2010
Сообщений: 5,926
18.10.2012, 21:26 #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <string>
 
std::string replace_to_three_dots(const std::string& str)
{
    std::string _str = str;
    for(int i = _str.size() - 1; i >= 0; --i)
        if (str[i] == '.')
            _str.insert(i, "..");
    return _str;
}
 
int main()
{
    std::string str;
    std::getline(std::cin, str);
    std::cout << replace_to_three_dots(str) << std::endl;
}
0
Евгений123
0 / 0 / 0
Регистрация: 18.10.2012
Сообщений: 12
18.10.2012, 21:26  [ТС] #4
А если не сложно, можете подсказать, как сдвинуть элементы в массиве, а то совсем из головы вылетело)
0
Thinker
Эксперт С++
4228 / 2202 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
18.10.2012, 21:37 #5
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
если максимально попроще, то можно так:
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
#include<iostream>
void Transform(char *s, char c)
{
   int i = 0, j, len = strlen(s);
   while(s[i])
   {
      if (s[i] == c)
      {
          for(j = len + 2; j > i; j--)
             s[j] = s[j - 2];
          len += 2;
          s[i + 1] = s[i + 2] = c;
          i += 3;
      }
      else i++;
   }
}
 
int main()
{
   char s[1024] = "123.abc.xyz";
   Transform(s, '.');
   std::cout << s;
   return 0;
}
3
18.10.2012, 21:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.10.2012, 21:37
Привет! Вот еще темы с ответами:

В символьной строке вместо каждой точки вставить три точки - C++
В символьной строке типа char, вводимой с клавиатуры вместо каждой найденной точки вставить три точки Желательно использовать только...

Найти точки пересечения прямых проходящих через заданные точки - C++
Всем привет! Прошу помощи в решении задачи: Дана система координат X:Y (по 25 точек в каждую сторону) В ней расположен ряд точек в...

Найти координаты самой низкой точки траектории и другой наивысшей точки подъема - C++
помогите решить пожуйста очень надо...не используя некакие циклы и ветвленее..они тока на алгоритмы линейные задачки 1.Заданы...

Дана точка A и множество B из N точек. Найти номер точки из множества B, наиболее удаленной от точки A - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;time.h&gt; #define B 100 using namespace std; void gen...


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

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

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