View Full Version : سوال: تبديل is به are
hsnm8869
یک شنبه 26 اردیبهشت 1389, 08:30 صبح
ايراد كد زير كه is هاس يك رشته را به are تبديل مي كند چيست؟
for(int i=0;i<strlen(b);i++)
if((b[i]==' ') && (b[i+1]=='i') && (b[i+2]=='s') && (b[i+3]==' '))
{
for(int j=i+3;j<strlen(b);j++)
b[j+1]=b[j];
b[i+1]='a';
b[i+2]='r';
b[i+3]='e';
}
sh4mid
یک شنبه 26 اردیبهشت 1389, 10:23 صبح
اولین ایراد تو شرط حلقه اولته
if((b[i]==' ') && (b[i+1]=='i') && (b[i+2]=='s') && (b[i+3]==' '))
ممکنه
b[i] تو محدوده باشه ولی قطعا مابقیشون نیستن
اگه می خواهی is ها رو are کنی از تابع replace کلاس string استفاده کن
Salar Ashgi
یک شنبه 26 اردیبهشت 1389, 12:01 عصر
یه مثال ساده با استفاده از STL :
#include <iostream>
#include <conio>
#include <string>
using namespace std;
int main(){
string str = "ali is a programmer";
string str2="was";
str.replace(4,2,str2);
cout<<str<<endl;
getch();
}
توضیح :
4 : اندیس شروع رشته is
2 : تعداد کاراکترهای رشته is
str2 : رشته ای که قرار است جایگزین شود .
موفق باشید .
saber187518
یک شنبه 26 اردیبهشت 1389, 12:03 عصر
این کدی که شما نوشتی یه مشکل که داره اینه که اگه حرفی رو که میخوای تغییر بدی اولسطر باشه و یا دقیقا آخر سطر باشه رو نمیتونه تغیر بده.
به خاطر شرط space که چک میکنه.
Salar Ashgi
چهارشنبه 29 اردیبهشت 1389, 11:35 صبح
اگه بخوایم تمام کلمات جمله رو تبدیل کنیم ، کافیه فقط از یه حلقه استفاده کنیم :
#include <iostream>
#include <conio>
#include <string>
using namespace std;
int main(){
string str = "it is good that today is sunny";
while(str.find("is")!=-1){
str.replace(str.find("is"),2,"was");
}
cout<<str<<endl;
getch();
}
موفق باشید .
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.