Задание:
Следующие задания оформить в виде функций. Отдельно разработать демонстрационную программу для демонстрации работоспособности функций.
а. возвратить строку, которая содержит первое и второе слово, если строка содержит более двух слов или исходную строку без изменения.
б. удалить последнее слово из заданной строки.
в. удвоить все пробелы в заданной строке.
Сам Код:
Код: Выделить всё
#include <cstring>
#include <string>
#include <iostream>
#include <conio.h>
using namespace std;
//Удаляет все слова короме первого в введенной строке
string DeleteWord(char s[])
{
char psz[255];
strcpy(psz,s);
for (int i = 0; psz[i] != 0; i++)
if (psz[i] == '.' || psz[i] == '?' || psz[i] == '!')
{
int pos = i;
while ((psz[pos] != ' ') && (pos >= 0)) pos--;
for (int n = pos; psz[n] != '\0'; n++)
psz[n] = psz[n+(i-pos)];
}
return psz;
}
// удаляет первое слово строки со всеми пробелами.
string DeleteSpace(char s[])
{
int i, j, k, len, cnt = 0;
char *ptr, c;
len = strlen(s);
if(s[0] != 0 && s[0] != ' ')
cnt = 1;
for(i = 0; i < len && cnt < 2; i++)
if(s[i] == ' ' && s[i+1] != ' ')
++cnt;
for(j = k = i; k < len; ++k)
{
c = s[k];
if(c != ' ')
s[j++] = c;
}
s[j] = 0;
return &s[i];
}
// является ли данное слово перевертышем
bool Palindrom(char s[])
{
if (s[0] + s[1] + s[2] == s[3] + s[4] + s[5]) return true; else return false;
}
int main()
{
char s[255];
cout << "Enter string: ";
gets(s);
cout << "Deleted ! the first word: " << DeleteWord(s)<<endl;
cout << "Deleted the first word and all space: " << DeleteSpace(s)<<endl;;
cout << "Palindrom boolean: "<<Palindrom(s)<<endl;
_getch();
}