PDA

View Full Version : چاپ ارقام مرتبه زوج و فرد عدد ورودی



#Elahe#
پنج شنبه 05 آذر 1388, 14:05 عصر
برنامه ای که عددی را از کاربر دریافت کرده و ارقام آن را چاپ کند و همچنین ارقام مرتبه زوج و فرد آنرا مشخص کند .
خودم واسش یه سورس سر هم کرده ام . فقط تو مشخص کردن مرتبه زوج و فرد مونده ام
البته راهش رو میدونم ولی نمیدونم باید کجای کدوم حلقه باید استفاده شه .



#include <iostream.h>
#include <conio.h>
int main()
{
clrscr();

long num,quot=1,denom,rest; /*quot=quotient=kharej gesmat
denom=denominator=magsum aleyh
rest=bagi mande*/

cout<<"Please enter a number \n";
cin>>num;
denom=num;
while(quot!=0)
{
rest=denom%10;
quot=denom/10;

denom=quot;
cout<<rest<<"\n";
}
getch();
return 0;
{
این سورس فقط ارقام رو چاپ میکنه .
باید باقیمانده ارقام بر 2 رو مشخص کنم تا زوج و فرد بودنش مشخص شه . فقط موندم کجا باید بذارمش !!!

queen-mm
پنج شنبه 05 آذر 1388, 15:32 عصر
ببخشيد منظورتون از مرتبه زوج و فرد چيه؟

a.gh.n
پنج شنبه 05 آذر 1388, 16:27 عصر
بهتر نیست ورودی رو به صورت استرینگ از کاربر بگیرید؟! در این صورت یک در میون رقم مرتبه زوج و فرد داریم.
در غیر این صورت از یک کانتر (با مقدار اولیه صفر) استفاده کنید که درون حلفه هربار یک واحد افزایش پیدا کنه. اگر باقیمانده ی کانتر بر دو صفر بود، یعنی یکان [ده به توان صفر] و صدگان [ده به توان دو] و ... بنویسه زوج وگرنه فرد (مثل هزارگان که میشه ده به توان سه و از مرتبه فرد هست). همچین چیزی میشه:

cout<<"Please enter a number \n";
cin>>num;
denom=num;
for (unsigned int count=0; quot!=0; count++)
{
rest=denom%10;
quot=denom/10;

denom=quot;
if (count%2)
cout<< "Odd:\t" << rest<<"\n";
else
cout<< "Even:\t" << rest<<"\n";
}

queen-mm
پنج شنبه 05 آذر 1388, 20:10 عصر
منم يه چيزي اضافه كنم.شما چرا اينقدر لقمه رو پيچوندين؟؟؟:لبخند:
يه كد چهار خطي شما در واقع با دو خط هم مي شد نوشت:لبخند:



for(int i=1;num!=0;i++)
{
cout<<num%10<<"\t";
num=num/10;
if((i%2)==0)
cout<<"zoj"<<endl;
else
cout<<"fard"<<endl;
}

tdkhakpur
پنج شنبه 05 آذر 1388, 23:20 عصر
کد دو خطی شما را هم با یک خط میتوان نوشت.


for(int i=1;num!=0;i++, num=num/10)
cout<<num%10<<"\t"<<((i%2)==0 ? "zoj": "Fard")<<"\n";

#Elahe#
پنج شنبه 05 آذر 1388, 23:50 عصر
البته تقصیر از منه که اول کار نگفتم .
بنده رشته ام مدیریت هست .
ولی به خاطر علاقه ام به برنامه نویسی خودم دارم دنبالش میکنم .
البته قبلاً کامپیوتر خوندم . ولی جون دیدم نه بازار کار داره و نه آینده خوبی . البته برای یه خانوم . واسه همین رفتم به دنبال علاقه دیگرم یعنی مدیریت .
الان هم هنوز یه مبتدی هستم .
تا آرایه های یک بعدی پیش رفته ام .
از دووستان هم ممنون که یاریم میکنند .

#Elahe#
پنج شنبه 05 آذر 1388, 23:54 عصر
ببخشيد منظورتون از مرتبه زوج و فرد چيه؟
اگه یه عدد مثل 1245637405 رو در نظر بگیرید و از سمت راست ارقامش رو شماره گذاری کنید و شماره گذاری هم از صفر شروع شه مرتبه ش اینجوری میشه .
5 و 4 و 3 و 5 و 2 مرتبه زوج هستند و بقیه فرد .

#Elahe#
جمعه 06 آذر 1388, 00:37 صبح
unsigned int count=0
unsigned یعنی چی ؟ کاربردش چیه ؟

clover
جمعه 06 آذر 1388, 01:44 صبح
unsigned int count=0
unsigned یعنی چی ؟ کاربردش چیه ؟

یعنی بدون علامت
unsigned int یعنی اینتیجر بدون علامت یا عدد صحیح زوج . وقتی که احتیاجی به استفاده از عدد منفی ندارید متغیر را از نوع اعداد زوج یا بدون علامت تعریف می کنید.

دامنه int : از 32768- تا 32767
دامنه unsined int : از 0 تا 65535

کاربرد: افزایش دامنه زوج اعداد ، استفاده بهینه از انواع داده ای.

#Elahe#
جمعه 06 آذر 1388, 12:56 عصر
مرسی
پس من اگه بخام یه عدد بزرگ تعریف کنم حتی میشه از
unsigned long
هم استفاده کنم که دامنه رو خیلی بزرگ میکنه تو اعداد مثبت .
من واسه فاکتوریل یه برنامه نوشته بودم که بیش از فکر کنم 12 رقم رو چاپ نمیکرد . با این روش میشه ؟

clover
جمعه 06 آذر 1388, 13:39 عصر
مرسی
پس من اگه بخام یه عدد بزرگ تعریف کنم حتی میشه از
unsigned long
هم استفاده کنم که دامنه رو خیلی بزرگ میکنه تو اعداد مثبت .


البته دامنه انواع استاندارد ++C به سیستم عامل هم بستگی داره . در سیستم عامل ویندوز (32 بیتی) وقتی شما یک متغیر از نوع int تعریف می کنید منظور همان int32__ هست که چهار بایت فضا اشغال میکنه و دامنه اون از 2,147,483,648- تا 2,147,483,647 هست .

و اگر نیاز به متغیر هایی با دامنه بزرگتر دارید می تونید long long ( معادل int64__ ) و unsigned long long ( معادل unsigned __int64 ) استفاده کنید.

#Elahe#
جمعه 06 آذر 1388, 14:55 عصر
long یا long long ؟
من که تا حالا long long ندیدم !!

clover
جمعه 06 آذر 1388, 17:40 عصر
long یا long long ؟
من که تا حالا long long ندیدم !!

بله ! long long
من هم تا دیشب ندیده بودم اما اگر به مستندات ویژوال استودیو مراجعه کنید پیدا می کنید.


// Sample Code

#include <iostream>
#include <conio.h>

using namespace std;

int main()
{
long long num;

cout << "Enter num: ";
cin >> num;

cout << "\nnum is: " << num;

_getch();
return 0;
}

tdkhakpur
جمعه 06 آذر 1388, 18:40 عصر
یادآوری
اینکه اندازه و یا هر گونه عمل محاسباتی و غیر محاسباتی به سیستم عامل ارتباط ندارد بلکه کامپایلر هست که محدوده این نوع تعریف را مشخص میکند.

clover
جمعه 06 آذر 1388, 21:28 عصر
یادآوری
اینکه اندازه و یا هر گونه عمل محاسباتی و غیر محاسباتی به سیستم عامل ارتباط ندارد بلکه کامپایلر هست که محدوده این نوع تعریف را مشخص میکند.

صحیح می فرمایید، من نتونستم منظورم را درست برسونم.

#Elahe#
شنبه 07 آذر 1388, 02:02 صبح
اتفاقاً منظور clover (http://www.barnamenevis.org/forum/member.php?u=106829) رو هم درک کردم .
با کمی منطق و استدلال هم هر کی میتونه به این نتیجه برسه !
ممنون

queen-mm
شنبه 07 آذر 1388, 14:19 عصر
کد دو خطی شما را هم با یک خط میتوان نوشت.


for(int i=1;num!=0;i++, num=num/10)
cout<<num%10<<"\t"<<((i%2)==0 ? "zoj": "Fard")<<"\n";

ببخشين دير جواب مي دم.ولي اگه پاسخم رو كامل مي خوندين من نمي خواستم به ايشون كد نويسي ياد بدم.مي خواستم بدونن لازم نيست همش اين متغير رو توي يكي ديگه بريزه!اينطوري ممكنه قاطي كنه.

#Elahe#
شنبه 07 آذر 1388, 15:01 عصر
و آخر سر هم من که سوال پرسیده بودم متوجه نشدم نتیجه این کل کل شما دوستان به کجا رسید و جواب آخر من چی شد !!!

queen-mm
یک شنبه 08 آذر 1388, 00:17 صبح
اگه منظورتون فاكتوريله؟جوابش يه جستجو هست.الان كه من تو همين سايت اين كار رو انجام دادم چندين تاپيك بود.اگه منظورتون يه چيز ديگس دوباره بپرسين.

#Elahe#
یک شنبه 08 آذر 1388, 12:11 عصر
اگه منظورتون فاكتوريله؟جوابش يه جستجو هست.الان كه من تو همين سايت اين كار رو انجام دادم چندين تاپيك بود.اگه منظورتون يه چيز ديگس دوباره بپرسين.
فاکتوریل که مشکلی نیست .
سوالم رو هم اول همین تایپیک به عرض رسونده ام .
اگه اشکالی نداره کد پست اولم رو بازنویسی کنید به طوری که ارقام عدد ورودی رو و سپس ارقام مرتبه زوج و بعد از آن ارقام مرتبه فرد رو چاپ کنه .
ممنون

tdkhakpur
یک شنبه 08 آذر 1388, 14:39 عصر
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
int main()
{
long a, tmp, RtnVal[2][15];
int cZoj=0, cFard=0;
cin>>a;
while( a!=0)
{
tmp = a%10;
if( (tmp%2)==0 )
RtnVal[0][cZoj++] = tmp;
else
RtnVal[1][cFard++] = tmp;
a/=10;
}
cout<<"\n adade zoj = ";
for( int i=0; i<cZoj; i++ )
cout<<" "<< RtnVal[0][i];
cout<<"\n adade Fard = ";
for( int i=0; i<cFard; i++ )
cout<<" "<< RtnVal[1][i];
getch();
return 0;
}

#Elahe#
سه شنبه 10 آذر 1388, 02:35 صبح
جناب tdkhakpur (http://barnamenevis.org/forum/member.php?u=99732) عزیز ، هم ولایتی محترم ، مثل اینکه شما اشتباه متوجه شدید صورت مسئله رو !
مرتبه زوج و فرد با اینی که شما نوشتید فرق داره .
ولی باز هم تشکر میکنم که لطف کردید رو مسئله بنده وقت گذاشتید .
الیز آغریماسین و ساغ یاشیاسیز

tdkhakpur
سه شنبه 10 آذر 1388, 13:05 عصر
شرمنده.
این هم نوع دوم.


#include <iostream.h>
#include <conio.h>
#include <stdio.h>
int main()
{
long a, tmp, RtnVal[2][15];
int cZoj=0, cFard=0, c=0;
cin>>a;
while( a!=0)
{
tmp = a%10;
if( (c%2)==0 )
RtnVal[0][cZoj++] = tmp;
else
RtnVal[1][cFard++] = tmp;
a/=10;
c ++‎‎;
}
cout<<"\n adade radeye zoj = ";
for( int i=0; i<cZoj; i++ )
cout<<" "<< RtnVal[0][i];
cout<<"\n adade radeye Fard = ";
for( int i=0; i<cFard; i++ )
cout<<" "<< RtnVal[1][i];
getch();
return 0;
}