کد php:
/** gharar ast k dar in ghesmat yek band neveshte shavad va pas az un sistem kalameye khasi ra peyda
* nemoode va mogheiate un kalame(kalame...jomle...) ra be karbar begooyad
*/
#include<iostream>
using namespace std;
#define p_length 104
#define w_length 7
#define wR_length 12
int main()
{
//introdusing strings
char paragraph[p_length]="slm_.emrooz_jome_hast_va_mn_poroje_mabani_daram_va_nemidoonm_che_takapoi_konm_.cheghadr_sakhte_.bale_.$";
char word[w_length]="poroje";
char wordReplace[wR_length]="basasashbah";
//cin.get(paragraph,113,'$');
//movaghat
cout<<paragraph<<endl;
cout<<word<<endl;
cout<<wordReplace<<endl;
//find 1 word from input
for(int i=0;i<p_length;i++)
{
int j=0;
while(j<=w_length && i+j<=p_length && paragraph[i+j]==word[j])
//(int j=0;j<w_length;j++)
{
j++;
}
//tell the place of word
if(j==w_length-1)
{
//-----------------------------------Replace-babyy
for(int t=0;t<=p_length;t++){
if (t==i){
std::cout << wordReplace ;
t=i+j-1;
}else{
std::cout << paragraph[t] ;
}
}
std::cout <<endl;
//----------------------------------
int s_counter=1,w_counter=0,b=0;//ghabl az jomle aval . nist
while(b<i)
{
//find which sentence is that
if(paragraph[b]=='.')
s_counter++;
//find which word is that
if(paragraph[b]=='_')
w_counter++;
b++;
}
cout<<"sentence:"<<s_counter<<endl<<"word:"<<w_counter<<" ";
break;
}
}
return 0;
}
جواب قسمت دوم هم توی همین کد خودتون بود!!
مثلا در جمله زیر:
کد php:
slm_.emrooz_jome_hast_va_mn_poroje_mabani_daram_va_nemidoonm_che_takapoi_konm_.cheghadr_sakhte_.bale_.$
ما دنبال کلمه poroje هستیم؛ این کلمه در جایگاه ۲۸ قرار داره (از صفر شروع به شمردن کردم)
در هربار اجرای حلقهی خط شماره ۲۱ متغیر i یک واحد در جمله اصلیمون جلو میره تا کاراکتر به کارکتر بتونیم جمله رو جست و جو کنیم
اگر کلمه مورد نظرمون در جمله باشه متغیر i به شروع (جایگاه) این کلمه در جمله اشاره میکنه! یعنی مکان ۲۸ !!
و همچنین اگر کلمه موجود باشه شرط خط ۳۰ هم درست ارزیابی میشه
سوال:
- حالا چرا جایگاه کلمه مورد نظرمون مهم هست؟
جواب:
- وقتی جایگاه کلمه مورد نظر رو در جمله داشته باشیم؛ میتونیم عملیات جایگزینی (replace) رو شبیه سازی کنیم! چطوری؟ به این شکل:
۱ . جمله مورد نظر کارکتر به کاراکتر خوانده شود
۲ . اگر به محل شروع کلمه مورد نظر رسیدیم؛ کلمه مورد نظر که قصد داریم جایگزین کنیم رو چاپ میکنیم و مقدار شمارنده را به مقدار زیر افزار میدهیم:
جایگاه مورد نظر (۲۸ - چون کلمه poroje از کارکتر ۲۸ شروع شده) + طول کمله مورد جست و جو(طول کلمه poroje ) - ۱
۳ . در غیر اینصورت کارکتر رو از جمله اصلی چاپ میکنیم
مثلا:
در جملهی بالا i ما ۲۸ بدست اومده؛ یه حلقه for درست میکنیم؛ تا ۲۸ کارکتر اول رو از جمله اصلی پرینت میگریم:
کد:
slm_.emrooz_jome_hast_va_mn_
شرط دو برقرا میشه؛ کلمهای که میخواییم جایگزین کنیم رو پرینت میگیریم و مقدار شمارنده رو به ۲۸ + ۷ - ۱ افزایش میدیم:
و بعد تا اخر شرط ۳ برقرا هست و بقیه جمله از جایگاه ۳۴ به بعد چاپ میشه:
کد:
_mabani_daram_va_nemidoonm_che_takapoi_konm_.cheghadr_sakhte_.bale_.$
که در نهایت از دید کاربر بیرون انگار کلمه مورد نظر جایگزین قبلی شده!!!
کد php:
slm_.emrooz_jome_hast_va_mn_basasashbah_mabani_daram_va_nemidoonm_che_takapoi_konm_.cheghadr_sakhte_.bale_.$