PDA

View Full Version : سوال: ایجاد رشته در c++



Ali Safaei
شنبه 04 دی 1389, 12:04 عصر
من با turbo c++ کار میکنم
چطوری میشه یه متغیر معرفی کرد که بتونه جمله رو با هر تعداد کارکتر قبول کنه
درست مثل string
نمیدونم چرا وقتی <string.h> یا <cstring.h> رو معرفی میکنم نمیتونم از string str; استفاده کنم؟؟؟!!!


لطفا کمکم کنییییییییییییییین
میدونم اینجا چهار راه نیس!!!!

voiceoffox
شنبه 04 دی 1389, 12:35 عصر
من با turbo c++ کار میکنم
چطوری میشه یه متغیر معرفی کرد که بتونه جمله رو با هر تعداد کارکتر قبول کنه
درست مثل string
نمیدونم چرا وقتی <string.h> یا <cstring.h> رو معرفی میکنم نمیتونم از string str; استفاده کنم؟؟؟!!!

یعنی مثلا میخواین کلمه Ali رو تو یه متغیرمثل aذخیره کنن ؟ این که ساده اس. فکر کنم منظورتون چیزپیچیده تری باشه که من نمیفهمم. :اشتباه:

اما بهر حال اگه منظورتون اونیه که من گفتم ... باید این کارو بکنن :


char a[3]


که اون عدده تو آکولاد مشخص کننده تعداد کاراکتر های کلمه است ...

rexi1r
شنبه 04 دی 1389, 14:53 عصر
سلام بر تو ای دوست عزیز من فکر کنم منظور تو اینه که یه رشته باشه که هر تعداد کاراکتر ما خواستیم بگیره درسته برای این روش دو راه وجود داره یه راه زیرآبی و یه راه اصلی راه زیر آبی اینه که تو یه آرایه درست کنی با دو یا سه هزار کاراکتر چون به احتمال زیاد اون شخص تا این حد جمله رو وارد نمی کنه بعد از اینکه این آرایه رو تعریف کردی باید بشماری ببینی که چند کاراکتر رو وارد کرده بعد دیگه هر کاری بخوای میتونی با این آرایت بکنی به این دلیل می شماری چون خود ++c بقیه آرایه رو مقدار میده بعد واسه یه عملیات مثل مقاییسه دچار مشکل میشی چون بقیه آرایه مقدارهای نامفهومی هستن پس روش اول اینه
char s[2000];
cin>>s;
strlen(s);

خوب حالا میریم سراغ روش دوم اینه که یه آرایه پویا تعریف کنی که من اونو خوب بلد نیستم امیدوارم بدردت خورده باشه

Pouri_sb
شنبه 04 دی 1389, 17:45 عصر
LTR]
char s[2000];
cin>>s;
strlen(s);[/LTR]



بهتره از دستوره زیر برای گرفتنه متغیر استفاده کنی:


cin.get(s,1000)

دلیلش یادم نیست اما تو اون دستور اولی یادمه به ارور می خوردی، رشته رو درست نمی گرفت

مدل اشاره گریشم به لیست پیوندی نیاز داره که فکر نکنم هنوز اجازه استفادشو داشته باشین، اگه میخواین بگم؟
[

sh4mid
شنبه 04 دی 1389, 19:41 عصر
سلام
اون موقع ها که با turbo c ور می رفتیم ، نه forum بود ، نه اینترنت درست و حسابی ، در نتیجه یا باید کتاب پیدا می کردیم ، یا به Help نرم افزار اتکا می کردیم ، یادم میاد آنقدر به این Compiler علاقه داشتم که تقریبا هرروز Helpشو بالا پایین می کردم و به چیزهای جدیدی می رسیدم :لبخند: :لبخند: ، لذت می بردم از ور رفتن با این محیط (چیزهای زیادی یاد گرفتم که بعدها تو VCو MFC به دردم خورد) ، بماند این چیزی که می خواهید تو همین Compiler هم پیاده سازی شده ، بله کلاس string اینجا پیاده سازی شده ،(کلاسهای دیگری هم هست Stack, Hashtable,List,Dictionary و خیلی چیزهای دیگه ) البته الان Standard نیستند ولی اون زمان خیلی به من کمک می کرد ، همه چیز رو استاد نباید به آدم بگه ، کمی هم خودت باید تلاش کنی ، برو ایندفعه Help نرم افزار رو بررسی کن حتما پیداش می کنی :لبخند:

اینم تعریفش



String( const char _FAR * = "" );
String( const String _FAR & );
virtual ~String();
String& operator = ( const String _FAR & );
operator const char _FAR *() const;
virtual int isEqual( const Object _FAR & ) const;
virtual int isLessThan( const Object _FAR & ) const;
virtual classType isA() const
virtual char _FAR *nameOf() const
virtual hashValueType hashValue() const;
virtual void printOn( ostream _FAR & ) const;
private:
sizeType len;
char _FAR *theString;

Ali Safaei
یک شنبه 05 دی 1389, 09:59 صبح
بچه از جواباتون ممنون
اون کدی که گفته بودین:
cin.get(s,1000)
کار کرد
اما من چون دارم از کلاس استفاده میکنم نیاز دارم که بتونم از string استفاده کنم
ببینید اول فایل string.h رو معرفی میکنم بعد تو برنامم وقتی مینویسم string x باید string شناخته بشه ولی این اتفاق نمی افته
اون دوستمونم که گفته بود برو تو help من سر در نیاوردم که دقیقا چجوری میشه ازش استفاده کرد؟؟!!

Ali Safaei
یک شنبه 05 دی 1389, 12:14 عصر
میشه جواب منم بدین؟؟؟؟!!!!!

Topcoding
یک شنبه 05 دی 1389, 13:23 عصر
سلام دوست عزیز
توی++ visual C این کاری که می گی جواب می ده و متغیر از نوع string رو می شناسه ولی نمی دونم توی turbo یا borland اصلا متغیر از این نوع داریم یا خیر اگه دوست عزیز @sh4mid می دونند خوشحال می شیم مارا هم راهنمایی کنند لینک زیر مرجعی در مورد فایلهای سراینده که امیدوارم کمکت کنه
[/URL][URL]http://www.cplusplus.com/reference/ (http://www.cplusplus.com/reference/)

ali najafi
یک شنبه 05 دی 1389, 17:02 عصر
اگه منظور شما این باشه که خیلی سادس!

#include <stdio.h>
#include <conio.h>
#include <string.h>
int main()
{
char ch[1000];
int sh,s=0;
for(sh=0;sh<=1000;sh++){
ch[sh]=getche();
if(!ch[sh]){
break;
}
s+=1;
}
for(sh=0;sh<=s;sh++){
printf("\n %s",ch[sh]);
}
getch();
return 0;
}
حد اکثر 1000 کاراکتر!
البته در مورد درست کار کردنش خیلی مطمئن نیستم ها!!!

sh4mid
یک شنبه 05 دی 1389, 18:08 عصر
سلام

اون دوستمونم که گفته بود برو تو help من سر در نیاوردم که دقیقا چجوری میشه ازش استفاده کرد
خوب منظورم این بود
64149
64148

بله کلاس string که از نوع sortable مشتق شده توی strng.h تعریف شده،
البته برای اینکه کدی که می نویسی کار کنه باید تو تنظیمات Compiler دستکاری کنی
میری اینجا Options>Linker>Libraries بعد تیک گزینه Container Class رو می زنی(قابل توجه علاقمندان گرافیک تو Turbo c باید گزینه سوم رو انتخاب کنید)




#include <iostream.h>
#include <strng.h>
int main()
{


String str("HELLO_STRING_CLASS");
cout<<str<<endl;
String str2;

str2=str;

cout<<"2nd str is: "<<str2<<endl;

int x=0;

cin>>x;

return 0;
}

Ali Safaei
یک شنبه 05 دی 1389, 23:14 عصر
دوست عزیز من به Options>Linker>Libraries رفتم
گزینه Container Class رو تیک زدم
اما تغییری حاصل نشد!

Ali Safaei
دوشنبه 06 دی 1389, 11:11 صبح
دوستان عزیز دوباره سلام
میشه جوابمو بدین؟
اون کاری که گفتین رو انجام دادم اما جواب نداد

sh4mid
دوشنبه 06 دی 1389, 17:21 عصر
سلام
یعنی چی جواب نداد؟:متفکر: strng.h رو اضافه کردی؟
ببین بعد از این کار اون کدی که من صفحه قبل نوشتم باید کار کنه
راستی ببین تو اونجایی که TC رو داری باید یک پوشه ای باشه به اسم CLASSLIB ، ببین همچین پوشه ای داری؟

Ali Safaei
دوشنبه 06 دی 1389, 20:17 عصر
آره این پوشه رو دارم
کدی که میزنمو قبول نمیکنه
کدی که تو هم دادیو وارد کردم اما بازم نشد
یعنی امکان داره اشکال از فایل string.h یا strng.h باشه؟
من از ورژن 3 استفاده میکنم

sh4mid
دوشنبه 06 دی 1389, 21:20 عصر
کد من که باید کار کنه،کدتو بزار ببینم چطوریاست؟:متفکر:

Ali Safaei
دوشنبه 06 دی 1389, 22:29 عصر
#include<iostream.h>
#include<conio.h>
#include<string.h>
class GradeBook
{
public:
void displayMessage(string courseName)
{
cout<<"\nWelcome to the grade book for "<<courseName<<"!";
}
};
void main()
{
clrscr();
string nameOfCourse;
GradeBook myGradeBook;
cout<<"\nEnter the course name:\n";
cin>>nameOfCourse;
myGradeBook.displayMessage(nameOfCourse);
getch();
}

Ali Safaei
دوشنبه 06 دی 1389, 22:32 عصر
تو error میگه که string عریف شده نیس
چه تو برنامه من چه تو برنامه خودت فقط از همین چنتا خط که توش از string استفاده کردیم اشکال میگیره

Ali Safaei
سه شنبه 07 دی 1389, 10:35 صبح
sh4mid
Help Me PLZ!!!!!!!!!!!!!!!!!

Ali Safaei
سه شنبه 07 دی 1389, 14:17 عصر
ای باباااااااااااااااااا
چرا کسی جواب منو نمیده پس
کارم خیلی گیره!!!!!!!:گریه:

sh4mid
سه شنبه 07 دی 1389, 17:09 عصر
سلام
من سه ساعته دارم روضه می خونم باید از فایل strng.h استفاده کنی(نه string.h)، بعد اونو تو برنامت ننوشتی ، در ضمن اینجا شی string رو باید String تعریف کنی (اون S اولش باید بزرگ باشه)




#include<iostream.h>
#include<conio.h>
#include <strng.h>
class GradeBook
{
public:
void displayMessage(String courseName)
{
cout<<"\nWelcome to the grade book for "<<courseName<<"!";
}
};
void main()
{
clrscr();
GradeBook myGradeBook;
cout<<"\nEnter the course name:\n";
char* mycharname=new char[80];
cin>>mycharname;
String nameOfCourse(mycharname);
myGradeBook.displayMessage(nameOfCourse);
getch();
delete [] mycharname;
}

Ali Safaei
سه شنبه 07 دی 1389, 18:45 عصر
باید بگم که واقعا دیگه بریدم
string.h رو strng.h کردم
string رو String نوشتم
باز همونه که همونه

sh4mid
سه شنبه 07 دی 1389, 19:24 عصر
باز همونه که همونه
یعنی چی همونه که همونه؟الان کدی که من نوشتم بدون هیچ مشکلی داره رو سیستم من اجرا می شه
راستی مسیر کتابخانه ها رو بهش دادی؟ توی Options>Directories
64227
چه اصراری داری با این محیط مزخرف کار کنی؟:متفکر::متفکر:

Ali Safaei
چهارشنبه 08 دی 1389, 10:49 صبح
اینم جواب نداد
بیخیال
یه turbo c++ تحت ویندوز هم دارم که اونم این مشکلارو داره
میشه یه محیط معرفی کنی که هم تو ویندوز 64بیتی نصب شه هم زبان c++ باشه

MaChaChi
پنج شنبه 01 خرداد 1393, 11:34 صبح
ببخشید پس مییشه شما یه محیط رو معرفی کنید؟؟؟ من حتی لینوکس هم نصب کردم و با لینوکس کار می کنم
اما بازم میام و داخل همین توربو برنامه های سی رو تایپ می کنم
ممنون میشم یه محیط رو معرفی کنید
تشکر

(while(c=1) printf(cpp=0
جمعه 02 خرداد 1393, 20:51 عصر
ببخشید پس مییشه شما یه محیط رو معرفی کنید؟؟؟ من حتی لینوکس هم نصب کردم و با لینوکس کار می کنم
اما بازم میام و داخل همین توربو برنامه های سی رو تایپ می کنم
ممنون میشم یه محیط رو معرفی کنید
تشکر

سلام.
برای محیط ویندوز، از این لینک می تونید کامپایلر ++Dev C رو دانلود کنید. هم برای C خوبه و هم برای ++C. (http://uplod.ir/bg9890q8jg15/dev_C++‎‎%E2%80%8E%E2%80%8E%E2%80%8E%E2%80%8E% E2%80%8E%E2%80%8E%E2%80%8E%E2%80%8E_4.9.9.2_[www.cplusplus.ir].exe.htm)
برای محیط لینوکس، کامپایلرهای GCC و ++G وجود دارن که می تونید برنامه هاتون رو در یک Notepad به نام Gedit (که از قبل همراه با سیستم عامل نصب شده است) بنویسید، و توسط نرم افزار Terminal، برنامه ای که با نام program.c یا program.cpp در مسیر خاصی توسط Gedit ذخیره کردید رو اول با تعریف اون مسیر در ترمینال، دوم ذکر نام کامپایلر (GCC برای زبان سی و ++G برای زبان سی پلاس پلاس) و سوم نام برنامه (program.c یا program.cpp) نیز کامپایل کنید.

مثال برای کامپایل کردن برنامه C در Terminal:


cd ~/Documents
GCC program.c -o program
./program


مثال برای کامپایل کردن برنامه ++C در Terminal:


cd ~/Documents
G++ program.cpp -o program
./program