Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Евгений123
0 / 0 / 0
Регистрация: 18.10.2012
Сообщений: 12
18.10.2012, 21:18     Преобразовать точки в троеточия #1
Дана строка символов. Преобразовать ее, заменив в ней каждую точку многоточием.

#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();


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

C++ Массив, заполненный 1 и 0. Найти путь, состоящий из нулей, от точки до точки.
Как преобразовать большое число в строку через stringstream и ограничить знаки после точки C++
Найти самый короткий путь от точки до точки в матрице C++
Как найти координаты точки на прямой удаленной от заданной точки на х C++
Задача (вывести длину кратчайшего пути от точки до точки.) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
18.10.2012, 21:23     Преобразовать точки в троеточия #2
Цитата Сообщение от Евгений123 Посмотреть сообщение
Почти работающий код, только при замене точки на троеточие он заменяет последующие символы
так вы не просто заменяйте, а перед этим на 2 позиции все символы сдвиньте вправо)
Петррр
 Аватар для Петррр
5915 / 3352 / 333
Регистрация: 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;
}
Евгений123
0 / 0 / 0
Регистрация: 18.10.2012
Сообщений: 12
18.10.2012, 21:26  [ТС]     Преобразовать точки в троеточия #4
А если не сложно, можете подсказать, как сдвинуть элементы в массиве, а то совсем из головы вылетело)
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 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;
}
Yandex
Объявления
18.10.2012, 21:37     Преобразовать точки в троеточия
Ответ Создать тему
Опции темы

Текущее время: 20:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru