کد فوق مشکل کوچکی دارد یعنی برای رشته های با طول فرد کار نمی کند، فرض کنید رشته ما AbA باشد در اولین بار تکرار حلقه شرط A<>b چک می شود چون طول رشته برابر 3 است و کاراکتر اول برابر A و کاراکتر یکی ماند به آخر یعنی طول رشته منهای یک برابر 2 یعنی کاراکتر b است و تابع عدم پالیندروم بودن را نمایش می دهد، دقت کنید که در پاسکال رشته از 1 شروع می شود.
---------------------------
نقل قول:
برای به دست آوردن وسطش اینجوری باید عمل کنم ؟
شما باید ابتدا قسمت اول عبارت پالیندروم را بدست آورید برای عبارات زوج از تابع زیر استفاده کنید
Count:=Lenght(PalindramString)/2
و برای رشته های با طول فرد از تابع زیر استفاده کنید
Count:=Ceil(Length(palindramString)/2)
تابع Ceil یا Ceiling باید وجود داشته باشه لطفا خودتان جستجو کنید
نقل قول:
من که نتونستم اجرا کنم همین طور substr
از تابع Copy استفاده کنید (خیلی وقت هست با پاسکال کار نکردم شاید این تابع در پاسکال 7 وجود نداشته باشه همینطور Reverse ولی Copy صد در صد وجود داره)
حال دو قسمت پالیندروم را بدست آورید
HalfPalindram:=Copy(PalindramString,1,Count)
HalfPalindram2:=Copy(PalindramString,Count+1,Count )
نقل قول:
راستی تابعی به اسم REVERSE تو توربو پاسکال 7 داریم ؟
همانطور که گفتم یادم نیست وجود دارد یا نه اما می توانید آنرا به صورت زیر شبیه سازی کنید
st:='Your String';
Location := POS(Space, St);
Len := Length(St);
Last := COPY(St, 1, Location - 1);
First := COPY(St, Location + 1, Len - Location);
St := First + Space + Last
موفق باشید