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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
denis0387
0 / 0 / 0
Регистрация: 27.03.2013
Сообщений: 36
#1

симметричность строки на С++ - C++

27.03.2013, 12:58. Просмотров 1003. Ответов 1
Метки нет (Все метки)

Описать рекурсивную функцию, проверяющую, является ли симметричной часть строки s, начинающаяся i-м и заканчивающаяся j-м ее эле-ментами.

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
#include <iostream.h>
#include <conio.h>
#include <math.h>
 
 
bool recurs(char *b, int i)
{
 
   if( i <= 1 ) return true;
   if( *b == *(b+i-1) ) return  recurs( b + 1, i - 2 );
   return false;
 
 
        return 0;
}
void main()
{
    char a[255];
 
    int i,j;
    cout<<"Vvedite stroku: \n";
    cin.getline(a,255);
    do{
        cout<<endl<<"Vvedite i:"<<endl;
        cin>>i;
        cout<<"Vvedite j:"<<endl;
        cin>>j;
 
        if (i>j)
        {
            cout<<"oshibka vvoda.i>j."<<endl;
        }
    }while(i>j);
        int size=j-i;
        char* b = new char[j-i];
             for (int k=0; k<=size;k++){
                *(b+k) = '\0';
        }
        for (int k=0; k<size;k++){
                *(b+k) = a[i];
                i++;
        }
cout<<"Poluhennay stroka" << endl;
cout<<endl<<b;
 
 
    if (recurs(b,i) == true) cout<<endl<<"Stroka simetricna.";
    else cout<<endl<<"Stroka ne simetricna.";
    getch();
}

Не получаеться заставить программу проверять на симметричность
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.03.2013, 12:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос симметричность строки на С++ (C++):

Проверка строки на симметричность через рекурсию - C++
Функция проверки должна иметь только 1 параметр, и быть рекурсивной Что не так, посмотрите пожалуйста( #include &lt;conio.h&gt; #include...

Объяснить код проверки строки на симметричность - C++
Помогите пожалуйста разобрать код, как он выполняется #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;cstring&gt; #include...

Симметричность матрицы - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;iomanip&gt; #include &quot;MyCrt.cpp&quot; using namespace std; int...

Симметричность массива - C++
задание такое: Задан массив из k символов. Определить, симметричен ли он, т. е. чита-ется ли он одинаково слева направо и справа налево....

симметричность матрицы - C++
мне нужно проверить, является ли квадратная матрица симметричной, относительно главной диагонали. Как мне составить условие, чтобы я не...

Симметричность матрицы - C++
Дана квадратная матрица А(N, N).Составьте программу, определяющую, является ли данная матрица симметричной или нет. Если матрица...

1
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
27.03.2013, 15:28 #2
Допиливайте как желаете:
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
#include <iostream>
#include <cstring>
 
// проверяет строку на симметричность
// строка задается адресом превого символа и
// адресом последнего символа
// функция возвращает истину, если строка является
// палиндромом
bool isPalindrome(const char *begin, const char *end) {
  while (begin < end) {
    if (*begin++ != *end--) {
      return false;
    }
  }
  return true;
};
 
int main(int argc, char *argv[]) {
 
  const char string[] = "arozaupalanalapuazora"; // строка
  int first = 3; // позиция первого символа с нуля
  int last = 17; // позиция последнего символа с нуля
 
  // выводит 1, если строка является палиндромом
  std::cout << isPalindrome(string + first, string + last) << std::endl;
  
  std::cin.get();
  return 0;
}
Добавлено через 3 минуты
Пардон, не заметил про рекурсию:
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
#include <iostream>
#include <cstring>
 
// проверяет строку на симметричность
// строка задается адресом превого символа и
// адресом последнего символа
// функция возвращает истину, если строка является
// палиндромом
bool isPalindrome(const char *begin, const char *end) {
  if (begin < end) {
    if (*begin != *end) {
      return false;
    } else {
      return isPalindrome(begin + 1, end - 1);
    }
  } else {
    return true;
  }
};
 
int main(int argc, char *argv[]) {
 
  const char string[] = "arozaupalanalapuazora"; // строка
  int first = 3; // позиция первого символа с нуля
  int last = 17; // позиция последнего символа с нуля
 
  // выводит 1, если строка является палиндромом
  std::cout << isPalindrome(string + first, string + last) << std::endl;
  // выводит 0, если строка не является палиндромом
  std::cout << isPalindrome(string + first, string + last + 1) << std::endl;
  
  std::cin.get();
  return 0;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.03.2013, 15:28
Привет! Вот еще темы с ответами:

Симметричность массива - C++
Никак не могу дорубить как сделать. подскажите плиз Дан массив из К символов. Определить симметричен ли он, читается ли он одинаково...

Проверьте симметричность - C++
Проверить матрицу на симметричность.Да я знаю такие задачи уже были.Но я хочу именно свой код.Не пойму что не так!Почему не...

Проверка на симметричность слова - C++
void main() { char line; printf(&quot;vvedite stroku\n&quot;); scanf(&quot;%s&quot;,line); for (int i=strlen(line)-1,j=0; i!=strlen(line)/2; i--,j++)...

Проверка последовательности символов на симметричность - C++
Уважаемые пользователи, помогите пожалуйста. Необходимо реализовать структуру проверки последовательности символов на симметричность. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru