נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

נושא: חיפוש תת מחרוזת

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
שניר
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 24 April 2006 בשעה 17:52 | IP רשוּם
ציטוט שניר

האם מישהו יודע לפתור את השאלה הבאה?

 

כתוב פונקציה שמחפשת תת-מחרוזת בתוך מחרוזת נתונה.

כך,כאשר נחפש את תת המחרוזת "CB" במחרוזת ,ABCDACBA" יוחזר הערך 5

כי החל ממיקום 5 מתחילה תת מחרוזת זו.

תודה מראש ...!

חזרה לתחילת העמוד הצג את כרטיס החבר של שניר חפש הודעות אחרות של שניר בקר בדף הבית של שניר
 
shoshan
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 16 July 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 4637
נשלח בתאריך: 24 April 2006 בשעה 19:27 | IP רשוּם
ציטוט shoshan

איזה כותרת לעניין -

l - אורך מחרוזת
n - אורך תת מחרוזת
S - מחרוזת
s1 - תת מחרוזת

עבור i מ-1 עד l-n בצע:
    אמת -> bool.
    שים ב-j את הערך של i.
    כל עד j<=i+n וגם bool בצע:
       אם האות במקום j ב-S שונה מהאות במקום 1+j-i אזי:
          שקר -> bool.
    אם bool אזי
       החזר אמת.
חזרה לתחילת העמוד הצג את כרטיס החבר של shoshan חפש הודעות אחרות של shoshan בקר בדף הבית של shoshan
 
מנסה לעזור
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 24 April 2006 בשעה 23:50 | IP רשוּם
ציטוט מנסה לעזור

מנסה לעזור, בהצלחה!

קוד:

#include <iostream>
#include <conio.h>
#include <cstring>
using namespace std;
int main()
{
 char A[20], B[20];
 //קליטת המחרוזת
 gets(A);//להלן: מחרוזית מקורית
 gets(B);//להלן: מחרוזת לבדיקה

 int j=0, k=0;//הגדרת מונים
   
 while(k<strlen(A))//כל עוד לא הסתיימה המחרוזת המקורית
 {
  if(A[k]==B[j])//אם נמצא  ערך זהה בשתי המחרוזות
  {
  while(k<k+strlen(B))//כל עוד לא הסתימה המחרוזת לבדיקה- נמשיך לבדוק אותה במחרוזת המקורית
   {
   if(A[k]==B[j])//אם הערך שווה
    {k++;//נקדם את המונים
     j++;
    }
   else//אחרת
    {j=0;//חזרה לתחילת המחרוזת לבדיקה
    break;//נעבור לאיבר הבא במחרוזת המקורית
    }
   if(j==strlen(B))//אם נמצאה המחרוזת בדיקה בשלמות
    {cout<<"yes";//נחזיר תשובה אמת, נסיים.
    return true;
    }
   }
  }
  else
  {k++;
  }
 }

  cout<<"no";//אם לא הוחזרה תשובה אמת- נחזיר תשובה שלילית
  return false;
  getche();
}

 

 

חזרה לתחילת העמוד הצג את כרטיס החבר של מנסה לעזור חפש הודעות אחרות של מנסה לעזור בקר בדף הבית של מנסה לעזור
 

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

קפיצה לפורום
אינך יכול/ה לשלוח נושאים חדשים בפורום זה
אינך יכול/ה להגיב לנושאים בפורום זה
אינך יכול/ה למחוק את הודעותיך ותגוביך בפורום זה
אינך יכול/ה לערוך את הודעותיך ותגובותיך בפורום זה
אינך יכול/ה לצור סקרים בפורום זה
אינך יכול/ה להצביע בסקרים בפורום זה