оставить в строке фрагменты,симметричные центрального символа, длиной более 5 символов.остальные символы заменить на пробелы(пример - dcbabcd)
привет) помогите пожалуйста реализовать в с++. )
.работаСоСтроками, (вижуал)_С++ |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.
.работаСоСтроками, (вижуал)_С++ |
кучаТрупов |
Сообщение
#1
|
изувер Группа: Пользователи Сообщений: 88 Пол: Женский Реальное имя: ann Репутация: 1 |
оставить в строке фрагменты,симметричные центрального символа, длиной более 5 символов.остальные символы заменить на пробелы(пример - dcbabcd)
привет) помогите пожалуйста реализовать в с++. ) |
volvo |
Сообщение
#2
|
Гость |
Ну, в принципе, если тебе не нужны спецсредства С++ (всякие STL-и и тому подобное), то задача решается так:
#include <iostream>(почти чистый С, за исключением вывода результата) Проверь, отработает ли оно в 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(); } Сообщение отредактировано: кучаТрупов - |
Текстовая версия | 26.04.2024 8:12 |