بسم الله الرحمن الرحيم و به نستعين.
هو شرح مفصل و ال Output Format و بأذن الله ان لاقى نجاح سأقوم بكتابةشرح لل Input Format .
العنصر cout يمتلك الكثير من المميزات التى تؤثر على اظهار البيانات بشتى الطرق التى تريدها فى الاعداد و الجمل.
اريد شيئا بسيطا منكم الدعاء لى بالهداية و التوفيق و الكرم من الله .
يجب منك استخدام ال compiler و رئية ماذا يحدث امام عينيك انت .
حسنا المثال التالى يعرض لكن نفس الرقم لكن يعرض بأكثر من طريقة:
720
720.0
720.00000000
720
7.2e+2
+720.0
هم هم نفس الارقام لكن بأكثر من طريقة عرض.
حسنا كيف نسيطر الأن على البيانات التى نريدها ؟؟؟؟
سنرى ذلك الأن بأذن الله:
فى البداية سوف اقوم بتقسم الدرس الى عدة اقسام لأن ال format ليس بالسهل
نبتدى بال
setw
#include <iostream>
using namespace std;
int main()
{
int num1 = 2897, num2 = 5, num3 = 837,
num4 = 34, num5 = 7, num6 = 1623,
num7 = 390, num8 = 3456, num9 = 12;
// Display the first row of numbers
cout << num1 << " " << num2 << " " << num3 << endl;
// Display the second row of numbers
cout << num4 << " " << num5 << " " << num6 << endl;
// Display the third row of numbers
cout << num7 << " " << num8 << " " << num9 << endl;
return 0;
}حسنا و الاخراج لهذا المثال هو التالى
2897 5 837
34 7 1623
390 3456 12
انظرون الى المنظر الارقام تحت بعضا لا يمكن التفريق اين السطر اليس كذلك
لكن العنصر cout يقدم لنا شيئا فريد من نوعه لحل هذه المشكلة و هو setw
حسنا سنوضحه فى المثال البسيط التالى:
value = 23;
cout << "(" << setw(5) << value << ")";سيظهر لنا الناتج التالى
( 23)
اذا ما يفعله setw هى عمل فراغات فى الماكن الذى تحدده بالمساحة الذى تحددها
حسنا سنرى الأن المثال الذى تحدثنا عنه فى البداية و نرى الحل له
سنضع بين كل رقم 6 فواصل و سيكونون بهذا الشكل :
#include <iostream>
#include <iomanip> // Header file needed to use setw
using namespace std;
int main()
{
int num1 = 2897, num2 = 5, num3 = 837,
num4 = 34, num5 = 7, num6 = 1623,
num7 = 390, num8 = 3456, num9 = 12;
// Display the first row of numbers
cout << setw(6) << num1 << setw(6) << num2 << setw(6) << num3 << endl;
// Display the second row of numbers
cout << setw(6) << num4 << setw(6) << num5 << setw(6) << num6 << endl;
// Display the third row of numbers
cout << setw(6) << num7 << setw(6) << num8 << setw(6) << num9 << endl;
return 0;
}و الاخراج سيكون على الشكل التالى :
2897 5 837
34 7 1623
390 3456 12
ارئيتم التنسيق الجمالى الذى حدث ؟؟؟ هذا ما اتكلم عنه
الأن لنشرح
قمنا الأن بكتاب
cout << setw(6) << num1 << setw(6) << num2 << setw(6) << num3 << endl;
اتدرون ما الذى فعلته setw
حسنا قامت بعمل 2 فراغات فى بداية البرنامج لأن ال 4 اعداد التى بعدها تطلب ان يكون هناك مساحة لها فى ال setw و نحن اعطينا لل setw 6 مساحات فقط لعرض المتغير و المتغير الذى قمنا بأدخاله يوجد به 4 ارقم اذا سنأخذ 2 فراغ و الباقى للمتغير وضحت ؟؟؟؟
ثم طباعة اول رقم ثم 5 مسافات نعم 5 مسافات لأن المسافة السادسة هى الرقم الذى كتب
ثم 3 فراغات و ال 3 الاخرون يحتوون على الرقم الذى نريده
ظهر لنا الأن مكتبة جديدة تدعى
iomanip
هذه المكتبة تستخدم فى التنسيق الجمالى للشكل.
الأن لنتعمق بعض الشئ فى هذه الدالة الصغيرة التى ترينا شكلا جماليا رائعا.
لاحظوا ان بعض طباعة اخير setw سيعمل الرقم الذى بعده لكن من بعد ذلك لن يوجد تأثير نهائى لل setw و كأنك لم تكتبها من الاساس.
حسنا ستستغرب عندا تكتب رقم متغير اكبر من ال setw مثل التالى:
value = 18397; cout << setw(2) << value;
المخرجات هى :
18
لماذا لأن ال cout من الدالات الذكية و هو اخذ امر فقط بطباعة الرقم الذى بداخل setw مهما كانت نتيجته فسوف يطبعه فقط اذا لن يوجد ال 3 ارقام الاخيرة و سوف يطبع اول رقمين فقط.
حسنا من الممكن استخدام ال setw فى ال string , floating points, int values اى من الممكن استخدامها فى اى شئ نريدها و هذا مثال على ما اقول :
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
int main()
{
10 int intValue = 3928;
11 double doubleValue = 91.5;
12 string stringObjectValue = "Jill Q. Jones";
14 cout << "(" << setw(5) << intValue << ")" << endl;
15 cout << "(" << setw(8) << doubleValue << ")" << endl;
16 cout << "(" << setw(16) << stringObjectValue << ")" << endl;
17 return 0;
}الناتج الذى سيخرج لنا هو التالى :
) 3928)
) 91.5)
( Jill Q. Jones)
3 ملاحظات على ما سبق الأن:
اقتباسحجم المساحات لل Floating Points يتضمن ال Decimal Point .
حجم المساحات لل Strings يتضمن كل الحروف فى ال String من بينهم المسافات.
اى فراغ عام سيكون على اليسار اوتوماتيكيا و سنرى حل لهذا فى ما يلى.
انتهى الأن درسنا عن ال setw .
المشاركة التالية تتضمن ال setprecision تعرفونها فى ما يلى بأذن الله.


