PDA

View Full Version : سوال: اشكال در اجرا



yalda.night
جمعه 02 تیر 1391, 13:52 عصر
با سلام به دوستان.
ميشه راهنمايي كنيد اشكال كد من كجاست؟
وقتي اجرا ميشه و پيغام ميده كه كلمه اي براي جستجو وارد كن اجازه وارد كردن كلمه رو بهم نميده!

int main(){
char text[500], searchword[20],replaceword[20] ;
int len1,len2,len3,match,i,j,k ;
clrscr();
cout<<"Enter your text:--->for end please type [end]"<<endl;
cin>>text;
do
cin>>text;
while (text == "end");
len1 = lenght(text);
cout<<"Enter your word to search:"<<endl;
cin>>searchword;
len2 = lenght(searchword);
for(i=0;i<=len1;i++)
{
match = 1;
for(j=0;j<=len2;j++)
if(searchword[j] != text[i+j])
{
match = 0;
break;
}
if(match);
{
uppercase(searchword)
{
int i;
for (i = 0; i< len2; i++)
{
if ((searchword[i] >= "a") && (searchword[i] <= "z")
searchword[i] = searchword[i] =- 32;
cout<<searchword;
}
} // Converting word to uppercase.
cout<<"Now enter your word to replace with"<<searchword<<":"<<endl;
cin>>replaceword;
len3 = len2;
}
}
return 0;
}

مسعود اقدسی فام
جمعه 02 تیر 1391, 14:43 عصر
با سلام به دوستان.
ميشه راهنمايي كنيد اشكال كد من كجاست؟
وقتي اجرا ميشه و پيغام ميده كه كلمه اي براي جستجو وارد كن اجازه وارد كردن كلمه رو بهم نميده!


int main(){
char text[500], searchword[20],replaceword[20] ;
int len1,len2,len3,match,i,j,k ;
clrscr();
cout<<"Enter your text:--->for end please type [end]"<<endl;
cin>>text;
do
cin>>text;
while (text == "end");
len1 = lenght(text);
cout<<"Enter your word to search:"<<endl;
cin>>searchword;
len2 = lenght(searchword);
for(i=0;i<=len1;i++)
{
match = 1;
for(j=0;j<=len2;j++)
if(searchword[j] != text[i+j])
{
match = 0;
break;
}
if(match);
{
uppercase(searchword)
{
int i;
for (i = 0; i< len2; i++)
{
if ((searchword[i] >= "a") && (searchword[i] <= "z")
searchword[i] = searchword[i] =- 32;
cout<<searchword;
}
} // Converting word to uppercase.
cout<<"Now enter your word to replace with"<<searchword<<":"<<endl;
cin>>replaceword;
len3 = len2;
}
}
return 0;
}



کد خواناتر.

yalda.night
جمعه 02 تیر 1391, 14:50 عصر
دوستان ميشه لطفا راهنمايي كنيد!:گیج:
خيلي فوريه

مسعود اقدسی فام
جمعه 02 تیر 1391, 14:50 عصر
فلسفه استفاده از خطوط 7 تا 9 (حلقه do ... while) چیه؟

yalda.night
جمعه 02 تیر 1391, 14:52 عصر
وقتي end در متن وارد شد، ديگه متني نگيره و پيغام بده كه كلمه جستجو رو وارد كن

yalda.night
جمعه 02 تیر 1391, 15:12 عصر
برنامه به اين صورت هست كه متني رو وارد ميكنيم و بعد از وارد كردن كلمه end پيغام ميده كه كلمه‌اي براي جستجو وارد كن.
كلمه رو search ميكنه، اگر پيدا شد به حروف بزرگ نمايشش ميده و پيغام ميده كلمه براي جايگزين وارد كن.
و بعد متن رو با كلمه اي كه جايگزين كرده دوباره نشون ميده.
اين هم كدهاي من:

#include <iostream.h>
#include <string.h>
#include <stdio.h>
#include <conio.h>
int lenght(char str[])
{
int len = 0;
for(int i=0;str[i-1];i++)
len++;
return len;
}
void strcat(char1 [], char2 [])
{
int i = 0,len = 0;
while(char1 [len] != lenght(char1))
len++;
while(char2 [i]!=(char) "\0")
{
char1 [len] = char2 [i];
i++;
len++;
}
char1 [len] =(char) "\0";
}
void upper(char []);
int main(){
char text[500], searchword[20],replaceword[20],temp[500] ;
int len1,len2,len3,match,i,j,k ;
clrscr();
cout<<"-------------------------------------------------"<<endl;
cout<<" PROGRAM TO SEARCH AND REPLACE A WORD "<<endl;
cout<<"-------------------------------------------------"<<endl<<endl;
cout<<"Enter your text:--->for end please type [end]"<<endl;
cin>>text;
do
cin>>text;
while (text == "end");
len1 = lenght(text);
cout<<"Enter your word to search:"<<endl;
cin>>searchword;
len2 = lenght(searchword);
for(i=0;i<=len1;i++)
{
match = 1;
for(j=0;j<=len2;j++)
if(searchword[j] != text[i+j])
{
match = 0;
break;
}
if(match)
{
upper(searchword)
{
int i;
for (i = 0; i< len2; i++)
{
if ((searchword[i] >= "a") && (searchword[i] <= "z")
searchword[i] = searchword[i] =- 32;
cout<<searchword;
}
} // Converting word to uppercase.
cout<<"Now enter your word to replace with"<<searchword<<":"<<endl;
cin>>replaceword;
len3 = len2;
for(k=0,j= i+len2+1 ;j<=len1; j++,k++)
temp[k] = text[j];
temp[k] =(char) "\0";
for(j=0;j<len3;j++)
text[i+j] = replaceword[j];
text[i+j] =(char) "\0";
strcat(text,temp);
len1 = len1 - len2 + len3;
i = i+j;
}
}
cout<<"OUTPUT IS...:"<<endl;
cout<<text;
return 0;
}

yalda.night
جمعه 02 تیر 1391, 16:35 عصر
از دوستان كسي نيست راهنمايي كنه؟؟:ناراحت::افسرده:

مسعود اقدسی فام
جمعه 02 تیر 1391, 16:53 عصر
از دوستان كسي نيست راهنمايي كنه؟؟:ناراحت::افسرده:

شما با cin اول یه کلمه رو از کاربر می‌گیرد و بعد داخل حلقه تا زمانی که end وارد کنه هی دوباره کلمه می‌گیرید. یعنش شرط اینطوریه که اگه end وارد کنه دوباره حلقه ادامه پیدا می‌کنه و کلمه‌ای می‌خواد. برای تموم شدن حلقه باید یه چیزی غیر از end بنویسید. اونم فقط یه کلمه. یعنی هزار تا کلمه هم بنویسید فقط کلمه اول برداشته می‌شه. cin به کاراکتر فاصله حساسه و به عنوان جدا کننده استفاده می‌کنه ازش.
اگه در مورد حلقه do ... while ابهامی دارید این مطلب می‌تونه کمکتون کنه:


حلقه‌های تکرار در ++C (http://www.algorithmha.ir/post-%D8%AD%D9%84%D9%82%D9%87-%D9%87%D8%A7%DB%8C-%D8%AA%DA%A9%D8%B1%D8%A7%D8%B1-%D8%AF%D8%B1-%D8%B3%DB%8C-%D9%BE%D9%84%D8%A7%D8%B3-%D9%BE%D9%84%D8%A7%D8%B3.aspx)

مسعود اقدسی فام
جمعه 02 تیر 1391, 16:55 عصر
در واقع کد شما از ابتدای تابع اصلی تا قسمتی که از کاربر درخواست یه کلمه برای جستجو می‌ده بر اساس اون چیزی که می‌خواید باشه اشتباهه. چون فقط از کاربر یه کلمه رو دریافت می‌کنه، نه یه جمله. روش دریافت کلمه end به عنوان اختتام هم درست نیست.
بعد از درست شدن این قسمت به ادامه‌ی کد می‌رسیم که باید تغییر کنه.

yalda.night
جمعه 02 تیر 1391, 19:54 عصر
ok.
ممنون از راهنماييتون.بله همينطور بود.