IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> .работаСоСтроками, (вижуал)_С++
сообщение
Сообщение #1


изувер
**

Группа: Пользователи
Сообщений: 88
Пол: Женский
Реальное имя: ann

Репутация: -  1  +


оставить в строке фрагменты,симметричные центрального символа, длиной более 5 символов.остальные символы заменить на пробелы(пример - dcbabcd)

привет) помогите пожалуйста реализовать в с++. )
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Ну, в принципе, если тебе не нужны спецсредства С++ (всякие STL-и и тому подобное), то задача решается так:
#include <iostream>

int main()
{
char s[] = "efd0dcbtrartbcdmrewttrj hbu o abcdedcbahg h\0";
char *first = s;
for(char *p = s + 2; *(p + 2); p++)
{
int len;
for(len = 1; p - len >= s && *(p + len) && *(p - len) == *(p + len); len++);
len -= 1;

if(2 * len + 1 > 5)
{
for(char *last = p - len; first != last; )
{
*first++ = ' ';
}
first = p + len + 1;
}
}
for(; *first; )
{
*first++ = ' ';
}
std::cout << s << std::endl;
return 0;
}
(почти чистый С, за исключением вывода результата)

Проверь, отработает ли оно в VC++, я проверял другим компилятором.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


изувер
**

Группа: Пользователи
Сообщений: 88
Пол: Женский
Реальное имя: ann

Репутация: -  1  +


спасибо большое)
вот то ,что получилось у меня:

Код


// otanocho.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "iostream"
#include "string"
using namespace std;

string space(string s, int i, int j)
{
    for(int k=i;k<j;k++)
        s[k]=' ';
    return(s);
}
inline int min(int i, int j){ return (i == j) ? i : (i<j ? i : j); }

int index_symmetry(string s, int k)
{
    bool symmetry_availability=true;
    int size=s.size(),
        i=k;
    while((i-k<=min(size-k,k))&&(symmetry_availability==true))
        if (!(s[i]==s[2*k-i]))
            symmetry_availability=false;
        else i++;
    return(i-k-1);
}
void main()
{
    string s;
    int startsel=0,
        endsel=0,
        acc;
    printf("Enter a string, or leave it blank\n");
    getline(cin,s);
    if (s=="")
        s="awwearfsasdfdsadfdf hhksljdjksghjkjhg";
    int size=s.size();
    system("cls");
    printf("accuracy=");
    cin >> acc; cout << "\n";
    cout << s << "\n";
    for(int i=1;i<size;i++)
    {
        if((index_symmetry(s,i)>0)&&(index_symmetry(s,i)>=acc))
        {    
            endsel=i-index_symmetry(s,i);
            if((startsel<endsel)&&(endsel!=0))
                s=space(s,startsel,endsel);
            startsel=i+index_symmetry(s,i)+1;
        }
    }
    s=space(s,startsel,size);
    cout << s << "\n";
    getchar();
    getchar();
}    


Сообщение отредактировано: кучаТрупов -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 26.04.2024 8:12
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name