PDA

View Full Version : مشکل با گرفتن رشته در کلاس ها



boysilent
یک شنبه 21 آبان 1391, 10:29 صبح
سلام دوستان میخواستم طریقه گرفتن یه ارایه در کلاس رو بدونم //با توجه به اموزشهایی که خوندم این کد ها رو نوشتم بنظرتون اشکال این کد کجاست::
class string{
public:
char getch(char);
char *text;
};

char string::getch(char)
{
text=new char a[];
cout<<a;
}

int main()
{
string str;
char a[8];
cin>>a[];
str.getch(a);
cout<<str.text;
getch();
return 0;
}

اصلا خودم هم گیج شدم ممنون مشم خطا هارو بگید
با تشکر

omidshaman
یک شنبه 21 آبان 1391, 13:28 عصر
خوب این چیه که نوشتی کلا ایراده !! یک دور دیگه اموزش هاتو از اول بخون...
منبعی که برای اموزش استفاده کردی چی بوده؟
1_ اگر کد کاملتون این باشه که اصلا هدر نداره ...
2_خط 1:اسم کلاس رو عوض کنین ّاستفاده از اسمایی مثل int,char,string,... به عنوان اسم متغیر یا کلاس یا...مجاز نیست
3_ خط 3:چون که یک ارایه رو از main فرستادین به class باید
char* بزارین یا
char[]
4_خط 7 باید داخل پرانتز این باشه
char a[] شما اول استفاده از فانکشن ها رو خوب یاد بگیر بعد از کلاس استفاده کن!...
9_خط 9 هم که باید از sizeof استفاده کنی
text=new char[sizeof(a)];
اینو هم اضافه کن text=a;
10_خط 15 :خوب همون جوری که توی 2 گفتم string باید عوض بشه
11_سعی کن هیچ وقت از getch() استفاده نکنی چون استاندارد نیست حذفش کن بجاش بزار
cin.get();

مسعود اقدسی فام
یک شنبه 21 آبان 1391, 17:48 عصر
خط 17 زو کدوم کتاب نوشته؟

وقتی اجرا می‌کنید اصولا باید خطا بده و برنامه اجرا نشه. پیام‌های خطای انگلیسی رو بخونید و یکی یکی رفع کنید. یه سری رو که دوستمون گفتن.

boysilent
یک شنبه 21 آبان 1391, 21:26 عصر
واللا فک کنم کتاب رو بد خوندم راس میگن دوستان اول رشته گرفتن رو یادبگیرم::
ولی من کار با قسمت های دیگه سی رو بلدم مشکلم همین گرفتن رشته هستش

مسعود اقدسی فام
یک شنبه 21 آبان 1391, 21:41 عصر
واللا فک کنم کتاب رو بد خوندم راس میگن دوستان اول رشته گرفتن رو یادبگیرم::
ولی من کار با قسمت های دیگه سی رو بلدم مشکلم همین گرفتن رشته هستش

بحث فقط گرفتن رشته از کاربر یا ارسال به کلاس نیست. کلا شی گرایی رو باید زیاد تمرین کنید. همینطور مفاهیم تخصیص حافظه. وگرنه اون مطلب رو هر کتابی یه گوشه نوشته که با رشته چطور کار کنیم.
خود ++Cهای جدید (نه مثلا turbo) کلاس string رو با هدر string دارن. ولی اگه برای یاد گرفتن خودتون دارید می‌نویسید حتما اول شی گرایی و کلاس وتوابع سازنده و مخرب و تخصیص حافظه رو کامل بخونید و تمرین کنید.

boysilent
دوشنبه 22 آبان 1391, 09:34 صبح
من میخوام کلاس string ساده تعریف کنم..
البت یه چیزایی نوشتم ولی فک نکنک اون چیزی که میخوام باشه//ولی فک کنم باید با لیسا پیوندی باید بنویسم؟ درسته ؟
class reshte{
public:
char text[100];
char rev[50];
char get_reshte();
void print_reshte();
char size_print();
char rev_reshte();
};
///class gereftan reshte
char reshte::get_reshte()
{
cin>>text;
}
////end class gereftan reshte//

/// begin class print//
void reshte::print_reshte()
{
cout<<"reshte is: "<<text<<"\n";
}
/////end of print///
char reshte::size_print()
{
cout<<"toole reshte is :"<<strlen(text)<<"\n";
}
//////begin of revreshte
char reshte::rev_reshte()
{

int i=0,j,tool;
tool=strlen(text);
cout<<"revers is: ";
while(tool>0)
{
tool--;
cout<<text[tool];
}

}
/////end revreshte
void main()
{
reshte obj;
cout<<"Reshte ra vared namaeid \n";
obj.get_reshte();
obj.print_reshte();
obj.size_print();
obj.rev_reshte();
getch();
}

aidinMC
سه شنبه 23 آبان 1391, 11:22 صبح
اگه میخواین یه رشته رو بعنوان پارامتر به یکی از متدهای کلاس بفرستید من یه همچین چیزی رو با آرایه ها نوشتم ، نظر اساتید هم مهمه !!

#include <iostream>
#include <conio.h>
using namespace std;
class reshte {

public:
reshte(char R []);
void show();
private :
char txt[];
};

reshte::reshte (char R[]) {
int i =0;
while(R[i])
i++;
int j;
for (j = 0 ; j < i ; j++)
txt[j] = R[j];
txt[j] = NULL;
}

void reshte::show() {
cout <<"reshte ersal shode B kelas: "<< txt;
_getch();
}


void main () {

char *a;
a = new char [50];
cout << "Reshte morede nazar ra vared konid : ";
cin >> a;

reshte test(a);
test.show();


}