14 / 14 / 3
Регистрация: 19.09.2009
Сообщений: 289
1

Готовый код поиска палиндромов

26.01.2010, 18:48. Показов 15857. Ответов 46
Метки нет (Все метки)

Вот сделал задачку, мб кому пригодится)


Если кому решение покажется не рациональным, поправьте.

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
#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;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.01.2010, 18:48
Ответы с готовыми решениями:

Исправить код по нахождению слов-палиндромов
Помогите исправить ошибки в задаче про проверку является ли слово оборотнем. Например maam - слово...

Готовый код, раскрывающий суть типов переменных
(Админ оформи сам если, что.) Я начал изучать си пока мне объясняли про типы переменных решил...

Ошибка в программе поиска чисел-палиндромов
Здравствуйте. Задача такая: из Memo1 найти все числа-палиндромы и вывести их в Memo2. Программа...

Не получается найти готовый, написать скрипт поиска товаров
В javascript разбираюсь не особо, поэтому столкнулся с такой проблемой. Есть сайт с большим...

46
Эксперт С++
1671 / 1043 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
26.01.2010, 21:28 2
Переименуй, что ли, тему в "палиндромы"...
0
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
26.01.2010, 21:47 3
BOR1K, а че код делает
0
32 / 30 / 6
Регистрация: 10.11.2009
Сообщений: 123
26.01.2010, 21:51 4
Цитата Сообщение от МедведЪ Посмотреть сообщение
BOR1K, а че код делает
Палиндро́м (от греч. πάλιν — «назад, снова» и греч. δρóμος — «бег») — число (например, 404), буквосочетание, слово (например, топот, фин. saippuakauppias = продавец мыла — самое длинное употребительное слово-палиндром в мире) или текст, одинаково (или почти одинаково) читающиеся в обоих направлениях.
0
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
26.01.2010, 22:07 5
не легче ли написать
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
bool polidrom(char s[100000]){
  int x=0;
        for(int i=0,j=strlen(s)-1;j>=strlen(s)/2,i<strlen(s)/2;j--,i++)
 
        {               
                if(s[j]==s[i])
                 x=1; 
                else
                 break;
        }       
 
        if(x)        return true;
        else    return false;}
1
Эксперт JavaЭксперт С++
8373 / 3595 / 419
Регистрация: 03.07.2009
Сообщений: 10,708
26.01.2010, 23:38 6
Цитата Сообщение от МедведЪ Посмотреть сообщение
не легче ли написать
На самом деле нет, так как твой код сравнивает только первый и последний. Если они совпадают, то x становится равным 1 и все остальные сравнения не учитываются потому как x больше не меняется.
Я переписал твой код немного, должен работать, не проверял
C++
1
2
3
4
5
6
7
8
bool polidrom(char s[100000])
{
    size_t x(0), i, len(strlen(s) - 1), slen(len >> 1);
    for(i = 0; i < slen; ++i) 
        if(s[i] != s[len - i])
            return false;      
    return true;
}
0
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
27.01.2010, 10:03 7
M128K145, не понял как то если он проверяет посимвольно то если он там найдет хоть одно отличие то нафиг продолжать проверять
0
Эксперт JavaЭксперт С++
8373 / 3595 / 419
Регистрация: 03.07.2009
Сообщений: 10,708
27.01.2010, 10:29 8
МедведЪ, хм... ты же просто при нахождении несовпадения прерываешь цикл. Но если до этого у тебя было хотя бы одно совпадение, то х = 1. И вот это условие
C++
1
2
3
4
if(x)
    return true;
else
    return false;
Всегда будет true. Только в случае когда небыло ни одного совпадения, т.е. не совпали первый и последний символы x будет равен 0 и вернется false

Добавлено через 1 минуту
Для того чтобы исправить твой код надо хотя бы так писать
C++
1
2
3
4
5
6
7
if(s[j]==s[i])
    x = 1; 
else
{
    x ^= x;
    break;
}

ЗЫ. а кто говорил что надо продолжать дальше проверять? Я не говорил
1
1 / 1 / 0
Регистрация: 19.10.2010
Сообщений: 16
01.11.2010, 08:21 9
Не,ну тут программа проверяет предложение на палиндромность,а как сделать,чтобы любые слова введённые с клавы проверялись на палиндромность???
0
Бродяга
313 / 267 / 56
Регистрация: 27.08.2010
Сообщений: 553
01.11.2010, 08:37 10
Ну так вводите с клавы и проверяйте:
C++
1
gets(src);
0
1 / 1 / 0
Регистрация: 19.10.2010
Сообщений: 16
01.11.2010, 08:49 11
А он говорит, что reversit: идентификатор не найден(
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
11144 / 7086 / 1674
Регистрация: 25.07.2009
Сообщений: 12,943
01.11.2010, 08:59 12
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#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;
}
1
1 / 1 / 0
Регистрация: 19.10.2010
Сообщений: 16
01.11.2010, 12:31 13
error C2601: is_it: недопустимые локальные определения функции
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
11144 / 7086 / 1674
Регистрация: 25.07.2009
Сообщений: 12,943
01.11.2010, 12:45 14
Цитата Сообщение от Катерина Ан Посмотреть сообщение
error C2601: is_it: недопустимые локальные определения функции
Да ну?!
Готовый код поиска палиндромов

Что-то Вы, барышня, явно не так делаете...
0
1 / 1 / 0
Регистрация: 19.10.2010
Сообщений: 16
01.11.2010, 13:03 15
Ааа,ща вроде компилируется!
Но когда я ввожу слово ,то программа мне не отвечает(((
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
11144 / 7086 / 1674
Регистрация: 25.07.2009
Сообщений: 12,943
01.11.2010, 13:11 16
Цитата Сообщение от Катерина Ан Посмотреть сообщение
Но когда я ввожу слово ,то программа мне не отвечает(
после #include <iostream> добавьте строку #include <cstdlib> а перед return 0; строку system("pause"); ну за одно и эту тему прочитайте...
0
1 / 1 / 0
Регистрация: 19.10.2010
Сообщений: 16
01.11.2010, 13:18 17
Всё сделала,прочитала. А программа все равно не работает (
Получается так: Word: //тут я ввожу слово нажимаю enter и всё,программа не отвечает,и клавиатура отказывается работать!
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
11144 / 7086 / 1674
Регистрация: 25.07.2009
Сообщений: 12,943
01.11.2010, 13:42 18
Цитата Сообщение от Катерина Ан Посмотреть сообщение
олучается так: Word: //тут я ввожу слово нажимаю enter и всё,программа не отвечает,и клавиатура отказывается работать!
чудеса какие... вот оно же в msvs 2008 express
Готовый код поиска палиндромов

давайте по пунктам:
1. создаёте новый пустой(!) проект
2. добавляете в него новый файл c++ (.cpp)
3. копируете в файл текст программы
4. добавляете две строки как на картинке
5. жмёте кнопку F5
0
1 / 1 / 0
Регистрация: 19.10.2010
Сообщений: 16
01.11.2010, 14:01 19
Мне и нужно было в msvs 2008.
Всё сделала по пунктам. Итог

Ошибка 1 general error c1010070: Failed to load and parse the manifest. 5 C405BAO =09B8 C:070==K9 D09;.
0
155 / 88 / 25
Регистрация: 17.10.2010
Сообщений: 1,042
01.11.2010, 14:26 20
BOR1K, а как будет выглядеть твой первый код на C++ VS 2008, я закоментировал строку:
#include "stdafx.h"
Компилятор ругается:
Error 1 error C2061: syntax error : identifier '_TCHAR' c:\users\администратор\documents\visual studio 2008\projects\c++\console\p612\p612\p612.cpp 22 p612

Очень надо, заранее огромное спасибо
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.11.2010, 14:26
Помогаю со студенческими работами здесь

Нужно написать программу для поиска палиндромов от 1 до 1 000 000 в десятичной системе счисления и двоичной одновременно
Program v1; var f:array of integer; a,b,i,k,n,g,v,m:integer; begin for i:=0...

Печать. Готовый код.
Здравствуйте. Написал код печати. Печатает нормально. Линии рисует между ячейками. вообщем всё...

Дек//Готовый код
Ребят вот нашёл код дека, и его подправил для своих нужд. Но сделал одну вещь не так, надо задать...

отредактировать готовый код
Отредактируйте пожалуйста готовый код.ТЗ:Написать программу,коротая выводит с клавиатуры массив из...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru