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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.09.2015, 09:42   #1
sswt
Пользователь
 
Регистрация: 02.09.2015
Сообщений: 14
По умолчанию Реализация функции палидрому

Я написала функцию, функция нормально работает. Но так как я смотрела по примерам, мне не очень нравиться этот момент:
Код:
for (t = str; *t!= '\0'; ++t);
	for (t = str; *t!= '\0'; --t);
Как сделать чтобы forом проходиться и str и t ?
MyFunc.h:
Код:
#ifndef __MY_FUNC_H__
#define __MY_FUNC_H__
int Palidrome(const char *str);
#endif
MyFunc.cpp:
Код:
#include "MyFunc.h"
int Palidrome(const char *str)
{
	const char *t; 
	for (t = str; *t!= '\0'; ++t);
	for (t = str; *t!= '\0'; --t);
	while (str < t)
	{
		if (*str++ != *t--) 
			return 0;
	}
	return 1;
}
Source.cpp:
Код:
#include <cstdio>
#include "MyFunc.h"
int main()
{
        const char* ach2 = "aabbbbaa";
	printf("Palidrome:%d\n", Palidrome(ach2));
        
        return 0;
}

Последний раз редактировалось Stilet; 09.09.2015 в 10:15.
sswt вне форума Ответить с цитированием
Старый 09.09.2015, 10:17   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
int Palidrome(const char *str)
{
	int i,n=strlen(str); 
	for (i=0;i<n/2;i++) if(str[i]!=str[n-i-1]) return 0;
	return 1;
}
Годится?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.09.2015, 11:39   #3
sswt
Пользователь
 
Регистрация: 02.09.2015
Сообщений: 14
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
int Palidrome(const char *str)
{
	int i,n=strlen(str); 
	for (i=0;i<n/2;i++) if(str[i]!=str[n-i-1]) return 0;
	return 1;
}
Годится?
Нет). Я Хочу сделать без strLen(str)
sswt вне форума Ответить с цитированием
Старый 09.09.2015, 11:47   #4
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

Код:
int Palidrome(const char *str){
	int n = 0; 
        for (const char* t = str; *t!= '\0'; ++t, n++);
	for (int i=0;i<n/2;i++) if(str[i]!=str[n-i-1]) return 0;
	return 1;
}
по идеи, замена strlen + код Stilet-a далее + чуть подправил стиль...

Последний раз редактировалось GreenWizard; 09.09.2015 в 11:51.
GreenWizard вне форума Ответить с цитированием
Старый 09.09.2015, 11:51   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
++t, n++
Хех )
Фэншуй форева )))
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.09.2015, 12:08   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,833
По умолчанию

Цитата:
Я Хочу сделать без strLen(str)
Цитата:
for (const char* t = str; *t!= '\0'; ++t, n++);
Я вам открою тайну, но это и есть стрлен... более того оптимизатор почти в такое и развернет.
p51x вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реализация функции (C++) KAHT Помощь студентам 0 26.12.2011 14:02
Реализация функции strcat. KOPC1886 Помощь студентам 2 25.01.2011 17:48
Ассемблер. Реализация функции... Vika_M Помощь студентам 4 04.12.2008 17:12