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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2014, 14:41   #1
Uefa
Пользователь
 
Регистрация: 25.08.2013
Сообщений: 59
По умолчанию (c++) строки

Здравствуйте! Необходимо проверить, является ли введенная строка палиндромом. Пытаюсь скопировать строку по символам с конца в начало, в новую строку. (чтобы новая строка представляла собой перевернутую старую), а затем все сравнить. Но не выходит!
Код:
/*Проверить является ли строка палиндромом. (Палиндром -
это выражение, которое читается одинакова слева направо
и справа налево).*/
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <math.h>
using namespace std;

void main ()
{
	setlocale (0, "");
	char a[255], b[255];
	cout << "Введите строку: ";
	gets (a);
	for(int i=strlen(a)-1, j=0; i>=0; i--, j++)
	{
		b[j]=a[i];
	}

	if (strcmp(a,b)!=0)
		cout << "Введенная строка не является палиндромом\n";
	else
		cout << "Введенная строка является палиндромом\n";

	system ("pause");
};

Последний раз редактировалось Stilet; 22.05.2014 в 21:14.
Uefa вне форума Ответить с цитированием
Старый 22.05.2014, 15:37   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

1. А конец-строки кто будет копировать? strlen считает без завершающего нуля.
2. Зачем копировать, если можно побуквенно сравнивать?
p51x вне форума Ответить с цитированием
Старый 22.05.2014, 18:24   #3
Uefa
Пользователь
 
Регистрация: 25.08.2013
Сообщений: 59
По умолчанию

Решил, может быть кому-нибудь пригодится:
Код:
/*Проверить является ли строка палиндромом. (Палиндром -
это выражение, которое читается одинакова слева направо
и справа налево).*/
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <math.h>
using namespace std;

void main ()
{
	setlocale (0, "");
	char a[255], b[255];
	bool fl;
	cout << "Введите строку: ";
	gets (a);
	for(int i=strlen(a)-1, j=0; i>=0; i--, j++)
	{
		b[j]=a[i];
	}
	for (int i=0; i<strlen(a); i++)
	{
		if (a[i] != b[i])
			fl = false;
	}
	if (!fl)
		cout << "Введенная строка не является палиндромом\n";
	else
		cout << "Введенная строка является палиндромом\n";

	system ("pause");
};

Последний раз редактировалось Stilet; 22.05.2014 в 21:14.
Uefa вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на строки. Даны две строки. Определить можно ли из символов первой строки получить вторую строку.( написать подпрограммой и ANTON1994 Паскаль, Turbo Pascal, PascalABC.NET 5 09.02.2013 14:07
Программа на языке "Ассемблер" - ввод строки, анализ длины строки, добавление точки в конец строки Алексей_2012 Помощь студентам 1 05.04.2012 11:26
Сделать в гриде строки выше, чтобы не растягивать строки до бесконечности kris__tina БД в Delphi 1 09.06.2011 15:31
Создание пустой строки и копирование в неё содержимое предыдущей строки Gvaridos Microsoft Office Excel 2 29.10.2010 13:33
Перенести символа с начала строки в место перед запятой этой же строки. Zhiltsov Microsoft Office Excel 4 05.06.2009 13:10