ABA


"צריך עזרה - בדיקה האם מחרוזת היא פלינדרום"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #15352 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 15352
חומוס לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 22.4.02
13069 הודעות, 5 פידבק, 6 נקודות
   00:49   05.06.09   
אל הפורום  
  צריך עזרה - בדיקה האם מחרוזת היא פלינדרום  
 
ערכתי לאחרונה בתאריך 05.06.09 בשעה 00:56 בברכה, חומוס
 
אני צריך לבנות פונקציה בוליאנית שבודקת אם מחרוזת מסויימת היא פלינדרום (ביטוי שאפשר לקרוא אותו דבר משני הצדדים - 1221, abcba וכו')
הבעייה (בשבילי לפחות..) היא שיש להתייחס כאות גדולה כמו לאות קטנה ולהפך
כלומר הביטוי הבא לדוגמא: A22322a הוא פלינדרום.
בקיצור מה שאני עשיתי זה להתחכם קצת.. לקחתי מחרוזת קיימת והפכתי
בה את כל האותיות הקטנות לגדולות ואז שלחתי את המחרוזת החדש לפונקציה
הרקורסיבית שתבדוק האם זה פלינדרום או לא.

אין לי שמץ של מושג איך להשוות בין אותיות גדולות לקטנות תוך כדי
הבדיקה... אשמח אם תתנו לי איזשהו כיוון

#include <ctype.h>
int string_is_palindrom (char *str,int lenght);

void main()
{
int i;
char palindrom;
char palindrom1;
gets (palindrom);
for (i=0;i<10;i++)
if (islower(palindrom))
palindrom1=toupper(palindrom);
else
palindrom1=palindrom;
if (string_is_palindrom(palindrom,9))
printf ("It is a palindrom\n");
else
printf ("It is not a palindrom\n");

}

int string_is_palindrom (char *str,int lenght)
{
if (lenght<2)
return 1;
if (*str != *(str+lenght-1))
return 0;
return string_is_palindrom(str+1,lenght-2);
}


כמו כן, איך אני יכול לקבוע גודל מדוייק של מחרוזת שהמשתמש יכניס בעצמו?
נניח המשתמש החליט שהוא רוצה מחרוזת בגודל 8... איך אני יכול לגרום למחרוזת להיות באמת בגודל של 8? הרי זה לא מערך רגיל שאני מכניס אליו מספר אחרי מספר ואז אני יכול לעשות הגבלה...


תודה!


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  מה הבעייה בעצם? Deuce  05.06.09 03:56 1
     חשבתי אולי יש דרך יותר אלגנטית לעשות השוואה בין קטנה חומוס 05.06.09 08:33 2
         תקלוט מספר ותקצה דינאמית עם malloc את המחרוזת שאתה רוצה Net_Boy  05.06.09 11:28 3
  תוכנית לא מסובכת VeNom  05.06.09 15:58 4

       
Deuce 
חבר מתאריך 1.9.08
6225 הודעות, דרג אמינות חבר זה
   03:56   05.06.09   
אל הפורום  
  1. מה הבעייה בעצם?  
בתגובה להודעה מספר 0
 
הרי ברקורסיה אתה עובר אות אות, אז למה הסתבכת להמיר את האותיות לקטנות?






                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
חומוס לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 22.4.02
13069 הודעות, 5 פידבק, 6 נקודות
   08:33   05.06.09   
אל הפורום  
  2. חשבתי אולי יש דרך יותר אלגנטית לעשות השוואה בין קטנה  
בתגובה להודעה מספר 1
 
ערכתי לאחרונה בתאריך 05.06.09 בשעה 08:42 בברכה, חומוס
 
לגדולה.
בכל אופן.. העברתי את ההמרה לרקורסיה וכעת זה נראה כך

#include <ctype.h>
int string_is_palindrom (char *str,int lenght);

void main()
{
char palindrom;
gets (palindrom);
if (string_is_palindrom(palindrom,9))
printf ("It is a palindrom\n");
else
printf ("It is not a palindrom\n");

}

int string_is_palindrom (char *str,int lenght)
{
if (lenght<2)
return 1;
while (islower (*str))
*str=(toupper (*str));
while (islower (*(str+lenght-1)))
*(str+lenght-1)=(toupper (*(str+lenght-1)));
if (*str != *(str+lenght-1))
return 0;
return string_is_palindrom(str+1,lenght-2);
}

משום מה הוא לא מוסיף את הגודל מחרוזת (מספר בסוגריים מרובעות) אחרי הchar palindrom
כנראה זה קשור לאחד הקודים פה ברוטר
בכל אופן תוכל לעזור לי רק עם השאלה השנייה ששאלתי?
אני רוצה שהמשתמש יחליט בעצמו מה הגודל של המחרוזת שיכניס ולא שאני
יכתיב לו את הגודל כמו בתרגיל...


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Net_Boy  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.4.02
17151 הודעות, 1 פידבק, 2 נקודות
   11:28   05.06.09   
אל הפורום  
  3. תקלוט מספר ותקצה דינאמית עם malloc את המחרוזת שאתה רוצה  
בתגובה להודעה מספר 2
 
   ואל תשכח לשחרר את המחרוזת בסוף התוכנית


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
VeNom  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 7.6.02
7922 הודעות, 1 פידבק, 2 נקודות
   15:58   05.06.09   
אל הפורום  
  4. תוכנית לא מסובכת  
בתגובה להודעה מספר 0
 
   תקצה דינמית לפי
strlen על המחרוזת הקיימת+1..
עכשיו תהפוך את כל האותיות ותעשה strcmp בין 2 המחרוזות..וככה תדע אם כן או לא..


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net