Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 08.11.2018
Сообщений: 4

Нахождение и удаление из строки палиндрома максимальной длины

16.12.2018, 12:16. Показов 2541. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! помогите с кодом.
Вот задание:
Определить, является ли строка палиндромом удалить пробелы, найти фрагменты – палиндромы максимальной длины и удалить.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.12.2018, 12:16
Ответы с готовыми решениями:

нахождение Максимальной длины имени объекта Fat32
Прошу помощи,подсказки в решении такой вот задачки(С++Borland3.1) поиск объектов с максимальным количеством символов в имени среди...

Нахождение в орграфе пути максимальной длины от 1-ой вершины до последней
Помоги,будьте любезный.Всех прошу.Не могу написать сам алгоритм нахождения этого наибольшего пути.матрица смежности храниться в текстовом...

В параметрах командной строки передается список слов. Определить и вывести на экран слово максимальной длины.
Необходимо разработать программу согласно варианту задания. Данные в программу передаются через параметры командной строки. ...

1
2 / 1 / 1
Регистрация: 18.12.2018
Сообщений: 1
18.12.2018, 21:09
Лучший ответ Сообщение было отмечено Shotdown как решение

Решение

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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#include <stdio.h>
#include <stdlib.h>
#include <locale>
#include <string.h>
#include <Windows.h>
#include <time.h>
 
void Delete(char A[], char B[], char C[])
{
    int i, s, d, j=0;
 
    for (i=0;A[i]!='\0';i++) if (A[i]==' ') {C[i]='0'; j++;} else C[i]='1';
    for (i=0,d=0,s=0;A[i]!='\0' && s<=j;i++)
    {
        if (C[i]=='0') s++;
        if (C[i]=='1') {B[d++]=A[i];}
    }
 
    //return *B; //printf("%s\n", B);
}
 
void DeleteFinal(char B[], char E[], char D[])
{
    int i, d;
 
    for (i=0,d=0;B[i]!='\0';i++)
    {
        if (D[i]=='1') continue;
        if (D[i]=='0') {E[d++]=B[i];}
    }
 
    for(i=0;B[i]!='\0';i++) B[i]=' '; 
    for(i=0;E[i]!='\0';i++) B[i]=E[i];
 
    //return *B;
}
 
char Find(char A[], int j, int b)
{
    int l=0, d=0;
 
    while (j>=b)
    {
        if (A[j]==A[b]) {l++;}
        if (A[j]!=A[b]) {l=0; break;} // f - количество несовпадений (букв в 2 раза больше), d - количество совпадений (букв в 2 раза больше)
        b++; j--;
    }
 
    if (l==0) return 0;
    else {d=l*2; return d;}
}
 
int main()
{
    int t1;
    const int arr=501;
    setlocale(LC_ALL, "rus");
    char A[arr]="", B[arr]="", E[arr]="";//, K[201]; // Строковый массив + пустые массивы
    char C[arr], D[arr]=""; // Массив признак
    unsigned char i=0,j=0,s=0;
    int a, d, f, h, ch, nech, end, beg, x, y=0;
    int m=0;
    char k,c,p=0,n=0;
 
    SetConsoleCP(866);
    printf("Введите строку: ");
    fgets(A, arr+1, stdin);//fscanf(stdin, "%[^\n]", A);
    printf("Строка без пробелов: ");
 
    SetConsoleCP(1251);
    Delete(A,B,C); // Удаление пробелов из строки
    fputs(B, stdout);
 
    for (d=0;B[d]!='\0';d++); // Поиск новой максимальной длины
 
    while (p==0)
    {
    for (i=0,j=d-1;i<=j;i++) // Цикл перебора одинаковых строк
    {
        for (;j>i;j--)
        {
            if (B[i]==B[j]) 
            {
                beg=i; end=j; // Выделение границ внутри смешанной строки
                f=Find(B,end,beg);
                if (f==0) {continue;} // если строка не палиндром, то массив признак - везде ноль
                if (f!=0 && f>m) {for(h=0;B[h]!='\0';h++) {D[h]='0';} for(h=beg;h<=end && D[h]!='\0';h++) {D[h]='1';} m=f;}// хранение максимума совпадений и запись массива признака (сначала очистка от старых значений, потом запись новых)
            }
        }
        j=d-1;
    }
    DeleteFinal(B,E,D); // Ввести в массив новую "очищенную" строку
    for (a=0;B[a]!=' ';a++); // Проверка на оставшиеся палиндромы, длиной более 2 символов
    for (c=0,k=a-1;c<=k;c++,k=a-1)
        for (;k>c;k--) if (B[c]==B[k]) {n=Find(B,k,c);}
        if (n!=0) {i=0; d=a-1; end=0; beg=0;} else p=1; // Если новых палиндромов нет, то завершаем программу
        n=0; m=0;
    }
 
    SetConsoleCP(866);
    printf("Удаление максимального палиндромного элемента строки: ");
 
    SetConsoleCP(1251);
    fputs(B, stdout);
    printf("\n");
    SetConsoleCP(866);
    t1=clock();
    printf("Время работы программы: %d сек", t1/CLOCKS_PER_SEC);
    printf("\n");
    system("PAUSE");
    return 0;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.12.2018, 21:09
Помогаю со студенческими работами здесь

Нахождение палиндрома.
Написать функцию, которая определяет, является ли строка палиндромом. Заголовок функции: bool isPolindrom(const char *s); Написать...

Нахождение палиндрома
Написать функцию, которая определяет, является ли строка палиндромом. Заголовок функции: bool isPolindrom(const char *s); Написать...

Нахождение палиндрома в строке
Народ помогите плз!!! Строка состоит из слов. Найти все самые длинные слова-палиндромы и занести их в новую строку. Слова в новой...

Нахождение палиндрома из массива
Дано следующее задание: Задан числовой массив A(M). Найдите отрезок массива, в котором первое число равно последнему, второе -...

Нахождение палиндрома в заданном диапазоне
Помогите пожалуйста с кодом, нужно найти все палиндромы на заданном диапазоне от А до С. Палиндром – такое сочетание цифр, которые читаются...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru