PDA

View Full Version : ترکیب ارقام جداگانه و تشکیل یک عدد



deopen
جمعه 04 مرداد 1387, 23:46 عصر
من تازه برنامه نویسی با cpp رو شروع کردم .من میخواستم بدونم ترکیب ارقام چه جوریه...
واضحتر بگم یک کد به برنامه زیر اضافه کنید که اعدادی که به متغیر های x,y,z نسبت داده میشن به صورت یک عدد 3 رقمی xyz به یک متغیر نسبت داده بشن یعنی اگر این گونه بود:

x=1
y=7
z=9

متغیر xyz=179 باشد.


int main()
int x,y,z,xyz;
cin>>x;cin>>y;cin>>z;
//اضافه کنید


return 0;
}

emad_67
شنبه 05 مرداد 1387, 08:18 صبح
تو اینجا که سه رقم داری باید به ترتیب در 100 و بعد 10 و بعد 1 ضرب کنی:


void main()
{
int x,y,z,xyz;
cin>>x>>y>>z;

xyz=x*100+y*10+z;
cout<<xyz<<endl;
}
اگرم که تعداد ورودی ها از ابتدا مشخص نیست میتونی ابتدا اعداد رو در آرایه ذخیره کنی و بعد تو یه حلقه for اینکار رو انجام بدی.

deopen
شنبه 05 مرداد 1387, 11:23 صبح
راست میگی اصلا اینجوری به به قضیه نگا نکرده بودم ... مرسی نه . اما برام جالب شد می خوام بدونم اگه مثلا 4 عدد ورودی داشتم تو یه دحلقه ی for که 4 بار اجرا میشه باید یک متغیر داشته باشم که از یک شروع میشه و هر دفغه در 10 ضرب میشه درسته ؟؟؟

linux
شنبه 05 مرداد 1387, 13:01 عصر
راست میگی اصلا اینجوری به به قضیه نگا نکرده بودم ... مرسی نه . اما برام جالب شد می خوام بدونم اگه مثلا 4 عدد ورودی داشتم تو یه دحلقه ی for که 4 بار اجرا میشه باید یک متغیر داشته باشم که از یک شروع میشه و هر دفغه در 10 ضرب میشه درسته ؟؟؟
شما مشکلت ریاضیات هست نه برنامه نویسی
عدد A در مبنای b برابر است با
A=an*b^n+a(n-1)*b^(n-1)+.....a2*b^2+a1*b^1+ a0*b^0
an تا a0 اعداد تشکلیل دهنده ی عدد A هستند و b مبنا که a0 تا an همیشه از b کوچکتر هستند

deopen
شنبه 05 مرداد 1387, 13:35 عصر
راست میگی دارم رو فورمولی که دادی فکر میکنم .مرسی.به نتیجه رسیدم یا سوالی پیش اومد میگم. کنجکاو شدم...
اون قسمت از برنامم درست شد :


#include<iostream>
using std::cout;
using std::cin;
using std::endl;
using std::fixed;
#include<cstdlib>
using std::rand;
using std::srand;
#include<ctime>
using std::time;
int main() {
//srand(time(0));
//a9,b10,c10,d10,e10,f10,h10,i10,j10,k10,l10
srand(time(0));
double a[12],randi=0;
cout<<9000000000000<<endl<<endl;
//for(double i=1;i<=9000000000000;i++) {
for(int ii=1;ii<=12;ii++) {
a[ii]=(1+rand()%9);
cout<<a[ii]<<"\t"<<ii<<endl;
}
double pix=1000000000000;
for(int j=1;j<=12;j++) {
pix=pix/10;
randi=randi+a[j]*pix;
}
cout<<endl<<"randi= "<<fixed<<randi<<endl;
//}

cin>>randi;
return 0;
}


نیاز به تصحیح نداره؟؟؟
و یه سوال :
من از اداره کننده جریان fixed استفاده کردم تا عددم به صورت نماد علمی نمایش داده نشه اما ممیز اعشار میخوره بعدشم کلی صفره خوندم که showpoint مثل fixed هست و ممیزو صفرم نداره اما خودتون از showpoint به جای fixed استفاده کنید ببینید چی میشه...

deopen
شنبه 05 مرداد 1387, 14:41 عصر
فک کنم فهمیدم یعنی تو کار من چون مبنا ندارم مبنا میشه 10 ... فهمیده بودم که این برنامه رو نوشتم دیگه:لبخند:. درسته؟؟؟

RF.Ariyapoor
شنبه 05 مرداد 1387, 19:41 عصر
تو اینجا که سه رقم داری باید به ترتیب در 100 و بعد 10 و بعد 1 ضرب کنی:


void main()
{
int x,y,z,xyz;
cin>>x>>y>>z;

xyz=x*100+y*10+z;
cout<<xyz<<endl;
}
اگرم که تعداد ورودی ها از ابتدا مشخص نیست میتونی ابتدا اعداد رو در آرایه ذخیره کنی و بعد تو یه حلقه for اینکار رو انجام بدی.

واسه اینکه فضای کمتری تو برنامت بگیری میشه آرایه رو نگرفت و گرفتن آرایه به نظر من اضافه هست


void main
{
int Number=0,var=0;
while(1)
{
cout<<"Please Enter next number:(-1 to End)";
cin>>var;
if(var==-1)
break;
Number=Number * 10+var;
}
return;
}البته اگربخوایم اعدادی رو که زود تر وارد میکنیم ارزش بیشتری داشته باشن اما اگر بخوایم اعدادی رو که زود تر وارد میکنیم ارزش کمتر رو داشته باشن باید از پشته استفاده کرد

deopen
شنبه 05 مرداد 1387, 20:42 عصر
واسه اینکه فضای کمتری تو برنامت بگیری میشه آرایه رو نگرفت و گرفتن آرایه به نظر من اضافه هست


void main
{
int Number=0,var=0;
while(1)
{
cout<<"Please Enter next number:(-1 to End)";
cin>>var;
if(var==-1)
break;
Number=Number * 10+var;
}
return;
}البته اگربخوایم اعدادی رو که زود تر وارد میکنیم ارزش بیشتری داشته باشن اما اگر بخوایم اعدادی رو که زود تر وارد میکنیم ارزش کمتر رو داشته باشن باید از پشته استفاده کرد
آخه من میخوام اعداد رندوم تولید کنم.نمیدونم اگه آرایهاشو حذف کنمم میشه؟ به نظرت حذفشون کنم؟؟

linux
شنبه 05 مرداد 1387, 22:30 عصر
آخه من میخوام اعداد رندوم تولید کنم.نمیدونم اگه آرایهاشو حذف کنمم میشه؟ به نظرت حذفشون کنم؟؟
اعداد رندم چه ربطی به این داره؟

emad_67
یک شنبه 06 مرداد 1387, 13:15 عصر
من از اداره کننده جریان fixed استفاده کردم تا عددم به صورت نماد علمی نمایش داده نشه اما ممیز اعشار میخوره بعدشم کلی صفره خوندم که showpoint مثل fixed هست و ممیزو صفرم نداره اما خودتون از showpoint به جای fixed استفاده کنید ببینید چی میشه...
برای کنترل نقطه اعشار باید از setprecsion استفاده کنی مثلا:


#include<iostream.h>
#include<iomanip.h>
void main()
{
double a=1000;
cout<<setiosflags(ios::fixed)<<setprecision(0)<<a<<endl;
}

میتونی اینجوری هم بنویسی:


#include<iostream.h>
#include<iomanip.h>
void main()
{
double a=1000;
cout.setf(ios::fixed);
cout.precision(0);
cout<<a<<endl;
}

تعداد نقاط اعشاری رو که میخوای نمایش داده بشه باید به تابع setprecision ارسال کنی.