امتیاز موضوع:
  • 4 رأی - میانگین امتیازات: 3
  • 1
  • 2
  • 3
  • 4
  • 5
جستجوی یک کلمه در متن
نویسنده پیام
ΛΛ Θ l-l $ Σ Ω آفلاین
کاربر با تجربه
****

ارسال‌ها: 739
موضوع‌ها: 147
تاریخ عضویت: مهر ۱۳۸۶

تشکرها : 219
( 187 تشکر در 98 ارسال )
ارسال: #12
RE: جستجوی یک کلمه در متن
سلام
برنامه شما رو کمی تغییر دادم به این شکل شد
کد php:
#include <iostream.h>
#include <string.h>
main()
{
char str1[20] ;
char str2[10] ;
char s;
int n=0;

cin>>str1;
cin>>str2;

strtok(str1," ");
while(
s!=NULL)
{
if(
strcmp(str1,str2)==0)
{
n++;                                             
s=strtok(NULL," ");            
}
}
cout<<"there are "<<n<<" "<<str2<<" in this string."

cin.get ();
cin.ignore();
return 
0;

الان یه مشکل داره:وقتی که توی رشته اول is و رشته دوم هم is را وارد می کنیم برنامه به درستی عدد 1 را چاپ می کند اما اگر در رشته اول isis و در رشته دوم is را وارد کنیم برنامه هنگ می کند.

Exclamation
۲۶-آذر-۱۳۸۷, ۲۰:۰۷:۵۷
ارسال‌ها
پاسخ
t3r!p3000 آفلاین
         
*****

ارسال‌ها: 5,050
موضوع‌ها: 83
تاریخ عضویت: اردیبهشت ۱۳۸۵

تشکرها : 34447
( 17423 تشکر در 5116 ارسال )
ارسال: #13
RE: جستجوی یک کلمه در متن
سلام

اينو محبوب خانم مي خواستن بفرستن كه نتونستن و دادن به من كه بفرستم كه ببخشيد اگه يكم دارم با تاخير مي فرستمش .


نمي توني متنو با دستور cin بخوني ، چون دستور cin تا جايي از متنو برمي داره كه به يك كاركتر فاصله سفيد برسه .
سپس فقط كلمه اول متن رو خوانده و داخل رشته ذخيره مي كند و بقيه اطلاعات از بين مي رود .

ورودي داده ها با Cin و >> مي تواند باعث تجاوز از محدوده آرايه شود .


يعني اگر دستور رو به رو باشد :

کد:
Char str[];
Cin>>str;

اگر مثلا كاربر جمله there is … را وارد كند فقط there را داخل str ذخيره مي كند . سپس بايد از cin.getline استفاده كنيم .
ولي براي كلمه مورد جستجو مي توني از Cin استفاده كني . چون يك كلمه است .


Str1 ← متن
Str2 ← كلمه
n ← حاوي تعداد تكرار كلمه مورد جستجو
i ←انديس حروف متن
j ← انديس حروف كلمه مورد جستجو
f ← مثل فلاگ يا پرچم عمل مي كند ( كه مي تواند از نوع boolean نيز باشد و با false يا true مقدار دهي مي شود .


کد:
int n=0,i=0,j=0,f=0;
const int SIZE=80;
char str1[SIZE];
char str2[];
const << “ please enter your type “;
cin.getline (str1,SIZE);
cont << “ enter the searching word”;
cin>>str2;
while (str1[i] != ‘\0’)
{
    if (str1[i] != ‘ ‘ )
        if (str1[i]==str2[j])
{
    f=0;
    for ( j=0 ; str2[j] != ‘\0’ ; j++)
        if (str1[i] == str2 [j])
            i++;
        else
            f = 1;    
    if ( f==0  && str1[i] == ‘ ‘ )
        n++;
    j=0;
    while(str1[i] != ‘\0’)
        i++;

}
Else
    While (str1[i] != ‘ ‘ )
        i++;
    i++;
}
(آخرین ویرایش در این ارسال: ۲۹-آذر-۱۳۸۷, ۰۶:۳۰:۵۲، توسط t3r!p3000.)
۲۸-آذر-۱۳۸۷, ۲۱:۱۲:۵۲
ارسال‌ها
پاسخ
تشکر شده توسط : ΛΛ Θ l-l $ Σ Ω
t3r!p3000 آفلاین
         
*****

ارسال‌ها: 5,050
موضوع‌ها: 83
تاریخ عضویت: اردیبهشت ۱۳۸۵

تشکرها : 34447
( 17423 تشکر در 5116 ارسال )
ارسال: #14
شرمنده

سلام
مثل اينكه من چند جا رو اشتباه تايپ كردم . البته شايد مربوط به خط هم باشه .

واسه همين اصلش رو مي ذارم .


فایل‌(های) پیوست شده بندانگشتی (ها)
       
۲۹-آذر-۱۳۸۷, ۰۶:۰۸:۱۶
ارسال‌ها
پاسخ
تشکر شده توسط : ΛΛ Θ l-l $ Σ Ω
mrn_xp آفلاین
تازه وارد

ارسال‌ها: 1
موضوع‌ها: 0
تاریخ عضویت: آذر ۱۳۸۷

تشکرها : 0
( 0 تشکر در 0 ارسال )
ارسال: #15
RE: شرمنده
(۲۹-آذر-۱۳۸۷, ۰۶:۰۸:۱۶)terip2008 نوشته است:

سلام
مثل اينكه من چند جا رو اشتباه تايپ كردم . البته شايد مربوط به خط هم باشه .

واسه همين اصلش رو مي ذارم .

سلام من ایم کد رو گذاشتم ولی به قسمت char str2[]; مشکل داره اجرا نمیگیره
۲۹-آذر-۱۳۸۷, ۲۰:۵۰:۴۸
ارسال‌ها
پاسخ
ΛΛ Θ l-l $ Σ Ω آفلاین
کاربر با تجربه
****

ارسال‌ها: 739
موضوع‌ها: 147
تاریخ عضویت: مهر ۱۳۸۶

تشکرها : 219
( 187 تشکر در 98 ارسال )
ارسال: #16
RE: شرمنده
(۲۹-آذر-۱۳۸۷, ۰۶:۰۸:۱۶)terip2008 نوشته است:

سلام
مثل اينكه من چند جا رو اشتباه تايپ كردم . البته شايد مربوط به خط هم باشه .

واسه همين اصلش رو مي ذارم .
سلام دست شما درد نکنه بعضی جاهاش اشتباه تایپی بود که درست کردم اما هنوز یه مشکل هست این برنامه به من خروجی نمیده!
جمله و کلمه رو تایپ می کنم و هیچ اتفاقی نمی افته.
کد php:
#include <iostream.h>
#include <string.h>
main()
{
int n=0,i=0,j=0,f=0;
const 
int SIZE=80;
char str1[SIZE];
char str2[10];
cout<<"please enter your type"<<endl;
cin.getline (str1,SIZE);
cout <<"enter the searching word"<<endl;
cin>>str2;
while (
str1[i] != '\0')
{
if (
str1[i] != ' ' )
if (
str1[i]==str2[j])
{
f=0;
for ( 
j=str2[j] != '\0' j++)
if (
str1[i] == str2 [j])
i++;
else
1;    
if ( 
f==0  && str1[i] == ' ' )
n++;
j=0;
while(
str1[i] != '\0')
i++;
}
else
while (
str1[i] != ' ' )
i++;
i++;
}
cin.get();
cin.ignore ();
return 
0;


Exclamation
۲۹-آذر-۱۳۸۷, ۲۱:۰۵:۱۵
ارسال‌ها
پاسخ
mahbooob آفلاین
كاربر دو ستاره
**

ارسال‌ها: 221
موضوع‌ها: 24
تاریخ عضویت: شهریور ۱۳۸۷

تشکرها : 1422
( 2312 تشکر در 367 ارسال )
ارسال: #17
RE: جستجوی یک کلمه در متن
terip2008 نوشته است:واسه همين اصلش رو مي ذارم .

وای این چه کاری بود کردین؟؟!!!!!!!!!!!!!!!!!!!!!!!حالا همه میگن علی آقا حق داشتته بیچاره که با این دستخط خرچنگ قورباغه نتونه برنامه را درست بخونه...

باور کنین دستخطم اینقدرام ضایع نیست.جاتون خالی ما مشهد بودیم(آقا محسن شرمنده دیر شد.دلیلش همین بود...)باور کنین این برنامه را تو ماشین نوشتتم.دیگه بهتر از این نمیشد نوشت..


نقل قول: اما هنوز یه مشکل هست این برنامه به من خروجی نمیده!

خب معلومه که خروجی نمیده....تو کدوم یکی از دستوراتتتون میخواین خروجی بگیرین؟؟!!نه جایی cout نوشتین نه چیز دیگه ای داره که بخواد خروجی بده....
این جمله را اضافه کنین:(قبل از cin.get(); )

cout<<"there are "<<n<<str2<<"in this text";

این جمله خروجی را برای شما نمایش میده.


نقل قول: بعضی جاهاش اشتباه تایپی بود که درست کردم

هنوزم اشتباه تایپی داره:
cout<<"please enter your type"<<endl;
type اینجا معنی نمیده...من نوشتم text
البته این اشتباه تاثیری توی اجرا نداره...

ولی یک اشتباه دیگه که کلا برنامه را میریزه به هم...در قسمت:
..
.
.
.
j=0;
while(str1[i] != '\0')
i++;
}
else
.
.
.
توی دستور('while(str1[i] != '\0 اشتباه نوشتین..باید اینطوری اصلاحش کنین:

(' '=![while(str1[i اگه دستنوشتمو دیدین ،منظورم از اون علامت،blankبوده که با این علامت نشونش میدن...(همون space)
۲۹-آذر-۱۳۸۷, ۲۲:۱۸:۳۰
ارسال‌ها
پاسخ
تشکر شده توسط : ΛΛ Θ l-l $ Σ Ω, t3r!p3000
mahbooob آفلاین
كاربر دو ستاره
**

ارسال‌ها: 221
موضوع‌ها: 24
تاریخ عضویت: شهریور ۱۳۸۷

تشکرها : 1422
( 2312 تشکر در 367 ارسال )
ارسال: #18
RE: جستجوی یک کلمه در متن
mrn_xp نوشته است:سلام من ایم کد رو گذاشتم ولی به قسمت char str2[]; مشکل داره اجرا نمیگیره

اگه سایز آرایه را براش تعریف کنین درست میشه..مثل اینکه آقا محسن تو برنامشون نوشتتن....



فکر نمیکنم دیگه برنامه مشکلی داشتته باشه.
توی این برنامه باید حالتای مختلفی را در نظر میگرفتین برای جواب دادنش...
مثلا:
- اگه اول متن blank داشته باشه...
- اگه بین کلمات داخل متن بیش از یک blank باشه..
- اگه کلمه ی مورد جستتجو حروف اول یک کلمه ی دیگه باشه
- اگه کلمه ی مورد جستتجو حروف میانی یک کلمه دیگه باشه
.
.
همه ی این حالتارو میتونین توی این جمله ببینین:
(میتونین با همین تستش کنین...اگه ایراد داشت بگین چون من نمیتونم تستش کنم)

str1:

hhhkkkgg is a is isn't dis...

str2:

is
۳۰-آذر-۱۳۸۷, ۰۰:۵۳:۵۹
ارسال‌ها
پاسخ
تشکر شده توسط : t3r!p3000, ΛΛ Θ l-l $ Σ Ω
ΛΛ Θ l-l $ Σ Ω آفلاین
کاربر با تجربه
****

ارسال‌ها: 739
موضوع‌ها: 147
تاریخ عضویت: مهر ۱۳۸۶

تشکرها : 219
( 187 تشکر در 98 ارسال )
ارسال: #19
RE: جستجوی یک کلمه در متن
دست شما درد نکنه برنامه عالیه

Exclamation
۳۰-آذر-۱۳۸۷, ۰۱:۴۲:۱۵
ارسال‌ها
پاسخ
dunker آفلاین
تازه وارد

ارسال‌ها: 4
موضوع‌ها: 1
تاریخ عضویت: خرداد ۱۳۸۸

تشکرها : 3
( 0 تشکر در 0 ارسال )
ارسال: #20
RE: جستجوی یک کلمه در متن
آقا تورو خدا یکی دوباره کامل تستش کنه من خیلی احتیاج دارم این ایراد داره
۰۸-خرداد-۱۳۸۸, ۲۳:۲۱:۳۷
ارسال‌ها
پاسخ
mahbooob آفلاین
كاربر دو ستاره
**

ارسال‌ها: 221
موضوع‌ها: 24
تاریخ عضویت: شهریور ۱۳۸۷

تشکرها : 1422
( 2312 تشکر در 367 ارسال )
ارسال: #21
RE: جستجوی یک کلمه در متن
(۰۸-خرداد-۱۳۸۸, ۲۳:۲۱:۳۷)dunker نوشته است: آقا تورو خدا یکی دوباره کامل تستش کنه من خیلی احتیاج دارم این ایراد داره

چه خطایی میده؟ولی درسته ها...

برای کشف اقیانوسهای جدید باید شهامت ترک ساحل داشت

Tongue

۰۹-خرداد-۱۳۸۸, ۰۷:۲۴:۴۰
ارسال‌ها
پاسخ
dunker آفلاین
تازه وارد

ارسال‌ها: 4
موضوع‌ها: 1
تاریخ عضویت: خرداد ۱۳۸۸

تشکرها : 3
( 0 تشکر در 0 ارسال )
ارسال: #22
RE: جستجوی یک کلمه در متن
تعداد دفعات تکرار رو اشتباه چاپ میکنه
شما رشته های مختلف بش بده
۰۹-خرداد-۱۳۸۸, ۲۳:۲۴:۰۰
ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  پیدا کردن کلمه در یک متن matha.a 6 5,956 ۲۶-دى-۱۳۹۵, ۱۰:۰۱:۵۵
آخرین ارسال: babyy
Exclamation [سوال] جستجوی دودویی با استفاده از اشارگرها در زبان C mitra.kh 1 4,178 ۲۴-فروردین-۱۳۹۰, ۱۴:۳۶:۴۰
آخرین ارسال: mitra.kh

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 5 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS