PDA

View Full Version : ((تبدیل تاریخ شمسی عددی به حروفی))



Mrt-amin
یک شنبه 17 دی 1391, 09:26 صبح
با سلام خدمت دوستان...!:ناراحت:
---------------------------------------------------------------------------------------------------------------
برنامه ای بنویسید که تاریخ شمسی را گرفته (بصورت عددی) و به حروف بنویسید بطور مثال برای تاریخ 1391/10/17 در خروجی نشان دهد.
Hevda home Day mahe
hezaro sisado navado yek

یه راهنمایی هم کرده که سردر نیاوردم ، اینکه گفته:سال حداکثر پنج رقمی باشد%
حامد خان دیگه این با مشکل مطرح کردم ها دیگه دبه نکنی حذف کنی؟؟؟
تورو خدا کمکم کنید پنج شنبه باید تحویل بدم!!!:گریه:
---------------------------------------------------------------------------------------------------------------
دوستان من فقط یک قسمتش رو تونستم اما بازم این اشکال داره!
وقتی پنج رقمی میدی به فرض (11560) بنویسه یازده هزار سی صد و شصت اما نمیدونم دیگه چیکارش کنم درس کار کنه؟
کسی میدونه چطوری میشه از اینم راحت تر نوشت؟
البته بگم این فقط قسمت سال ورودیش هستش،ماه و روزش مونده که اونم تا حدودی ازاین قسمت راحتر هستش!اگه اونم بتونم

#include<iostream.h>
#include<conio.h>
#include<stdio.h>
int main ()
{
int a,b,c,w,k,f,r,n,z,m,h;
clrscr();
cin>>a;
b=a%10; // b
c=a/10;
w=c%10; // w
f=c/10;
r=f%10; // r
n=f/10;
m=n%10; // m
h=n/10;
z=h%10; // z
//================================
long int n1,n2,n3,n4,n5,x1,m1;
n1=z*10+m;
n2=n1*10+r;
n3=n2*10+w;
x1=n3*10+b;

{if (a>9999)
//cout<<z<<" "<<m<<" "<<r<<" "<<w<<" "<<b<<" "<<endl;

{if (z==1)cout<<"dahhezaro ";else if (z==2)cout<<"besto ";
else if (z==3)cout<<"seio ";else if (z==4)cout<<"chahalo ";
else if (z==5)cout<<"panjaho ";else if (z==6)cout<<"shasto ";
else if (z==7)cout<<"haftado ";else if (z==8)cout<<"hashtado ";
else if (z==9)cout<<"navado ";}

{if (m==1)cout<<"hezaro";else if (m==2)cout<<"doo hezaro";
else if (m==3)cout<<"see hezaro";else if (m==4)cout<<"chahar hezaro";
else if (m==5)cout<<"panj hezaro";else if (m==6)cout<<"shesh hezaro";
else if (m==7)cout<<"haft hezaro";else if (m==8)cout<<"hasht hezaro";
else if (m==9)cout<<"noh hezaro";}

{if (r==1)cout<<" sado";else if (r==2)cout <<" devisto";
else if (r==3)cout<<" siesado";else if (r==4)cout<<" charsado";
else if (r==5)cout<<" pansado";else if (r==6)cout<<" shishsado";
else if (r==7)cout<<" hafsado";else if (r==8)cout<<" hashsado";
else if (r==9)cout<<" nohsado";}

{if (w==1)cout<<" daho";else if (w==2)cout<<" best";
else if (w==3)cout<<" siy";else if (w==4)cout<<" chahal";
else if (w==5)cout<<" panjah";else if (w==6)cout<<" shast";
else if (w==7)cout<<" haftad";else if (w==8)cout<<" hashtad";
else if (w==9)cout<<" navad";}

{if (b==1)cout<<"o yek";else if (b==2)cout<<"o doo";
else if (b==3)cout<<"o see";else if (b==4)cout<<"o chahar";
else if (b==5)cout<<"o panj";else if (b==6)cout<<"o shiesh";
else if (b==7)cout<<"o haft";else if (b==8)cout<<"o hasht";
else if (b==9)cout<<"o noeh";}
}
else if (a>999)
{
{if (m==1)cout<<"hezaro";else if (m==2)cout<<"doo hezaro";
else if (m==3)cout<<"see hezaro";else if (m==4)cout<<"chahar hezaro";
else if (m==5)cout<<"panj hezaro";else if (m==6)cout<<"shesh hezaro";
else if (m==7)cout<<"haft hezaro";else if (m==8)cout<<"hasht hezaro";
else if (m==9)cout<<"noh hezaro";}

{if (r==1)cout<<" sado";else if (r==2)cout <<" devisto";
else if (r==3)cout<<" siesado";else if (r==4)cout<<" charsado";
else if (r==5)cout<<" pansado";else if (r==6)cout<<" shishsado";
else if (r==7)cout<<" hafsado";else if (r==8)cout<<" hashsado";
else if (r==9)cout<<" nohsado";}

{if (w==1)cout<<" daho";else if (w==2)cout<<" best";
else if (w==3)cout<<" siy";else if (w==4)cout<<" chahal";
else if (w==5)cout<<" panjah";else if (w==6)cout<<" shast";
else if (w==7)cout<<" haftad";else if (w==8)cout<<" hashtad";
else if (w==9)cout<<" navad";}

{if (b==1)cout<<"o yek";else if (b==2)cout<<"o doo";
else if (b==3)cout<<"o see";else if (b==4)cout<<"o chahar";
else if (b==5)cout<<"o panj";else if (b==6)cout<<"o shiesh";
else if (b==7)cout<<"o haft";else if (b==8)cout<<"o hasht";
else if (b==9)cout<<"o noeh";}
}
}
getch();
}

mahak006
یک شنبه 17 دی 1391, 12:22 عصر
با دستورات select()و for میشه پیاده سازیش کرد . از عملگر % روی اعداد صحیح استفاده کن .
سال رو اگه در آوردی ، بقیش زیاد کاری داره . همشو با select () بنویس . ۱۲ ماه رو case های مختلفش قرار بده . چون برنامه لازم نیست چک کنه که تاریخ درست هست یا نه ( مثلا نخواسته که اگه بره نیمه دوم عدد روز رو ۳۱ گذاشتی ارور بگیره ) پس روز رو جدا از ماه حساب کن و لازم نیست تو هر case روز ها رو جداگونه بررسی کنی .
ر کل برنامه راحتیه . فقط باید چیزای تکراری زیادی بنویسی .

Mrt-amin
یک شنبه 17 دی 1391, 20:48 عصر
دوست عزیز ممنون از جوابت
اما یه مشکلی که دارم گفتن عدد از ورودی هست که نمیتونم با کراکتر ازهم جدا کنم
مثال اینکه باید از وورودی 1391/12/12 بنویسم اما چون نمیتونم با کاراکتر از هم جدا کنم 1391 12 12 با فاصله از هم جدا میکنم؟
راحلی هست؟؟؟

mahak006
یک شنبه 17 دی 1391, 21:53 عصر
دوست عزیز ممنون از جوابت
اما یه مشکلی که دارم گفتن عدد از ورودی هست که نمیتونم با کراکتر ازهم جدا کنم
مثال اینکه باید از وورودی 1391/12/12 بنویسم اما چون نمیتونم با کاراکتر از هم جدا کنم 1391 12 12 با فاصله از هم جدا میکنم؟
راحلی هست؟؟؟

میتونی از token استفاده کنی . اما زیاد استادا به روش دریافت داده توجه نمی کنن . همین جوری هم می توی جدا جدا بگیری . اما اگه از token استفاده کنی ، باید اول مقدار ورودی رو کامل تو یه رشته بریزی و بعدش شروع کنی به گرفتن مقدار token از رشته و هر موقع token برابر '/' شد بری سراغ متغیر بعدی . token هم به صورت هدر فایل وجود داره و هم می تونی تو یه حلقه تعریفش کنی . من روش دوم رو رفتم .
به این صورت که از اول رشته یه حلقه می ذاری که هر بار کارکتر iام رو تو متغیری از نوع char ( که همون token دستی خودت می شه ) ، میریزی و بعدش اون متغیر رو مورد ارزیابی قرار می دی و بعد از ارزیابی i++ انجام می دی تا کارکتر بعدی رو بگیری . شرط پایان حلقه هم رسیده به کارکتر '0\' هستش ( همون NULL به شکل کارکتری هستش .‌)