Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.11.2010, 21:00   #1
Guzal
Форумчанин
 
Аватар для Guzal
 
Регистрация: 11.09.2010
Сообщений: 101
По умолчанию Палиндром С++

Здравствуйте, помогите пожалуйста с строками,
нужно определить является ли строка полиндромом или нет( палиндромы - это слова которые читаются в право налево и наоборот одинаково)
как обойтись без классов, структур и тп..как бы полегче)
Код:
input	Output
abba	Yes
I'm a rebel. [I think positively].
Guzal вне форума Ответить с цитированием
Старый 26.11.2010, 21:30   #2
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Можно банально:
Код:
#include <iostream>

using namespace std;

int main()
{
	string s, r;
	cin>>s;
	for (unsigned int i = 0; i < s.length(); i++)
		r = s[i] + r;
	cout<<(s==r?"Yes":"No");
	return 0;
}
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 26.11.2010, 21:38   #3
Guzal
Форумчанин
 
Аватар для Guzal
 
Регистрация: 11.09.2010
Сообщений: 101
По умолчанию

спасибки большое, это мне и нужно было)
I'm a rebel. [I think positively].
Guzal вне форума Ответить с цитированием
Старый 26.11.2010, 22:03   #4
Guzal
Форумчанин
 
Аватар для Guzal
 
Регистрация: 11.09.2010
Сообщений: 101
По умолчанию

можно еще вопрос
нужно найти повторяющуюся букву в строке и вывести ее, если известно что их должно быть только две.

Код:
input	Output
avdaf	  a
что можно использовать здесь ? пытаюсь применить функцию strchr, но кажется она не подходит
I'm a rebel. [I think positively].
Guzal вне форума Ответить с цитированием
Старый 27.11.2010, 08:03   #5
Зелёный
Пользователь
 
Регистрация: 26.11.2010
Сообщений: 29
По умолчанию

наверно так...может я не все случаи рассмотрел,но попробуй эту прогу.

Код:
#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{ string s;
int b=0;
bool buf=true;
int i,j,n=0;
	cin>>s;
	for (i=0;i<=s.length(); i++)
        for(j=i;j<=s.length();j++){
                                   if(j!=i){
                                            if(s[i]==s[j]){
                                                           cout<<s[i]<<endl;
                                                           }
                                            }

                                                      
	
	
                                   }


    system("PAUSE");
    return EXIT_SUCCESS;
}

Что-то такое наверно. Если буква повторяется лишь один раз. в общем попробуй.
Зелёный вне форума Ответить с цитированием
Старый 27.11.2010, 13:41   #6
Guzal
Форумчанин
 
Аватар для Guzal
 
Регистрация: 11.09.2010
Сообщений: 101
По умолчанию

спасибо большоое)
I'm a rebel. [I think positively].
Guzal вне форума Ответить с цитированием
Старый 27.11.2010, 15:37   #7
Зелёный
Пользователь
 
Регистрация: 26.11.2010
Сообщений: 29
По умолчанию

Там, правда, переменные лишние,но думаю,сам сообразишь,что убрать)
Зелёный вне форума Ответить с цитированием
Старый 10.12.2012, 00:46   #8
Юрич22
Новичок
Джуниор
 
Регистрация: 10.12.2012
Сообщений: 1
По умолчанию

Определите все палиндроми с заданого промижутка. Для проверки что число есть палиндромом напишите функцию
Юрич22 вне форума Ответить с цитированием
Старый 10.12.2012, 01:51   #9
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

Базиля вне форума Ответить с цитированием
Старый 10.12.2012, 09:09   #10
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Определите все палиндроми с заданого промижутка. Для проверки что число есть палиндромом напишите функцию
Вот Вам решение от этой задачи. Сами подумайте, как его применить к Вашей.
Код:
#include <stdio.h>

int main(void)
{
	char number[1000002];
	int expNum;
	for(scanf("%d", &expNum);expNum>0; --expNum){
		scanf("%s", &number);
		int length=strlen(number), flag=0, grow=0;
		int high=(length-1)/2, low=(length-1)/2+(length-1)%2;
		if(number[high]>number[low]){
			number[low]=number[high];
			grow=1;
		} else if (number[high]<number[low]){
			if(number[high]!='9') number[high]++;
			else{
				number[high]='0';
				flag=1;
			}
			number[low]=number[high];
			grow=1;
		}
		while(high>0){
			high--; low++;
			if(flag!=0){
				if(number[high]!='9'){
					++number[high];
					flag=0;
				} else {
					number[high]='0';
				}
			}
			if(grow==0){
				if(number[high]>number[low]) grow=1;
				if(number[high]<number[low]) grow=-1;
			}
			number[low]=number[high];
		}
		if(flag!=0){
			number[0]='1';
			number[length]='1';
			number[length+1]='\0';
		}
		if(grow!=1) do{
			high=(length-1)/2, low=(length-1)/2+(length-1)%2;
			if(number[high]!='9'){
				number[high]++;
				number[low]=number[high];
				break;
			}
			number[high]='0';
			flag=1;
			number[low]=number[high];
			while(high>0){
				high--; low++;
				if(flag!=0){
					if(number[high]!='9'){
						++number[high];
						flag=0;
						number[low]=number[high];
						break;
					} else {
						number[low]=number[high]='0';
					}
				}
			}
			if(flag!=0){
				number[0]='1';
				number[length]='1';
				number[length+1]='\0';
			}
		}while(0);
		printf("%s\n", number);
	}
	return 0;
}
Abstraction вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Палиндром JokerWCC Помощь студентам 4 12.10.2010 15:02
Палиндром A_Orlov Паскаль, Turbo Pascal, PascalABC.NET 1 27.04.2010 16:44
Палиндром shark2010 Помощь студентам 11 23.04.2010 03:07
Палиндром??? viva2222 Помощь студентам 6 21.03.2010 12:29
Палиндром Carbon Помощь студентам 9 12.11.2007 14:32