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

Рекурсивные функции (палиндром) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Определить радиус и центр окружности минимального радиуса, проходящей хотя бы через три различные точки заданного множества точек на плоскости http://www.cyberforum.ru/cpp-beginners/thread894194.html
Определить радиус и центр окружности минимального радиуса, проходящей хотя бы через три различные точки заданного множества точек на плоскости.
C++ Замените в тексте входного файла все группы подряд идущих пробелов на один пробел Замените в тексте входного файла все группы подряд идущих пробелов на один пробел. Результат запишите в выходной файл http://www.cyberforum.ru/cpp-beginners/thread894192.html
C++ [Сортировка слиянием] Уменьшить количество требуемой памяти для сортировки
Добрый, на момент написания, день всем. Изучаю алгоритмы данных, дошёл до сортировки слиянием (Merge Sort). Прочитал, что для сортировки как минимум требуется выделение памяти, эквивалентное одному экземпляру того массива/файла, который будем сортировать. Возникла такая идея: использовать для такой сортировки массив указателей на элементы сортируемого массива. Немного прикинул, если,...
C++ long double и double в MSVC 12 одно и тоже, нужна информация,желательно быстрей
Здравствуйте все знают что в VC long double и double одно и тоже, да и при простой проверке это легко выясняется, но нужна информация от самого майкрософта, цитата или ещё что нито, где сказано что в студии оно реализовано одинаково. Там мануал какой-то, в общем что нито официальное...
C++ Реализовала формулу. Все хорошо, вот только в результатах взялось откуда-то #INF http://www.cyberforum.ru/cpp-beginners/thread894164.html
Мне нужно вычислить дифференциал интерполяционного многочлена Лагранжа третьей степени, и подставить значения иксов/игриков и аргумента. http://i2.imageban.ru/out/2013/06/07/6a0cec65a97d02b6bcc7ca18977c42d2.png http://i2.imageban.ru/out/2013/06/07/5a8fa5813aa4d7c4b3aa68f39adc5b1b.png http://i2.imageban.ru/thumbs/2013.06.07/0fc3475b5041da27bfec3d0b1275c246.png...
C++ Не записывает ничего в файл Добро всем утро! Надеюсь хоть у кого-то оно доброе=) Помогите пжл с программой(написать либо подправить). Задача следующая: "Создать текстовый файл и напечатать в нем не менее пяти строк (можно на английском), включающих буквы, цифры и т.д. Программно пронумеровать каждую строку." То есть имеется ввиду, создать файл, в котором мы сами печатаем данные символы. Я написал программу, вроде бы все... подробнее

Показать сообщение отдельно
Мимино
 Аватар для Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
07.06.2013, 10:08     Рекурсивные функции (палиндром)
Цитата Сообщение от kryl1993 Посмотреть сообщение
Необходимо составить программу, которая содержит рекурсивную функ-цию Palindrom(S) логического типа, возвращающую True, если строка S является палиндромом (то есть читается одинаково слева направо и справа налево), и False в противном случае. Оператор цикла в теле функции не использовать. Вывести значения функции Palindrom(S) для пяти данных строк.
Помогите плиз!
Уже решал подобную задачу для строки "a roza upala na laru azora". Сложность заключается в игнорировании пробелов при сравнении. Вот что получилось:
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
#include "stdafx.h"
#include <iostream>
using namespace std;
 
bool palindrom(char [], int);
 
int main()
{
    setlocale(LC_ALL, "Russian");
    char arr[27] = "a roza upala na lapu azora";
 
    cout << endl;
    if (palindrom(arr, 27) == true)
        cout << endl << endl << "Строка: " << arr << " - палиндром" << endl;
    else
        cout << endl << endl << "Строка: " << arr << " - не палиндром" << endl;
    system("pause");
    return 0;
}
 
 
bool palindrom(char a[], int size)
{
    int i = 0, j = 2;
 
    if (size - j <= 0)
        return true;
    else
    {
        if (a[i] == ' ')
            i++;
        if (a[size - j] == ' ' || a[size - j] == '\0')
            j++;
 
        cout << "a[" << i << "] = "<< a[i] << "   " << "a[" << size - j << "] = " << a[size - j] << "   " << "a[" 
                       << size - 1 << "] = " << a[size - 1] << endl;
        if (a[size - j] == a[i])
        {
            if (i == 1)
                j++;
            palindrom(&a[i + 1], size - j);
            if (size - j <= 0)
                return true;
        }
        else
            if (a[size - j] != a[i])
                return false;
            else
                return true;
    }
}
Я не пробовал, но уверен, что можно переделать под любую строку.
 
Текущее время: 01:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru