Форум программистов, компьютерный форум CyberForum.ru

функция подсчета палиндромов - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ найти ошибку в коде http://www.cyberforum.ru/cpp-beginners/thread1059028.html
Найти ошибку в коде из за которой не показывает квадрат /* ** Haaf's Game Engine 1.8 ** Copyright (C) 2003-2007, Relish Games ** hge.relishgames.com
C++ Неразрешенный внешний символ(потоковая функция) Есть следующий код: #include <process.h> #include <stdio.h> #include <windows.h> #include <string> #include <iostream> using namespace std; struct Information http://www.cyberforum.ru/cpp-beginners/thread1059003.html
C++ Переменные
Описать переменные A и B по одному байту, переменную X определить как слово. Переменной A присвоить значение 3, переменной В – 10, переменной X – присвоить значение переменной B.
C++ Написать программу для преобразования заданной квадратной матрицы...
Написать программу для преобразования заданной квадратной матрицы следующим образом: все элементы матрицы выше главной диагонали должны стать равными 1, а элементы ниже главной диагонали – отношению их прежнего значения к элементу главной диагонали соответствующей строки.
C++ Дан одномерный целочисленный массив. Определить, можно ли получить из данной последовательности симметричную (палиндром) путем перестановки в исходной http://www.cyberforum.ru/cpp-beginners/thread1058995.html
Помогите написать код к данной задаче, пожалуйста Дан одномерный целочисленный массив. Определить, можно ли получить из данной последовательности симметричную (палиндром) путем перестановки в исходной последовательности.
C++ Произведение матрицы на вектор очень нужно ,пожалуйста Задача на Произведение динамической матрицы на вектор. и нахождение результата надо оформить функцией подробнее

Показать сообщение отдельно
DariaI
0 / 0 / 0
Регистрация: 27.12.2013
Сообщений: 3
28.12.2013, 00:12  [ТС]     функция подсчета палиндромов
Цитата Сообщение от uhx Посмотреть сообщение
Может выложите весь код?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <cstdlib>
#include <string.h>
using namespace std;
int a, i;
int probel(char *a ) 
{
    int i, j;
    for (i=0; i<strlen(a); i++)
    if (a[i]==' '&&a[i+1]==' ')
    {
        for (j=i; j<strlen(a)+1; j++) // dlina+1 potomu chto posledniy simvol toje nado budet zamestit
        a[j]=a[j+1];
        i--;
    }
}
int skobki(char *a)
{
    int k=0;
    for (i=0; i<strlen(a); i++)
    {
        if (a[i]=='(') k=k+1;
        if (a[i]==')') k=k-1;
     }
    if (k==0) cout<<"skobki sinhronni\n";
    else cout<<"skobki assinhronni\n";
}
int palindromi(char *a)
{ int p, d, kol, j=0;
    for (i=0; i<strlen(a); i=j+1)
    {for (j=0; j<strlen(a); j++)
    {if (a[j]==' '||'.'||'('||')') p=j-i;
    {for (d=0; d<=p/2; d++)
    if a[i]+d==a[j]-d
}
    
 
int main ()
{
    char str[200]; //maksimalnoe chislo simvolov v stroke
 
    cout << "Vvedite "<<15<< "predlojeniya";
    for (int i=0; i<15; i++)
    {
        gets(str);
        probel(str);
        puts(str);
        skobki(str);
    }
}
Добавлено через 2 минуты
Цитата Сообщение от gazlan Посмотреть сообщение
Кажется, неверно понял условие.

Если палиндром, это слово, которое одинаково читается в обоих направлениях и границы слов заданы разделителями, то достаточно составить список всех слов и сравнить их с их же реверсными версиями. Совпадения и будут палиндромами.

Если же разделители игнорируются, то задача резко усложняется. Один из вариантов решения:
  1. найти все слова в исходной строке и занести в первый словарь
  2. реверсировать строку
  3. найти все слова в реверсированной строке и занести во второй словарь
  4. сравнить словари

Палиндромами будут слова, присутствующие в обоих словарях И находящиеся на тех же позициях исходной строки.

Если экономить, то можно обойтись и одним словарем: если на втором проходе находим слово из первого словаря, то это палиндром, но я рекомендовал бы сначала реализовать "наивный" алгоритм и понять его, а потом переходить к оптимизации.

P.S.

"все слова" - это все суффиксы данной строки (без разделителей: пробелы итп)
Спасибо! Эта идея мне не приходила в голову, я слишком зациклилась на идее, которую пыталась воплотить. Завтра же попробую пойти этим путем.
 
Текущее время: 16:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru