ايران ويج

نسخه‌ی کامل: جستجوی یک کلمه در متن
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2 3
سلام
برنامه شما رو کمی تغییر دادم به این شکل شد
کد 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 را وارد کنیم برنامه هنگ می کند.
سلام

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


نمي توني متنو با دستور 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++;
}

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

واسه همين اصلش رو مي ذارم .
(۲۹-آذر-۱۳۸۷, ۰۶:۰۸:۱۶)terip2008 نوشته است: [ -> ]

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

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

سلام من ایم کد رو گذاشتم ولی به قسمت char str2[]; مشکل داره اجرا نمیگیره
(۲۹-آذر-۱۳۸۷, ۰۶:۰۸:۱۶)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;

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)
mrn_xp نوشته است:سلام من ایم کد رو گذاشتم ولی به قسمت char str2[]; مشکل داره اجرا نمیگیره

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



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

str1:

hhhkkkgg is a is isn't dis...

str2:

is
دست شما درد نکنه برنامه عالیه
آقا تورو خدا یکی دوباره کامل تستش کنه من خیلی احتیاج دارم این ایراد داره
(۰۸-خرداد-۱۳۸۸, ۲۳:۲۱:۳۷)dunker نوشته است: [ -> ]آقا تورو خدا یکی دوباره کامل تستش کنه من خیلی احتیاج دارم این ایراد داره

چه خطایی میده؟ولی درسته ها...
تعداد دفعات تکرار رو اشتباه چاپ میکنه
شما رشته های مختلف بش بده
صفحه‌ها: 1 2 3