18

[C++] دالة تقوم بتحويل الارقام الي حروف

السلام عليكم ورحمه الله وبركاته

من فتره اردت ان اقوم بتحويل ارقام علي حروف , علي سبيل المثال : 13 -> ثلاثة عشر .

واردت ان اختصر علي نفسي وقت كتابه دالة مثلها ف بحثت علي الانترنت ولكن لم اجد الا شخص واحد قام بوضع الدالة ف الفيجوال بيسك ( ولكن ياللهول اعتقد كانت اكثر من 400 سطر ! ).

فققرت كتابتها بنفسي ومشاركتها معكم لتعم الفائده ( في حالة ان شخص ارادها )

الكود والمعلومات كلها موجوده هنا :

وفقكم الله <3

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

جميل جداً، لكن عندي بعض النصائح إذا أردت لهذه الدالة أن تستخدم على نطاق واسع:

1- هناك بعض الأخطاء اللغوية. مثلاً 8 تكتب ثمانية وليس ثمانيه، أي بالتاء المربوطة وليس بالهاء. والحال ينطبق على سبعة وستة ألخ. بصورة عامة القاعدة في التفريق بين التاء المربوطة والهاء تكون بإضافة الكلمة لأخرى وستعرف مباشرة ما إذا كان عليك كتابة هاء أو تاء مربوطة. مثلاً لو حاولت نطق "8 كتب" فتلقائياً ستنطقها "ثمانيةُ كتب" وليس "ثمانيَ كتب".

2- أعلم صعوبة هذه النقطة تحديداً، لكن هل بالإمكان تطوير الدالة لمراعاة الجانب القواعدي في كل الحالات؟ المثال الذي ذكرتَه في الصفحة الرئيسية هو "مئتا وخمس وثمانون مليون" بينما الصحيح "مئتان وخمس وثمانون مليون"، أي بإضافة النون إلى مئتا. الصعوبة هنا أن عليك حذف النون لو كان الرقم فقط "مئتا مليون". لو كان بإمكانك مراعاة هذه التفاصيل القواعدية فستكون الدالة رائعة.

3- لم أجد حاجة لاستخدام QString تحديداً، فكل ما رأيته في الشفرة المصدرية متوفر في std::string فلماذا لا تستخدم الأخيرة لتمكن دالتك من العمل على نطاق أوسع؟ std::string متوفرة حيثما توفرت سي++ بينما QString خاصة بـQt.

وفقك الله

الاخطاء هذي دائما عندي معها مشكله ف اجد صعوبه ف التفريق احيانا بين التاء المربوطه والهاء المربوطه :D , سوف اقوم بتعديلهم ورفعهم ثانيه :) .

وبخصوص ال QString ف قمت برفع ملف اخر يحتوي الدالة باستخدام std::string .

وبارك الله فيك :)

أمير التركى أضف ردا

نعم احتاجها , وكانت مهمة لى عندما كنت ادرس اول كورس فى اللغة c++ ولكنى فشلت بسبب اخر فى تنفذ هذه المهمة

من اين احصل على QString لتنفيذ البرنامج ؟

ولماذا هذا الQString تحديدا ؟

شكرا

قمت بشرحها في الموقع انا استعمل Qt لذلك استعمل ف QString يمكنك استبدالها ب كلاس std::string

اذا ما الفرق بين استعمال الاثنين اخى ؟

لايوجد فرق كبير , ولكن ف بيئة Qt تعودت علي استعمال QString لا أكثر , ايضا قمت برفع الدالة ب std::string يمكنك التحقق منها من خلال الرابط :)

فادى أضف ردا

من الممكن استخدام دالة gcvt, فى الstdlib.h

char buffer [20];

double n=13;

gcvt (n,6,buffer);

طبعا يمكنك بعد ذلك التحويل من double الى integer

اخي الدالة التي انت كتبتها تقوم بتحويل الdouble -> char حرفيا , يعني لو الرقم 2500.63 سوف يصبح -> "2500.63" ولكن دالتي مختلفه تقوم بتحويلها الي حروف اي : الفان وخمسمائه !

يمكنك ان تحول الdouble الى integer عبر الcasting

int a;

a=(int)n;

اخي يبدو انك لم تفهم فقط , الدالة حقتي تحول الرقم الي حرووووف

يعني 520 يصبح "خمسمائه وعشرون"

1569 يصبح "الف وخمسمائه وتسعه وستون"

لكن الدالة حقتك فقط تحول النوع من double الي char لا اكثر

نعم!

لم أفهم قصدك جيدا, تقصد ال"تفقيط",

اعذرنى!

تفقيط ؟

ما هى تلك الكلمة ؟

ما معناها بالتحديد ؟

هل تحويل الارقام الى حروف بسمى بال"تفقيط"

نعم, تعنى ذلك.

أعذرنى مرة أخرى لعدم قراءة الموضوع بالتفصيل,

تحياتى على المجهود الرائع.

دالة رائعة و جميلة أتمنى لك التوفيق في قادم أعمالك ومشاريعك . :)

شكرا لك :)