الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف نُسند قيمة عددية إلى char بدون أن تتغير القيمة العددية إلى الحرف الذي يُقابلها

بدأه khaled_prg في 20 نوفمبر 2010 · 10 رد · 689 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

السؤال واضح من العنوان .. كيف نُسند قيمة عددية إلى char بدون أن تتغير القيمة العددية إلى الحرف الذي يُقابلها في الآسكي, مثلا :

char CH ;
    int n = 9;
    CH = n;

كيف نجعل قيمية CH تساوي 9 !؟

في الحالة العامة .. كيف نجعل قيمة CH تُساوي القيمة العددية لـ n مع العلم أن قيمة n تحتوي على رقم واحد و هي متغيرة ....

بالتوفيق.

1
#2

وعليكم السلام ،

تقصد تحويل رقم عددي إلى حرف ؟

#include <iostream>

int main()
{
		int n = 9;
		// from ASCII Table
		// '0' == 48 
		// '9' == 57
		char c =(char) n + 48 ;

		std::cout << c << std::endl; // print it as a character
		std::cout << (int)c << std::endl; // print it as an ASCII number

		return 0;

}

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

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#3
اقتباس
تقصد تحويل رقم عددي إلى حرف ؟

أنا قلت :

كيف نُسند قيمة عددية إلى char بدون أن تتغير القيمة العددية إلى الحرف الذي يُقابلها في الآسكي

أريد تحويل متغير عددي إلى متغير حرفي بحيث تكون قيمة المتغير الحرفي هي نفسها قيمة المتغير العددي, في المثال السابق يجب أن تكوت قيمة CH تساوي 9 و هكذا ....

#4
#include <iostream>
using namespace std;

int main()
{
	char CH ;
    int n = 9;
    CH = n;

	cout << static_cast<int>(CH) << endl;
	return 0;
}

اتمنى ان يكون صحيحا

.Everyone has a dream

.I never thought that I would be the one I am on now

...No Pain No Gain

مشرف قسم السى/سى++ و الاسيمبلى سنة 2015 بأذن الله ...

تعديل: مشرف قسم السى/سى++ من 2012.

#5
اقتباس
اتمنى ان يكون صحيحا

طريقتك هي نسخة مخففة مما كتبه الشمري فالكتابة :

cout << static_cast<int>(CH) << endl;

تكافئ :

cout << int(CH) << endl;

لاحظ أن قيمة المتغير CH لم تتغير و إنما قُمتَ بإظهار قيمة CH على هيئة int و هذا ليس ما أريده !

#6

اشرح لنا ما تريد

سؤالك ليس واضحا من الاساس...

.Everyone has a dream

.I never thought that I would be the one I am on now

...No Pain No Gain

مشرف قسم السى/سى++ و الاسيمبلى سنة 2015 بأذن الله ...

تعديل: مشرف قسم السى/سى++ من 2012.

#7

تمكنت من كتابة كود يحول قيمة n إلى CH دون أن تتغير و لكن يعتبر أن قيمة n ثابتة أو بشكل أدق .. سنقوم بتغيير شكل الكود كلما تغيرت قيمة n و هذا ما لا يعجبني !, يمكن التغلب على المشكلة عن طريق برمجة دالة تحول decimal إلى hex و لكن هذه ستكون مشكلة أخرى تُضاف إلى المشكلة المطروحة أصلا ...

هذه محاولتي :

#include <iostream>
using namespace std;
int main()
{
	char CH ;
    int n = 5;
    CH = 0x35;
    cout <<CH<<endl;
    return 0;
}

بانتظار المساعدة :)

#8

السلام عليكم ...

يا أخ خالد, الـ iostream أو في حالتنا هذه لديها overloading خاص للنصوص و الحروف مثل:

char
const char*
std::string
...

كل ما يقوم به cout هو النظر إلى العدد المعطى, و رؤية المقصد من وراءه فإذا كان أحد الأنواع السابقة قام بتحويله إلى شكل نصي(encoding كـ ASCII).

#10

هناك فرق بين القيمة 5 والحرف 5 .. في جدول الأسكي ستجد القيمة 5 لها حرف وليكن (ّ) .. بينما القيمة 35 لها الحرف (5) ..

اذا أردت ان تنقل أي قيمة في حدود الchar range من int الى char سوف يتم نقل أول بايت من هذا العدد الى الحرف:

int x = 7 ;		// x = 7
char ch = x ;	// ch = 7
int y = ch ;	                 // y = 7

عندما تقوم بطباعة الchar سوف يتم طباعة الحرف المقابل للقيمة الموجودة به،، لذلك 5 ستخرج برمز غريب و35 ستخرج 5 ..

بالتوفيق،

1

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…