פורסם 2010 באוקטובר 515 שנים בניתי את הפונק', ה- 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
פורסם 2010 באוקטובר 515 שנים ה-C שלי חלודה להחריד (והיא אף פעם לא הייתה מדהימה...),אבל התנאי שלך בלולאה נראה לי לא תקין, תנסה אולי לשנות אותו למשהו בסגנון הזה: for (i=0 ; i < l / 2; i++) עריכה:אוקיי, הבנתי למה הוא נראה לי לא תקין.זה לא תנאי מה שיש לך שם, זה השמה!אתה פשוט מכניס לתוך i את הערך של l / 2 ואז גורם ללולאה אין סופית.גם במצב של לא פלינדרום זה יקרה, אלא אם כן הוא נתקל בתווים שונים כבר בזוג הראשון (כלומר, התווים הראשון והאחרון)אם למשל תיקח את המחרוזת - abccca, אז אני חושב שזה יתקע בלולאה אין סופית גם עבור המחרוזת הזאת (למרות שזה לא פלינדרום)
פורסם 2010 באוקטובר 615 שנים מחבר אכן זה סידר את הבעיה... #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;} עכשיו... איך אני משכלל את זה עוד קצת ומוסיף שהפונק' מתעלמת מרווחים וטאבים בתוך המערך שמתקבל? תודה !
פורסם 2010 באוקטובר 615 שנים תנסה קודם להתעלם מהרווחים (לא לקרוא אותם\למחוק אותם) ואז לבדוק האם פלינדרום.
פורסם 2010 באוקטובר 615 שנים או לחלופין להשתמש בפונקציית trimming כלשהי שתתנקה לך את המחרוזת לאותיות בלבד.
פורסם 2010 באוקטובר 615 שנים בהנחה שאתה לא מסוגל לעשות את זה, הפתרון הוא להחזיק שני אינדקסים - אחד שיצביע על תחילת המחרוזת ואחד שיצביע על סופה. תדאג להזיז את האינדקסים (אחד קדימה ואחד אחורה כמובן) ככה שאתה מדלג על הרווחים.
פורסם 2010 באוקטובר 1315 שנים מחבר הקטע עם האינדקסים ידוע... אבל אם אני מעוניין לעשות את זה ללא מצביעים ?
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.