PDA

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



morika
دوشنبه 20 اردیبهشت 1389, 17:01 عصر
سلام به همه دوستان

راستش من این برنامه رو نوشتم ولی نمی دونم چرا مشکل داره.
راستش یه منو نوشتم که اولین دستور رو درست انجام میده. یعنی شماره 1
ولی وقتی برنامه از شما می پرسه که می خواین ادامه بیدن یا نه
بعش که دستور دوم رو به منو میدیم یعنی شماره 2 نمی دونم چرا به جای اینکه دستور 2 رو اجرا کنه از برنامه میاد بیرون.

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

x.xoma
دوشنبه 20 اردیبهشت 1389, 22:35 عصر
سلام دوست عزیز.

اولا برنامه شما روی سیستمتان اجرا میشود؟

ثانیا ؛ اگر اجرا میشود ؛ شا میتوانید نام دلخواه را وارد کنید؟(یعنی پس از انتخاب گزینه 1 و درخواست وارد نمودن نام ؛ میتوانید چیزی وارد کنید و هیچ اتفاقی نمی افتد؟)

morika
دوشنبه 20 اردیبهشت 1389, 22:49 عصر
من واقعا معذرت می خوایم فایل خراب بود ولی اصلاحش کردم
بله
برنامه کار می کنه ولی یه مشکلی هست
وفتی برای بار اول منو رو اجرا می کنید دستور اجرا میشه و بعد از شما می پرسه که می خواین ادامه بدید یا نه.
وقتی شما گزینه Y رو وارد می کنید دوباره منو ظاهر میشه. ولی اینبار زمانی که شما یکی دیگه از آیتم های منو رو انتخاب می کنید به جای اینکه دستور رو انجام بده از برنامه خارج می شه
مشکل اینه

tdkhakpur
دوشنبه 20 اردیبهشت 1389, 23:26 عصر
کد main تان را به شکل زیر اصلاح کنید.


void main()
{
//menu=====================
int m;
char name[30],len=6;
do{
m=menu();
//=========================
switch(m)
{
case 1:
enter(name);
break;
case 2:
print(name,len);
break;
}
}while(m!=6);// if not 6 then continue
}

morika
سه شنبه 21 اردیبهشت 1389, 01:25 صبح
کد main تان را به شکل زیر اصلاح کنید.


void main()
{
//menu=====================
int m;
char name[30],len=6;
do{
m=menu();
//=========================
switch(m)
{
case 1:
enter(name);
break;
case 2:
print(name,len);
break;
}
}while(m!=6);// if not 6 then continue
}


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

sh4mid
سه شنبه 21 اردیبهشت 1389, 02:55 صبح
سلام
ببین کدت رو اینجوری اصلاح کن



#include <iostream>
#include <conio.h>
#include <cstdlib>
#include <cstring>
#include <cstdio>

using namespace std;

int iSelectedItm=0;
const int MAX_LENGTH=80;

//MENU============================================== ============================

int menu()
{
int x;
cout<<"Please select on of the applications:\n\n";
cout<<" 1.Inter the Names\n";
cout<<" 2.Print the Names\n";
cout<<" 3.Sort the Names\n";
cout<<" 4.Search a Names\n";
cout<<" 5.Update a Names\n";
cout<<" 6.Exit\n\n";
cout<<"Your select is: ";
cin>>x;
return x;
}

//EXIT============================================== ============================

int exitme()
{
char ch;
int m;

cout<<"\n\nDo you want to comtinue? Y/N: ";
cin>>ch;

switch(ch)
{
case 'Y':
case 'y':
cout<<"\n\n";
iSelectedItm=menu();
break;

case 'N':
case 'n':
exit(0);

default:
exitme();
break;
}

}

//ENTER NAMES============================================= ======================

void enter(char nam[][MAX_LENGTH])
{
for(int i=1;i<6;i++)
{
cout<<"Please enter name "<<i<<": ";
cin>>nam[i];
}
/*int e=8*/exitme();
}

//PRINT NAME============================================== ======================

void print(char nam[][MAX_LENGTH],int length)
{
for(int i=1;i<6;i++)
cout<<nam[i]<<"\n";

/*int e=*/exitme();
}

//MAIN============================================== ============================

void main()
{
//menu=====================

//int m;
iSelectedItm=menu();
//=========================

char name[6][MAX_LENGTH],len=6;
do{
switch(iSelectedItm)
{
case 1:
enter(name);
break;
case 2:
print(name,len);
break;
}
}while(iSelectedItm!=6);



}







مشکل برنامه ات این بود که اون متغیری که انتخاب شماره Menu توسط کاربر رو می ده همون m که من تغییرش دادم به iSelectedItm باید بصورت عمومی تعریف بشه(البته روش های دیگری هم هست ولی این روش سریع ترین روش حل برنامه ات بود) چون m رو همه جا به صورت Local تعریف کرده بودی اون مشکل پیش می اومد


بعش که دستور دوم رو به منو میدیم یعنی شماره 2 نمی دونم چرا به جای اینکه دستور 2 رو اجرا کنه از برنامه میاد بیرون.درسته دفعه دوم عدد 2 رو انتخاب می کردی ولی m رو صدجا تعریف کردی و هرجا هم m بازه(scope) خودشو داشت و تغییر تو یکی اون یکی رو عوض نمی کرد

مشکل دیگه ات این بود که می خواستی چندتا رشته رو بگیری این یعنی یک آرایه 2 بعدی از Char نه یک آرایه تک بعدی

سعی کن اسم توابعی که ایجاد می کنی هم اسم توابع استاندارد C نباشه
exit--->exitme

در ضمن Enter نه Inter :لبخند:

morika
سه شنبه 21 اردیبهشت 1389, 11:49 صبح
خیلی ممنون از جواب کاملتون.
واقعا تشکر

در ضمن : Inter = مدفون کردن Enter = وارد کردن

تشکر

morika
سه شنبه 21 اردیبهشت 1389, 12:30 عصر
راستش من هرکاری کردم ای کد شما بازم error میده
خیلی error داره

sh4mid
سه شنبه 21 اردیبهشت 1389, 16:48 عصر
دقیقا چه خطایی؟پیغام رو بنویس؟
Compiler مورد استفاده ات چیه؟

tdkhakpur
سه شنبه 21 اردیبهشت 1389, 19:10 عصر
ولی اگه خودتون این کد رو اجرا کنید پی به اشکالش می برین
به چیه کد پی ببرم دو خط ساده برای برنامه شما اضافه کردم که ایراد هم نداره این اشکالها از برنامه خودتان باید باشه نه دو خط کد من!
شما تقاضای زیر را کرده بودید که انجام داده شد.


وقتی شما گزینه Y رو وارد می کنید دوباره منو ظاهر میشه. ولی اینبار زمانی که شما یکی دیگه از آیتم های منو رو انتخاب می کنید به جای اینکه دستور رو انجام بده از برنامه خارج می شه