PDA

View Full Version : سوال: مشکل ورودی



sayeh1991
یک شنبه 15 فروردین 1389, 13:57 عصر
این چند خط از یه برنامس ولی از خط یکی مونده به آخرش اجرا نمیشه ...کسی میدونه مشکلش چیه؟



char admin,adminpass;
cout<<"Please Enter Your User Name:"<<endl;
cin>>admin;
web->writers=new char*[admin];

cout<<"Please Enter Your Password:"<<endl;
cin>>adminpass;
web->passwords=new char*[adminpass];

mahsa1990
یک شنبه 15 فروردین 1389, 17:08 عصر
خب چرا web را تعريف نكردين؟

sayeh1991
یک شنبه 15 فروردین 1389, 22:44 عصر
این کار رو کردم...
گفتم که فقط چند خط ورودیه. ورودی اول رو می گیره ولی adminpassرو run time eror میده.

clover
دوشنبه 16 فروردین 1389, 01:31 صبح
لطف کنید رابط کلاس web یا کد کامل را بذارید تا بهتر بشه راهنمایی کرد.

اما در همین کد شما هم ایراداتی وجود داره :
admin یک کاراکتر هست پس استفاده از اون به شکل زیر بی معنی هست :

new char*[admin]
در واقع شما با این دستو دارید فضای لازم برای آرایه ای از نوع اشاره گر به char و به طول admin تعریف می کنید.

کاری که قصد دارید انجامش را دارید را توضیح بدید تا بشه راجع به نحوه ی صحیح انجام دادنش راهنمایی کرد.

sayeh1991
دوشنبه 16 فروردین 1389, 01:40 صبح
#include<iostream>
#include<cstring>
using namespace std;
char search(char char1[10],char char2[10]);
int main()
{
struct post
{
char* title;
char* text;
char* writer;
int day;
int month;
int year;
int min;
int hour;
};

struct blog
{
char* name;
char** writers;
char** passwords;
post* posts;
blog** friends;
int deleted;
};
blog blogs[100];
//part 1
blog*web;
cout<<"Please Enter The Name Of Your Weblog:"<<endl;
web=new blog;
int n=0;
gets(web->name);
n++;
if (n>=100)
cout<<"not enough memory"<<endl;
delete web;
/*while(search)
{
delete web;
n--;
web=new blog;
cout<<"This Name Is Repetitive!"<<endl;
cin>>web->name;
n++;
}*/
char admin,adminpass;
cout<<"Please Enter Your User Name:"<<endl;
cin>>admin;
web->writers=new char*[admin];

cout<<"Please Enter Your Password:"<<endl;
cin>>adminpass;
web->passwords=new char*[adminpass];

web->deleted=0;


:گریه:

clover
دوشنبه 16 فروردین 1389, 02:27 صبح
در حال حاضر فرصت تصحیح کدتون را ندارم اما مواردی که به ذهنم میرسه را براتون میگم :

1- title ، text و writer فقط اشاره گر هستند و نمی تونید در اونها رشته ذخیره کنید . یا باید به صورت آرایه تعریف شوند یا به صورت پویا برای آنها حافظه تخصیص داده شود. دقت کنید که با تعریف یک آبجکت از ساختار post ، اشاره گر ها ایجاد می شوند و نه آرایه ها یا فضایی برای نگهداری رشته. این در مورد ساختار blog هم صادقه.

2 - از (...)gets استفاده نکنید. این تابع هیچ نظارتی بر روی تعداد کاراکتر ورودی ندارد. از متد های get یا getline از آبجکت cin استفاده کنید.

3- admin فقط یک کاراکتر هست. برای گرفتن نام که یک رشته هست باید از آرایه ها استفاده کنید.

4 - موردی که در پست قبلی هم اشاره شد استفاده غیر صحیح از عملگر new در این خط هست :

web->writers=new char*[admin];

amin1softco
دوشنبه 16 فروردین 1389, 08:52 صبح
ببین شما باید اول فضا اختصاص بدین مثلا من در کد شما این خط رو اضافه کردم دیگه اخطار نداد


web->name = (char *) malloc(100) ;


char search(char char1[10],char char2[10]);
int main()
{
struct post
{
char* title;
char* text;
char* writer;
int day;
int month;
int year;
int min;
int hour;
};

struct blog
{
char* name;
char** writers;
char** passwords;
post* posts;
blog** friends;
int deleted;
};
blog blogs[100];
//part 1
blog*web;
cout<<"Please Enter The Name Of Your Weblog:"<<endl;
web=new blog;
int n=0;

web->name = (char *) malloc(100) ;


gets(web->name);

n++;
if (n>=100)
cout<<"not enough memory"<<endl;
delete web;
/*while(search)
{
delete web;
n--;
web=new blog;
cout<<"This Name Is Repetitive!"<<endl;
cin>>web->name;
n++;
}*/
char admin,adminpass;
cout<<"Please Enter Your User Name:"<<endl;

cin>>admin;

web->writers=new char*[admin];

cout<<"Please Enter Your Password:"<<endl;
cin>>adminpass;
web->passwords=new char*[adminpass];

web->deleted=0;
}


در ضمن char خیلی با char* متفاوته این خط مورد داره


char admin,adminpass;

یعنی فقط یک کارکتر را از ورودی می خونه
بهتره از string استفاده کنید........

اینها نظرات شخصی منه شاید اشتباه باشه

sayeh1991
سه شنبه 17 فروردین 1389, 00:40 صبح
کاری که قصد دارید انجامش را دارید را توضیح بدید تا بشه راجع به نحوه ی صحیح انجام دادنش راهنمایی کرد.

ببینین میخوام یه سیستم مدیریت وبلاگ طراحی کنم...حالا نمی دونم چه طوری باید نام نویسنده ها و پسورد ها رو نگه داری کنم...مشکل اصلی هم کار با اشاره گر دوتاییه.

sayeh1991
چهارشنبه 18 فروردین 1389, 02:44 صبح
کسی نمیتونه کمک کنه؟!