PDA

View Full Version : سوال: کمک ( کسی می تونه این تابع رو درست کنه )



lolojoon
جمعه 27 اردیبهشت 1387, 11:21 صبح
:قلب:سلام به همه دوستای گلم
من یک برنامه نوشتم که String.h را شبیه سازی می کنه ( به کمک عملگر های ریاضی در C++ )
می خواستم ببینم کسی می تونه کمک کنه تا مشکل این برنامه رو حل کنم
من هر سبکی تابعی برای گرفتن اطلاعات از ورودی در برنامه قرار می دم Error می ده
کد برنامه رو می ذارم ممنون می شم کسی کمک کنه .

#include <iostream.h>
#include <string.h>
#include <conio.h>
#include <ctype.h>
class str{
public:
void str::operator=(char sec_str[100]);
void input_data (char str1[100],char str2[100]);
char the_str[100];
str(char *init_str);
str operator+(str sec_str);
str operator=(str sec_str);
};
str::str(char *init_str)
{
strcpy(the_str,init_str);
}
str str::operator+(str sec_str)
{
str internal_str("\0");
strcpy(internal_str.the_str,the_str);
strcat(internal_str.the_str,sec_str.the_str);
return internal_str;
}
void str::operator=(char sec_str[])
{
strcpy(the_str,sec_str);
}
void input_data (char str1[],char str2[])
{
cin >> str1;
cin >> str2;
}
str str::operator=(str sec_str)
{
strcpy(the_str,sec_str.the_str);
return *this;
}
ostream &operator<<(ostream &stream,str a_str)
{
cout <<a_str.the_str;
return stream;
}
main()
{
str my_str("\0"),str1("Hello"),str2("World\n");
//input_data(str1[100],str2[100]);
str1="C++";
str2=" Good Programming";
my_str=str1+str2;
cout <<my_str;
getche();
return 0;
}

یک تابع دیگه هم دارم می نویسم که برای برنامه یک کتابخانه درست کردم
برای فراخوانی این کتابخانه کدام روش درسته :

#include <string1.h>
یا
#include " string1.h"

البته این "" برای String1 هستش
واقعا ممنون می شم کسی کمک کنه :قلب:

raven1997
جمعه 27 اردیبهشت 1387, 11:46 صبح
کد بالا زیاده فعلا وقت ندارم بخونم ولی در جواب سوال دومت بگم که هر header که خود برنامه نویس بنویسه باید داخل " " همراه با آدرس دقیق اون فایل باشه .
موفق باشی:تشویق:

emad_67
جمعه 27 اردیبهشت 1387, 13:02 عصر
من هر سبکی تابعی برای گرفتن اطلاعات از ورودی در برنامه قرار می دم Error می ده برای تابعinput_data تعریف کردی که 2 پارامتر از نوع char دریافت کنن ولی تو فراخوانی بهش 2 تا شی از کلاس رو دادی.
بدنه تابع:


void input_data (char str1[],char str2[])
موقع فراخوانی:


input_data(str1[100],str2[100]);
str1 و str2 دو شی از کلاس هستند بنابراین نوشتن str[100] کاملا بی معنی هست.
مشکل دیگه اینه که این تابع رو در بدنه کلاس تعریف کردی و نمیشه همینجوری از اون در main استفاده کنی.
یعنی برای استفاده باشد یه شی داشته باشی و بعد تابع رو از طریق اون شی فراخوانی کنی.
من دقیقا نفهمیدم کار این تابع چیه؟ و چرا 2 تا رشته رو بهش ارسال کردی؟ اگه برای مقدار دهی به یک شی هست پس چرا 2 رشته ارسال کردی. دقیق تر توضیح بده که میخوای چیکار کنی.
پ ن: میتونی برای گرقتن مقدار رشته هر شی، عملگر << رو برای cin سربارگذاری کنی.

lolojoon
جمعه 27 اردیبهشت 1387, 22:16 عصر
سلام دوست عزیز
من باید برنامه بنویسم که که مثلا اگر در برنامه عملگر + را بین دو متغیر رشته قرار دادم عملگر + کار تابع strcat رو انجام بده .
و همین طور کلیه تابع های مربوط کتابخانه String.h را با عملگرهای ریاضی پیاده سازی کنم
//----------------------------
من تو برنامه یک کلاس تعریف کردم که با استفاده از operator عملگرها را دوباره بتونم تعریف کنم
ولی نمی تونم برنامه رو طوری تنظیم کنم که بتونم از ورودی دو عبارت رشته ای بگیرم و اون 2 عبارت کار کنم
الان مجبورم تو برنامه به str1 و str2 مقدار ثابت بدم .
اگه ممکنه کمکم کنید تا بتونم این مشکل رو برطرف کنم
کد برنامه ای رو هم که نوشتم گذاشتم ( تو پست قبلیم )
**********************************************:گ یه::گریه::گریه:
می دونم خیلی ساده است ولی من الان اصلا مغزم کار نمی کنه
//-------------------------------------------------------------------
بخصوص که 2 تا برنامه دیگه هم باید با مطلب بنویسم و تحویل بدم

emad_67
جمعه 27 اردیبهشت 1387, 23:26 عصر
ولی نمی تونم برنامه رو طوری تنظیم کنم که بتونم از ورودی دو عبارت رشته ای بگیرم و اون 2 عبارت کار کنم
الان مجبورم تو برنامه به str1 و str2 مقدار ثابت بدم . برای اینکه از ورودی مقدار رو بگیری مثل عملگر >> که برای cout سربار گذاری کردی باید عملگر << رو برای cin هم سربار گذاری کنی. و بعد در main بنویسی:


cin>>str1;

wonder_man
دوشنبه 13 خرداد 1387, 10:04 صبح
اگه منظورت از کدهای بالا اینه که جمع دو رشته را بازگذاری مجدد کنید به کمک عملگرها +،- من همچین برنامه ای را نوشتم ذر اولین فرصت بارت میزارمش