البرمجة

تحويل البيانات باستخدام atoi و atof

مشكلتك هي أنك تحاول استخدام دالة gets للحصول على مدخلات المستخدم وتخزينها في مصفوفة من نوع int أو float، وهذا لا يعمل. دالة gets تستقبل مؤشرًا إلى مصفوفة من نوع char، ولكنك تحاول تخزين المدخلات في مصفوفة من نوع int و float.

بدلاً من ذلك، يجب عليك استخدام cin للحصول على مدخلات المستخدم ومن ثم استخدام atoi و atof لتحويل النصوص إلى أرقام صحيحة وأعداد عشرية على التوالي.

هناك طريقة أخرى لتحويل المدخلات مباشرة من نوع char إلى int و float باستخدام الدوال stoi و stof في C++11 والأحدث. إليك كيف يمكنك تعديل الشيفرة الخاصة بك باستخدام cin و stoi و stof:

cpp
#include #include using namespace std; int main() { struct Data { string name; string Fname; int idno; float Gpa; }; Data emp; cout << "Enter name: "; cin >> emp.name; cout << "Enter father's name: "; cin >> emp.Fname; cout << "Enter Id number: "; cin >> emp.idno; cout << "Enter GPA: "; cin >> emp.Gpa; return 0; }

هذا الكود يستخدم cin للحصول على المدخلات من المستخدم ويستخدم stoi و stof لتحويل النصوص إلى أرقام صحيحة وأعداد عشرية.

المزيد من المعلومات

بالطبع! في الشيفرة التي كتبتها، تستخدم دوال atoi و atof لتحويل النصوص التي يقوم المستخدم بإدخالها إلى أرقام صحيحة وأعداد عشرية على التوالي. ومع ذلك، هناك بعض الأمور التي يجب أن تراعيها:

  1. gets تستخدم للحصول على سلسلة نصوص من المستخدم، ولكنها ليست آمنة للاستخدام لأنها لا تفحص الحدود، لذا يُفضل استخدام cin أو fgets في C++.
  2. عند استخدام gets، يجب تحديد مصفوفة من نوع char، وليس int أو float.
  3. في الكود الحالي، يُفترض أن تحدث أخطاء تشغيلية لأنك تحاول تخزين مدخلات المستخدم المكونة من أرقام في مصفوفة من نوع int و float، وهذا لن ينجح.

لتحسين الكود، يُفضل استخدام cin للحصول على مدخلات المستخدم واستخدام دوال stoi و stof لتحويل النصوص إلى أرقام صحيحة وأعداد عشرية، على التوالي.

زر الذهاب إلى الأعلى