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

سؤال للمبتدئين

مغلق
بدأه chik في 11 أكتوبر 2004 · 6 رد · 695 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم,

بلاحظ أننا رجعنا إلى معاهدنا وكلياتنا وقد تبتدئ مختلف الأسئلة وهذا سؤال بسيط للمبتدئين وأتمنى أن يفكروا فيه وهو ربما لا يخطر على بالنا أو ربما لا نلاحظه.

نعتبر البرنامج التالي فهو لا يقوم بأي شيء سوى أنه ينتظر أن نعطيه عدد من نوع int ثم يقوم بكتابة أو طبع نفس العدد على الشاشة.

#include <iostream.h>


void main ( ) 
{
	int a;
	cin >> a;
	cout <<a<<"\n";
}

ننجز البرنامج ونعطيه العدد 45 مثلا بالطبع سيكتب لنا العدد 45 وهذا طبيعي. نجرب البرنامج مرة أخرى ونعطيه نفس العدد على هذه الطريقة 045 وهذا نفس العدد السابق.

فما هي النتيجة وما هو الحل.

إلى اللقاء.

#2

مرحبا أخي chik

فعلا : أول مرة أنتبة لهذة الشغلة ؟

دائما أكتب برامجي بالسي .. ولا أستخدم تطورات السي++ لأني أجهل أغلبها ؟

فمثلا ..مثالك أكتبة بهذة الطريقة

int a=0;
scanf("%d",&a);
printf("%d \n",a);

ولا تظهر المشكلة التي ذكرت

المهم أني سؤحاول إكتشاف اللغز :)

وأعتقد أنة في cin

-

http://www.jaascois.com

*************************************************

مجموعة مواضيع - إحتراف البرمجة -

ّ~~~~~~~~~~~~~~~~~~~~~~

البرمجة المتقدمة & الهندسة العكسية & برمجة وأمن الأنظمة

/index.php?showtopic=45002

آخر المواضيع :

+- تحليل جرائم الكمبيوتر -+

أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات

ثغرة SMS لأجهزة الجوال Siemens 3568i !

أخطاء وثغرات البرامج العربية !!!

سلسلة مواضيع - أمن وحماية مواقع الويب -

E البرمجة المتقدمة X للملفات التنفيذية E

سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة

**************************************************

<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>

**************************************************

#3

صحيح أنا واجهتني مشكله مثل ذلك من قبل بس مالقيت حل شوف الكود التالي /:/-

	int a;
	cin >>a;
	cout <<a<<endl;
	printf("%x",a);

إذا أدخلنا 050 مثلاً

الناتج 40

و 28

إذا ركزت أكثر 050 هذا عدد بالنظام الثماني oct و 40 عدد عشري مسواي له و 28 بالثظام السادس عشري

#4

السلام عليكم

الحقيقة موضوع رهيب وممتاز chik .

المهم أضم صوتي الى صوت اخي vlr05 حيث العدد 01 لاتكون به مشكلة يطبع 1 العدد 015 يطبع 13 مكافلى الثماني بالعشري .

وجرب بعد ان تدخل هكذا عدد في السادس عشري

0x15

يطبع

21

وهكذا عدد مدخل بالسادس عشري يطبع مكافئه بالعشري.

ولكن السؤال كيف تم ذلك مباشرة ( السبب ؟؟؟؟؟؟؟؟؟).

اكيد في cin .

اللهم علمنا ما ينفعنا وأنفعنا بما علمتنا أنك أنت العليم الحكيم

سبحان الله وبحمده سبحان الله العظيم

لاحول ولاقوة الا بالله( كنز من كنوز الجنة ).

#5

السلام عليكم,

كما كنت أتوقع ففي كثير من الأحيان تدور حولنا مشاكل بسيطة بدون أن نراها.

فكما ذكر الأخ jaas باستعمال تعليمة scanf في السي قد تحل مشاكل مثل هذا النوع وإذا كنا من مستعلي س++ فلنعلم أن ما سبق سيعتبر الرقم المدخول كأنه من نوع أوكتال إلى حد معين أضن حوالي 20 أو 30 بعدها لا يتبع أي طريقة. وهنا نعلم أن كلاسات أو ستركترات الدخول والخروج تعطينا عدة وضائف نختار منها ما نريد وهناك على سبيل المثال flag يحدد نوعية الأرقام الداخلة أو الخارجة منها إذا كنا نريدها من النوع العشاري الأوكتال أو الهيكس. وهذا على سبيل المثال يمكننا بسهولة من تحويل رقم عشاري إلى هيكس.

وهنا لنحل مشكلتنا ما علينا سوى أن نغير الفلاك الخاص أو نستعمل دالة خاصة لهذا وهي setf وإذا كتبنا برنامجنا كما يلي ستحل المشكلة :

#include <iostream.h>


void main ( ) 
{
	cin.setf(ios::dec);
	int a;
	cin >> a;
	cout <<a<<"\n";
}

وعلى سبيل المثال إذا أردنا أن تكون النتيجة على شكل هيكس ما علينا سوى أن نزيد السطر :

cout.setf(ios::hex)

وكتمرين لهذا نحاول أن تكون النتيجة على شكل عدد هيكس ومكتوب بأحرف كبيرة أو كابتال

وكذلك نحاول أن نحل المشكلة بدون استعمال الدالة setf بل نتغيير flags مباشرة مع العلم أن الدالة flags هي من بين دوال cin أو cout .

إلى اللقاء.

#6

تذكرت هذا الشكل قبل سنه عرضه علينا الدكتور وقال نفس السؤال ونحن قد قطعنا شوط كبير في السي++

وكانت النتيجه فعلا مذهله من الشباب وجميع الدارسين

لكم مني خالص التقدير

*********************

دروس الاكسس

قاعدة بيانات بالسي++

قاعدة بيانات اخرى بالسي++

الفريق العربي للبرمجه

*********************

كان الله في عون العبد مادام العبد في عون اخيه

#7

استعمل التعليمه التاليه

لحل المشكله

using std::cout;

using std::cin;

مع الاخذ بعين العتبار انه الهدر فايل يكتب من غير .h

هذا الموضوع مغلق.

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