Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.12.2010, 01:06   #1
miNN@
 
Регистрация: 03.10.2010
Сообщений: 6
Вопрос Работа со строкой...нахождение симметричных слов

здрасьте
а у меня вот что:
Дана последовательность слов. Напечатать те слова последовательности, которые отличны от первого слова и удовлетворяют следующему свойству:
а) в слове нет повторяющихся букв;
б) слово смметрично.
Получилось следующее:
Код:
#include<iostream.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>

using namespace std;

int p(string sl)
{
int b=1;
int k=sl.length(); // количество символов
for (int i=0; i<(k-1); i++)
for (int j=(i+1); j<k; j++)
if (sl[i]==sl[j]) b=0;
return b; // нет повторов
}

int main()
{
char c[80]; 
cout << "s="; gets(c);
string s=string(c); string sl;
// выделение слов
int p1=0;
int p2=s.find(" "); 
while (p2>-1) 
{
sl=s.substr(p1,p2-p1);
if (p(sl)) cout << sl << endl;
p1=p2+1;
p2=s.find(" ",p2+1);
} 
sl=s.substr(p1);
if (p(sl)) cout <<sl << endl;

getch();
return 0;
}
а как симметрию оформить?...вот если слово состоит из нечетного кол-ва символов,то можно найти середину и сравнить правую и левую части...а если четное кол-во символов,то поделив на 2 сравнить обе части...притом сравниваем первый символ с последним,второй с предпоследним, неужели нет ничего попроще?Помогите плиз понять

Последний раз редактировалось ACE Valery; 11.12.2010 в 02:26.
miNN@ вне форума Ответить с цитированием
Старый 11.12.2010, 01:12   #2
kaljan775
:D
Форумчанин
 
Аватар для kaljan775
 
Регистрация: 26.09.2010
Сообщений: 570
По умолчанию

проверка на симметрию

Код:
char slovo[100];
cin>>slovo; ололо
int strl=strlen(slovo);
int x=strl/2; //int отбрасывает дробную часть, следовательно 5/2 будет 5
inf q=0;//если какая-либо из букв не равна букве с другой стороны, увеличиваем на 1
for (int i=0,j=strl-1;i<x;i++,j--){//strl -1 потому что slovo[strl] = '\0'
 if (slovo[i]!=slovo[j]) q++;
}

if (q==0) cout<<"Симметричное слово"<<endl;
else        cout<<"Несимметричное слово"<<endl;
да, придется сравнивать последний с первым, второй и тд
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery

Последний раз редактировалось kaljan775; 11.12.2010 в 01:16.
kaljan775 вне форума Ответить с цитированием
Старый 11.12.2010, 02:27   #3
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

miNN@, когда пишите сообщение, оформляйте код тегом [code] или кнопкой #

По какой причине я наблюдаю три ваших абсолютно одинаковых сообщения, два из которых находятся в чужих темах? Так делать нельзя. Прочтите правила форума, если хотите и дальше здесь находиться.

Штраф за кросс постинг
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать

Последний раз редактировалось ACE Valery; 11.12.2010 в 02:42.
ACE Valery вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа со строкой mansp Общие вопросы C/C++ 1 15.11.2010 23:19
работа со строкой Андрей.12 Помощь студентам 1 15.02.2010 09:14
Работа со строкой!!! APTEMUC Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 18.01.2010 00:22
Работа со строкой s2dentishe Общие вопросы Delphi 6 05.12.2009 15:09
работа со строкой. D_E_N Общие вопросы Delphi 4 25.10.2009 16:19