עבור לתוכן
View in the app

A better way to browse. Learn more.

HWzone

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

palindrome in ANSI C

Featured Replies

פורסם

בניתי את הפונק', ה- main נראה לי סבבה, אבל הוא נותן פלט רק על מצב של לא פולינדרום, אם פולינדרום, הוא לא נותן פלט או מסיים תוכנית.


#include <stdio.h>
#include <string.h>

int palindrome (char s[]);
int main (void){

char word[] ="affa";
if ( (palindrome (word) ) == 1 )
{
printf("Is Palindrome !");
}
else
{
printf("Not a Palindrome !");
}

return 0;
}

int palindrome (char s[]){

int i,l;

l=strlen(s);

for (i=0 ; (i=l/2) ; i++)
{
if ((s[i])!=(s[l-i-1]))
return 0;
}
return 1;

}

תודה !! ;D

פורסם

ה-C שלי חלודה להחריד (והיא אף פעם לא הייתה מדהימה...),

אבל התנאי שלך בלולאה נראה לי לא תקין, תנסה אולי לשנות אותו למשהו בסגנון הזה:

 for (i=0 ; i < l / 2; i++) 

עריכה:

אוקיי, הבנתי למה הוא נראה לי לא תקין.

זה לא תנאי מה שיש לך שם, זה השמה!

אתה פשוט מכניס לתוך i את הערך של l / 2 ואז גורם ללולאה אין סופית.

גם במצב של לא פלינדרום זה יקרה, אלא אם כן הוא נתקל בתווים שונים כבר בזוג הראשון (כלומר, התווים הראשון והאחרון)

אם למשל תיקח את המחרוזת - abccca, אז אני חושב שזה יתקע בלולאה אין סופית גם עבור המחרוזת הזאת (למרות שזה לא פלינדרום)

פורסם
  • מחבר

אכן זה סידר את הבעיה...


#include <stdio.h>
#include <string.h>

int palindrome (char s[]);
int main (void){

char word[] ="abrba";
if ( (palindrome (word) ) == 1 )
{
printf("Is Palindrome !");
}
else
{
printf("Not a Palindrome !");
}

return 0;
}

int palindrome (char s[]){

int i,l;

l=strlen(s);

for (i=0 ; i < l / 2; i++)
{
if ((s[i])!=(s[l-i-1]))
return 0;
}
return 1;

}

עכשיו... איך אני משכלל את זה עוד קצת ומוסיף שהפונק' מתעלמת מרווחים וטאבים בתוך המערך שמתקבל? :nixweiss:

תודה !

פורסם

תנסה קודם להתעלם מהרווחים (לא לקרוא אותם\למחוק אותם) ואז לבדוק האם פלינדרום.

פורסם

או לחלופין להשתמש בפונקציית trimming כלשהי שתתנקה לך את המחרוזת לאותיות בלבד.

פורסם

בהנחה שאתה לא מסוגל לעשות את זה, הפתרון הוא להחזיק שני אינדקסים - אחד שיצביע על תחילת המחרוזת ואחד שיצביע על סופה. תדאג להזיז את האינדקסים (אחד קדימה ואחד אחורה כמובן) ככה שאתה מדלג על הרווחים.

פורסם
  • מחבר

הקטע עם האינדקסים ידוע... אבל אם אני מעוניין לעשות את זה ללא מצביעים ?

פורסם

...אז תעשה עם אינדקסים.

או שאתה צריך להסביר את עצמך יותר טוב.

פורסם
  • מחבר

:kopfpatsch: צודק...

תודה :)

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.