PDA

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();
}


موفق باشید .