Задача

Firiat

Well-known member
19.10.2010
48
0
#1
Вот условие задачи : напечать строку вместе с точкой и вывести эту же строку только вместо точки должно стоять троеточие . только не получается .

Вот код программы :

#include <iostream>
#include <string.h>
#include <conio.h>
#include <stdio.h>
using namespace std;

int main()
{

char s[100];
char s1[100];
gets(s);
int k=0;
for (int i=0; i<strlen(s); i++)
{
if ((s=='.')&&(s[i+1]=='...')) continue;
s1[k]=s;
k++;
}
s1[k]=0;
cout << s1;
getch();
return 0;
}
 
I

ierofant

#2
Разве существует символ '...'? Это три символа, сдаётся мне.

Вот мой рабочий код.
C++:
#include <iostream>
#include <string>

int main ()
{
std::string str;
std::cout << "Введите строку: ", std::cin >> str;
for (int pos = str.find ('.'); pos != -1 && pos < str.size (); pos = str.find ('.', pos))
{
str.insert (pos, "..");
pos += 3;
}
std::cout << "Отредактированная строка: " << str << std::endl;

return 0;
}
 
I

ierofant

#3
Можно даже, в принципе, убрать второе условие в цикле. Оно и так предусмотрено в функции find.

C++:
#include <iostream>
#include <string>

int main ()
{
std::string str;
std::cout << "Введите строку: ", std::cin >> str;
for (int pos = str.find ('.'); pos != -1; pos = str.find ('.', pos))
{
str.insert (pos, "..");
pos += 3;
}
std::cout << "Отредактированная строка: " << str << std::endl;

return 0;
}
 
I

ierofant

#4
Пришло в голову, что из-за пробелов могут быть проблемы, поэтому вот окончательная версия:

C++:
#include <iostream>
#include <string>

int main ()
{
std::string str;
std::cout << "Введите строку: \n";
std::getline (std::cin, str);
for (int pos = str.find ('.'); pos != -1; pos = str.find ('.', pos))
{
str.insert (pos, "..");
pos += 3;
}
std::cout << "Отредактированная строка: " << std::endl;
std::cout << str << std::endl;

return 0;
}