PDA

View Full Version : یکی از تمرینات دایتل &دایتل



ehsan_faal
دوشنبه 09 تیر 1393, 15:39 عصر
سلام.من تازه شروع کردم با ++C کار کنم.این برنامه رو نوشتم ،یکم مشکل دارم،کمکم کنید لطفا:
1-میخوام واسه اعداد بزرگتر هم جواب بده.
2-واسه خروجش هر وقت n زدم یه ضرب خارج شه(دیگه press any key to continue نیاد).
3-با هر بار اجرا صفحه پاک شه(clrscr کار نمیکنه چرا؟)
ممنون

#include <iostream>
using namespace std;
int main()
{
long int j, i, Num,Num1,Num2,tavan=1;
char ans='y';
while(ans=='y'|ans=='Y')
{
cout<<"Enter A Number: ";
cin>>Num;
for (i=1;i<=30;i++)
{
tavan*=10;
if (Num/tavan==0)
{
cout<<"Tedade Arqam="<<i<<endl;
break;
}

}
for (j=1;j<=i;j++)
{
tavan=tavan/10;
Num1=Num/tavan;
Num2=Num%tavan;
Num=Num2;
cout<<"The Digits Are:"<<" "<<Num1<<endl;
}
cout<<"\n\n"<<" Do You Wanna To Continue? ";
cin>>ans;
}
}

emadrezvani
دوشنبه 09 تیر 1393, 16:40 عصر
1. اعداد تا چه حد بزرگ ؟! یه جمله ؟
2. کد شما زمانی که عدد رو دریافت میکنه میگه میخوای دوباره ادامه بدی یا نه که با وارد کردن y حلقه دوباره شروع به کار میکنه.منظور شما اینه که یک بار عمل کنه؟
3. پاک کردن صفحه بستگی به محیط و کامپایلر شما داره که چه تابعی بکار ببرید.

ehsan_faal
دوشنبه 09 تیر 1393, 16:55 عصر
مثلا تا 50رقم.
2-وقتی n رو میزنم باز هم باید یه کلید دیگه رو بزنم تا خارج شه که میخوام اینطور نباشه
3-من از Visual Studio 2010 استفاده میکنم.

emadrezvani
دوشنبه 09 تیر 1393, 17:16 عصر
بهتره شما بجای دریافت یک عدد از کاربر یک رشته دریافت کنید(محدودیت مقدار متغیر)
خیر. یک بار کافی هست. شما خارج از محیط VS تست کنید.

amirtork
دوشنبه 09 تیر 1393, 22:31 عصر
سلام
همونطور که دوستان دیگه هم اشاره کردن، برای اینکه شما اعداد بسیار بزرگ رو بتونید باهاشون کار کنید، نیاز دارید که به جای اعداد عادی، از نوع جدید از اعداد استفاده کنید که به Big Num معروف هستند، و معمولا هم خودتون باید این نوع رو بنویسید(هرچند احتمالا باید توی ورژن های جدید سی پلاس پلاس تعریف شده باشه).
اما برای سوالتون که پرسیدید: میخوام وقتی n رو زدم از برنامه خارج بشه، شما میتونید کدتون رو به شکل زیر اصلاح کنید:


#include <iostream>
using namespace std;
int main()
{
long int j, i, Num,Num1,Num2,tavan=1;
char ans='y';
while(ans=='y'|ans=='Y')
{
cout<<"Enter A Number: ";
cin>>Num;
for (i=1;i<=30;i++)
{
tavan*=10;
if (Num/tavan==0)
{
cout<<"Tedade Arqam="<<i<<endl;
break;
}

}
for (j=1;j<=i;j++)
{
tavan=tavan/10;
Num1=Num/tavan;
Num2=Num%tavan;
Num=Num2;
cout<<"The Digits Are:"<<" "<<Num1<<endl;
}
cout<<"\n\n"<<" Do You Wanna To Continue? ";
cin>>ans;
if(ans=='n')
return 0;
}
}


همچنین در مورد سوال آخرتون که پرسیدید : صفحه رو چجوری میشه پاک کرد، و از اونجایی که از ویندوز استفاده میکنید، میتونید از تابع system("PAUSE"); استفاده کنید. و در ضمن تابعی هم که خودتون برای پاک کردن صفحه مثال زدید در کتابخانه ی conio.h هست و از اونجایی که این کتابخانه استاندارد نیست، بهتون پیشنهاد نمیکنم ازش استفاده کنید.

a.r.khoshghalb
شنبه 14 تیر 1393, 07:27 صبح
همچنین در مورد سوال آخرتون که پرسیدید : صفحه رو چجوری میشه پاک کرد، و از اونجایی که از ویندوز استفاده میکنید، میتونید از تابع system("PAUSE"); استفاده کنید. و در ضمن تابعی هم که خودتون برای پاک کردن صفحه مثال زدید در کتابخانه ی conio.h هست و از اونجایی که این کتابخانه استاندارد نیست، بهتون پیشنهاد نمیکنم ازش استفاده کنید.

البته منظور جناب amirtork این بود :
system("CLEAR");

amirtork
شنبه 14 تیر 1393, 11:22 صبح
واقعا از جناب a.r.khoshghalb تشکر میکنم :)
بله من حواسم نبود به جای system("PAUSE") باید از system("CLEAR"); یا از system("CLS"); استفاده کنید.
من پست قبلیم رو ویرایش نمیکنم تا پست جناب a.r.khoshghalb بی مورد نباشه :)

emadrezvani
شنبه 14 تیر 1393, 20:32 عصر
بجز در موارد خاص و ثابت - من استفاده از این روش رو پیشنهاد نمی کنم. بهتره در صورت وجود از توابع استاندارد استفاده بشه.