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 صبح
کسی نمیتونه کمک کنه؟!
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.