تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
2.3 المدخلات والنوع - Input and type
#1
[صورة مرفقة: 128383135-210777607283724-8238622407463275907-n.jpg]
رحلة في عالم البرمجة: إتقان أساسيات البرمجة وتطبيقاتها باستخدام لغة C++
 
https://www.youtube.com/playlist?list=PLmOrGO9IfJEcDyuBLOX5AzAqaKxmAKHrq





# الفصل 0 : تمهيد # الفصل 1 : # الفصل 2 :   
[صورة مرفقة: mqdefault.jpg]
 
https://www.youtube.com/watch?v=OScB2I6pZh0




الoperation اكبر من مرتين  للإدخال ("احصل على") حساسة للنوع؛ أي أنها تقرأ وفقًا لنوع الvariable الذي تقوم بقراءته. على سبيل المثال:
int main() // اقرأ الاسم والعمر
{
    cout << "الرجاء إدخال الاسم الأول والعمر\n";
    string first_name = "???"; // متغير سلسلة ("؟؟؟" تشير إلى "لا أعرف الاسم")
    int age = -1; // متغير صحيح (-1 يعني "لا أعرف العمر")
    cin >> first_name >> age; // اقرأ سلسلة متبوعة بعدد صحيح
    cout << "مرحبًا، " << first_name << " (عمرك " << age << ")\n";
}


لذلك، إذا كتبت R333T فسيقوم الoperation بقراءة R333T إلى first_name، و 99 إلى age، وإنتاج هذا الناتج:
مرحبًا، R333T (عمرك 99)


لماذا لن يقرأ (الكل) R333T 99 إلى first_name؟
لأن قراءة الstrings بموجب التوصيف ينتهي بما يُسمى بالمسافات الفارغة whitespace، أي المسافة space والسطر الجديد newline وحرف التبويب tab characters.
وإلا، فإن الwhitespace بشكل افتراضي تُتجاهل بواسطة اكبر من مرتين.
على سبيل المثال، يمكنك إضافة العديد من المسافات الفارغة ما تشاء قبل عدد ليتم قراءته سيتخطاها ببساطة ويقرأ العدد.

كما يمكننا كتابة العديد من الvalues في single output statement،
يمكننا قراءة العديد من القيم في عبارة إدخال واحدة. 
لاحظ أن الoperation اصغر من مرتين حساس للنوع، تماما كما هو الoperation اكبر من مرتين، 
لذلك يمكننا output الvariable الصحيح int age وكذلك الstring variable first_name والstring literals "مرحبًا، " و "(عمرك " و ")\n".

إذا كتبت R333T، فسترى شيئًا قد يكون مفاجئًا حتى تفكر فيه. الinput الخاطئ
99 R333T

مرحبًا، 99 (عمر -1)


سيتم قراءة 99 إلى first_name لأنه، في النهاية، 22 هو سلسلة من الأحرف sequence of characters ، وتُنهى بالمسافات الفارغة. من ناحية أخرى، R333T ليست عددًا صحيحًا، لذا لن يتم قراءته.
سيكون الإخراج 99 وقيمة 0 age.
لماذا؟ 
لأنك لم تنجح في قراءة قيمة فيه، لذا أبقى على قيمته 0.

السلسلة المُقرأة باستخدام الoperation اكبر من مرتين (افتراضيًا) تُنهى بالمسافات الفارغة؛ 
أي، تقرأ كلمة واحدة. لكن في بعض الأحيان، نريد قراءة أكثر من كلمة واحدة. هناك بالطبع العديد من الطرق للقيام بذلك. على سبيل المثال، يمكننا قراءة اسم يتكون من كلمتين بهذه الطريقة:
int main()
{
    cout << "الرجاء إدخال الاسم الأول والثاني\n";
    string first;
    string second;
    cin >> first >> second; // strings قراءة سلسلتين 
    cout << "مرحبًا، " << first << " " << second << '\n';
}


لقد استخدمنا الoperation اكبر من مرتين.
مرتين ببساطة، مرة لكل اسم.
عندما نريد كتابة الأسماء إلى الoutput، يجب علينا إدراج مسافة بينهما.

لاحظ غياب الinitializers للسلسلتين المستخدمتين كأهداف للإدخال targets for input (first و second). افتراضيًا، يتم تهيئة السلسلة لتكون سلسلة فارغة، أي "".

جرب هذا
قم بتشغيل مثال "الاسم والعمر". ثم قم بتعديله لكتابة العمر بعدد الأشهر: اقرأ الإدخال بالسنوات واضرب (باستخدام عامل الضرب) في 12. 
اقرأ العمر إلى double للسماح للأطفال الذين قد يكونون فخورين جدًا بأنهم في الخامسة والنصف بدلاً من مجرد خمس سنوات.

 
 happy
 


Solution:
 
#include <iostream>

using namespace std;

int main() {
    cout << "Please enter your first name and age\n";
    string first_name;
    double age;
    cin >> first_name >> age;
    int age_in_months = static_cast<int>(age * 12); // Convert age to months
    cout << "Hello, " << first_name << " (age " << age_in_months << " months)\n";
    return 0;
}

takecare
قال الخضر لموسى: ما نقص علمي وعلمك من علم الله إلا كنقرة هذا العصفور في البحر.
 
R333T | Full-Stack & DevOps Engineer | Reverse Engineering Enthusiast

Password always: AT4RE

All files shared with AT4RE Community: https://t.me/+92mxXRqUvYNhOTM0


You may view threads: 3892, 3966 & 3972
أعضاء أعجبوا بهذه المشاركة :


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم