Loading...
krum_43 avatar krum_43 756 Точки

Има ли някаква грешка в моя код?

В една от задачите за работа със стрингове се налага да проверим дали една дума(string) е Полиндром т.е дали е симитричен.

Реших да си напиша един метод,който да ми връща true или false в зависимост от това дали думата е полиндром или не е,но ide-to ми казва,че имало пътека,която не връщала стойност.Според мен такава няма.Къде е грешката?

Ето го и кода:

 static bool IfPolidrom(string s)
        {
            for (int i = 0; i < s.Length / 2; i++)
            {
                if (s[i] == s[s.Length - 1])
                {
                    if (i == s.Length / 2)
                    {
                        return true;
                    }
                    else
                    {
                        continue;
                    }
                }
                else
                {
                    return false;
                }
            }

 

Тагове:
VasilKotsev avatar VasilKotsev 830 Точки
Best Answer

Изкарай си една променлива от тип bool извън тялото на цикъла и я сетвай при проверките, ако стрингът не е палиндром сетни променливата на false и break на цикъла. Накрая само един return statement да връща булевата. Лоша практика е да имаш повече от един return в метода. Иначе грешката идва от това, че ако не се влезне в цикъла какво ще върнеш ?

0
krum_43 avatar krum_43 756 Точки

Проверявам дали първият символ е еднакъв с последния,вторият с предпоследнив и т. н.

Ако някъде това е нарушено връщам folse.

Иначе питам дали сме направили достатъчно проверки-string.Length/2.

Ако да значи е симетричен,а ако са <string.Length/2-да върти още.

0
VasilKotsev avatar VasilKotsev 830 Точки

Ако се подаде празен стринг дали ще влезнеш в тялото на цикъла...

1
krum_43 avatar krum_43 756 Точки

Може би си прав.

Декларирах си една променлива от тип bool,както ме посъветва и нещата се оправиха

Лек и успешен ден.

0
aquaruiz avatar aquaruiz 135 Точки

Ако думата ти е буква, какво връщаш?

т.е.

IfPolidrom("a");

0
01/11/2018 18:10:09
krum_43 avatar krum_43 756 Точки

Трябва да върна true,но май не връщам нищо.

Явно съобщението,че има пътеки,които не връщат стойност е вярно.

Мерси за коментара.

Лек и успешен ден.

0
krum_43 avatar krum_43 756 Точки

A може би връщам точно това,което трябва-а.

0
RoYaL avatar RoYaL Trainer 6849 Точки

Има такава пътека, да. Единият else прави continue само, това е пътеката, която не връща стойност. Ако попадаш само в него, накраят методът няма да върне.

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.