Готовый код поиска палиндромов - C (СИ)
Формулировка задачи:
Вот сделал задачку, мб кому пригодится)
Если кому решение покажется не рациональным, поправьте.
#include "stdafx.h"
#include "conio.h"
#include "string.h"
#include <iostream>
using namespace std;
void reversit(char s[])
{
int len = strlen(s);
for(int j = 0;j <len/2;j++)
{
char temp = s [j];
s [j] = s [len-j-1];
s [len-j-1] = temp;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
char src[80]={"a roza upala na lapu azora"};
char dest[80];
char rvs[80];
int i, j;
printf("wait...");
if((src, sizeof(src), stdin) == NULL || *src == '\n')
return 1;
for(i = j = 0; src[i] != '\0'; i++)
if(src[i] != ' ')
{ dest[j++] = src[i];
dest[j] = '\0';}
//printf("Getted uyhgf %s\n", src);
//strcmp(src,dest);
strncpy(rvs,dest,70);
reversit(rvs);
if(strcmp(rvs,dest)==0) printf("KANAET \n");
//strcmp(src,dest);
_getch();
return 0;
}Решение задачи: «Готовый код поиска палиндромов»
textual
Листинг программы
#include <iostream>
bool is_it(const char * s){
const char * head, * tail;
for ( tail = s; *tail; ++tail )
;
for ( head = s, --tail; head < tail; ++head, --tail )
if ( *head != *tail )
return false;
return true;
}
int main(){
char buf[1024];
std::cout << "Word: ";
std::cin >> buf;
std::cout << "is " << ( is_it(buf) ? "" : "not " ) << "a palindrom." << std::endl;
return 0;
}
Объяснение кода листинга программы
- В функции
is_itопределены две переменныеheadиtail. - Переменная
tailитерируется по строкеsдо тех пор, пока не достигнет конца строки. - Переменная
headитерируется по строкеsс обоих концов до тех пор, пока не окажется в середине строки. - Если символы, на которых находятся
headиtail, не совпадают, то функция возвращаетfalse. - Если все символы в середине строки совпадают, то функция возвращает
true. - В функции
mainопределена буферная переменнаяbufтипаcharс размером в 1024 байта. - Пользователю предлагается ввести слово, которое будет храниться в переменной
buf. - Далее пользователю выводится сообщение о том, является ли введенное слово палиндромом или нет.
- Функция
is_itвызывается с аргументомbuf, результат сохраняется в переменной типаboolи выводится на экран. - Программа завершается с кодом 0, что означает успешное выполнение.