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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.12.2010, 22:17   #1
ermackprogramis
Новичок
Джуниор
 
Регистрация: 28.12.2010
Сообщений: 2
По умолчанию троки в С++, Как сделать чтобы прога определяла слова-палиндромы?

Добрый вечер.Помогите, пожалуйста,не знаю как задать так, чтобы прога определяла слова, которые читаются справа налево однаково.
Вот нормальное условие:

В строке символов найти слова-палиндромы, которые однаково
читаются справа налево и наоборот. Найти наибольшую длину этих слов.
Если таких слов нет, то с каждого слова на непарной позиции убрать гласные и вывести их на экран.
ermackprogramis вне форума Ответить с цитированием
Старый 28.12.2010, 22:18   #2
ermackprogramis
Новичок
Джуниор
 
Регистрация: 28.12.2010
Сообщений: 2
По умолчанию

// подключение библиотек
Код:
#include "stdafx.h" 
#include <iostream>

using namespace std; 

// оглашение переменных
char s[100];
char scopy[100];
char word[100][100],w[25];
int n;

//===функция ввода===
void input()
{
cout<<"Input array"<<endl; 
gets(s); // ввод массива
cout<<"Enter array :"<<endl; 
puts(s); // вывод массива
}

//===функция поиска слов===
void solution()
{
strcpy(scopy,s);

char *ptr; // указатель на искаемую лексему
char *delimiter="., _!?:; \0"; // лексемы
int i=0;
ptr = strtok(scopy,delimiter); // первое слово рядка
while(ptr!=NULL) // поиск слов
{
strcpy(word[i],ptr); // занесение слов в массив
i++;
ptr = strtok(NULL,delimiter); // следующее слово
}
n=i;
}

//===поиск слов палиндромов===
bool words(char scopy[100])
{
size_t x(0), i, len(strlen(s) - 1), slen(len >> 1);
for(i = 0; i < slen; ++i) 
if(s[i] != s[len - i])
return false; 
return true;
}

void longword()
{
int max = strlen(word[0]);
strcpy(w,word[0]);
for(int i=0;i<n;i++)
{
if (max<strlen(word[i]))
{
max=strlen(word[i]);
strcpy(w,word[i]);
}
cout<<"Word = "<<w<<" length = "<<max<<endl;
}
}

//===функция вывода===
void output()
{
cout<<"========================="<<endl;
for(int i=0;i<n;i++)
{
puts(word[i]);
}
cout<<"Number of words"<<n<<endl;
}
//===главная функция===
int main()
{
input();
solution();
words(scopy);
longword();
output();
system("pause");
}
Вот я здесь пробывал, взгляните

Последний раз редактировалось ACE Valery; 28.12.2010 в 23:28.
ermackprogramis вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
К первому новому сообщению Как сделать , чтобы после ввода ключегого слова в edit программа переходила к gefest58 Общие вопросы Delphi 2 22.10.2010 00:36
Как сделать так чтобы ... Ромка-12 Помощь студентам 2 16.09.2010 05:52
Как сделать так чтобы.. Дима я Общие вопросы Delphi 2 05.01.2010 19:03
Как сделать чтобы прога не закрывалась vitalik007 Общие вопросы Delphi 8 12.01.2008 23:32