PDA

View Full Version : سوال: معکوس و تفریق دو رشته



a.safari
پنج شنبه 01 خرداد 1393, 12:43 عصر
با سلام ، اگه ممکنه یه برنامه ساده به زبان سی ++ میخوام.. کلاسی به اسم full string توش تعریف شده باشه.
تابع اول کلاس باید 2 تا اسم از کاربر بگیره اونارو از هم دیگه کم کنه، مثلا alireza , reza خروجی نشون بده ali، یا mohammad و m خروجی = ohaad. برنامه این رو یکی از دوستان زحمتشو کشیدن اما خیلی طولانیه.


#include <iostream>
#include <conio.h>
class string
{
public:
char string[1001];
operator = (char *a)
{
string[(strlen(a)>1000?1000:strlen(a))]=0;
for (unsigned int i=0;i<(strlen(a)>1000?1000:strlen(a));i++)
string[i]=a[i];
}
};
unsigned int strlen (string a)
{
return strlen(a.string);
}
long int instring(string a,string b)
{
unsigned int similarity_rate=0,a_len=strlen(a),b_len=strlen(b);
for (unsigned int i=0;i<a_len;i++)
{
for (unsigned int j=0;j<b_len;j++)
{
if (i+j>a_len)
break;
if (a.string[i+j]==b.string[j])
similarity_rate++;
else
break;
}
if (similarity_rate==b_len)
return i;
similarity_rate=0;
}
return -1;
}
L_shift(string *a,unsigned int start,unsigned int len)
{
unsigned int a_len=strlen(a[0]);
for (unsigned int i=start;i<a_len;i++)
{
if (i+len>a_len)
break;
a[0].string[i]=a[0].string[i+len];
}
a[0].string[a_len-len]=0;
}
void main()
{
char a[1000],b[1000];
string str_a,str_b;
cin>>a>>b;
str_a=a;
str_b=b;
long int location_in_str=instring(str_a,str_b);
while (location_in_str>-1)
{
L_shift(&str_a,location_in_str,strlen(b));
location_in_str=instring(str_a,str_b);
}
cout<<str_a.string;
getch();
}

تابع دوم کلاس هم یک کلمه رو از کاربر بگیره معکوس اون کلمه رو با اصلش میکس کنه خروجی بده. مثلا alireza .. خروجی = a A z L e I r R i E l Z a A اینو نشون بده. یا ali خروجی = ia ll i a (یعنی ali و ila رو با هم میکس کنه). ( برنامه معکوس رشته رو بلدم اما تو خروجیش موندم چجوری هر دو آرایه رو میکس کنم چاپ شه).

(while(c=1) printf(cpp=0
پنج شنبه 01 خرداد 1393, 19:13 عصر
سلام.
بهتره که پُستتون رو ویرایش کنید و برنامه ای که نوشتید رو بهش اضافه کنید، تا در قسمت هایی از برنامه که به مشکل برخوردید کمکتون کنیم.
در غیر این صورت به گمونم مدیر بخش این تاپیک رو حذف کنه.

(while(c=1) printf(cpp=0
پنج شنبه 01 خرداد 1393, 23:21 عصر
ممنون که برنامه رو پُست کردید.
به این خاطر که برنامه در زبان ++C هست، بهتره که منتظر بچه های ++C باشید تا راهنماییتون کنن.
ضمنا بهتره که نام کامپایلری که ازش استفاده می کنید رو ذکر کنید.
درضمن، نحوه سوال کردن شما و ترکیب کدهای نوشته شده در این برنامه کثیفه. کلمات بهم چسبیدن، یا با فاصله هستن. همچنان بهتر بود توضیحی (Comment) برای کدهاتون می گذاشتید. برنامه هایی با طول کدهای دراز، بهتره که همراه با Comment پُست بشن تا دوستان بهتر و زودتر بفهمن.