آخر

مصفوفات Mac C ++ وأرقام عشوائية

iBookG4user

ملصق أصلي
27 يونيو 2006
سياتل ، واشنطن
  • 20 سبتمبر 2009
لقد وضعوا المعلمين لـ C ++ في أكثر الأوقات غير المناسبة في كليتي ... على أي حال ، نشر المعلم التوجيهات التالية:

اكتب دالة تملأ مصفوفة بـ 25 رقمًا عشوائيًا بين 1 و 10. ثم اكتب دالة ستطبع المصفوفة. اكتب بعض التعليمات البرمجية بشكل رئيسي لاختبار وظائفك. أحيانًا يُطلق على رمز الاختبار هذا اسم برنامج التشغيل *

لا تستخدم المتغيرات العامة هنا. قم بتمرير المصفوفة إلى الوظيفة من خلال قائمة المعلمات '

لا ينتج عن شفري الحالي أي أخطاء في مصحح الأخطاء ، لكنه لا ينتج المصفوفة. ولا أعرف ما الذي يقصده بكتابته للسائق ، ما الذي يفترض بي أن أختبره؟ لقد أثبتت جميعًا أنك مفيد للغاية في الماضي وأنا متأكد من أنك ستساعدني في توجيهي في الاتجاه الصحيح هذه المرة

الكود: #include #include using namespace std; double print(double array); double produce(); int main() { double produce(); double print(); } double produce() { srand(time(0)); double array[25]; for(int i=0; i<25; i++) { array[i] = (rand()%10)+1; cout << array[i] << endl; } return *array; } double print (int array) { cout << array << endl; }

1210

10 يناير 2005


دالاس ، تكساس
  • 20 سبتمبر 2009
بعض الأشياء: يجب أن تكون المصفوفة الخاصة بك من النوع int [] ، وليس double []. تحتاج إلى قبول مصفوفة int للإنتاج والطباعة. تحتاج إلى التصريح عن int [] أساسي ، وتمريره للإنتاج ، وملئه هناك ، ثم تمريره للطباعة. ال<< operator of ofstream does not deal with arrays as you'd hope, so you'll need to loop to display in print.

أيضًا ، وأنا متأكد من أنه خطأ صريح ، أنا متأكد من أن أستاذك قصد ذلك مستعار- عشوائي.

أيضًا ، بشكل رئيسي ، أنت تعلن عن ازدواج (ق) جديدة ، ولا تستدعي إنتاج وطباعة. خذ المضاعفة هناك ، وقم بتمرير حجة كما تمت مناقشته أعلاه ، وقم بتغيير نوع الإرجاع لكليهما إلى إلغاء.

-يقرأ

ابي ايدك 729

موقوف عن العمل
25 نوفمبر 2005
  • 20 سبتمبر 2009
كيف تكتب نموذجًا أوليًا لوظيفة 'إنتاج'؟
وكيف تكتب استدعاء للدالة 'إنتاج'؟

وداخل وظيفتك 'الرئيسية' ، أيهما كتبته ، نموذجًا أوليًا لوظيفة أم استدعاء دالة؟

iBookG4user

ملصق أصلي
27 يونيو 2006
سياتل ، واشنطن
  • 20 سبتمبر 2009
قال lee1210: أشياء قليلة: يجب أن يكون صفيفك من النوع int [] وليس من النوع المزدوج []. تحتاج إلى قبول مصفوفة int للإنتاج والطباعة. تحتاج إلى التصريح عن int [] أساسي ، وتمريره للإنتاج ، وملئه هناك ، ثم تمريره للطباعة. ال<< operator of ofstream does not deal with arrays as you'd hope, so you'll need to loop to display in print.

أيضًا ، وأنا متأكد من أنه خطأ صريح ، أنا متأكد من أن أستاذك قصد ذلك مستعار- عشوائي.

أيضًا ، بشكل رئيسي ، أنت تعلن عن ازدواج (ق) جديدة ، ولا تستدعي إنتاج وطباعة. خذ المضاعفة هناك ، وقم بتمرير حجة كما تمت مناقشته أعلاه ، وقم بتغيير نوع الإرجاع لكليهما إلى إلغاء.

-يقرأ

حسنًا ، لقد أجريت التغييرات التي اقترحتها ويبدو الرمز أكثر منطقية. على الرغم من أنني أتلقى الآن ثلاثة أخطاء في حلقات for.

الكود: #include #include using namespace std; double print(int array); double produce(int array); int main() { int array[25]; produce(*array); } double produce(int array) { srand(time(0)); for(int i=0; i<25; i++) { array[i] = (rand()%10)+1; cout << array[i] << endl; } print(array); } double print (int array) { for(int i=0; i<25; i++) { cout << array[i] << endl; } return array; }

المرفقات

  • لقطة شاشة 2009-09-20 الساعة 5.42.31 مساءً. png لقطة شاشة 2009-09-20 الساعة 5.42.31 مساءً.png'file-meta '> 178.1 كيلوبايت · المشاهدات: 1،941

1210

10 يناير 2005
دالاس ، تكساس
  • 20 سبتمبر 2009
قم بتغيير نوع وسيطة الإنتاج إلى int [] أو int *. في الوقت الحالي ، الأمر ليس صحيحًا ، لذا لا يمكنك استخدام [] ، إلخ. الشيء نفسه ينطبق على الطباعة. أيضًا ، لا تحتاج إلى إرجاع أي شيء من الإنتاج أو الطباعة. تغيير نوع عودتهم إلى باطل.

أعتقد أن القصد هو إعادة الاتصال بالطباعة الرئيسية ، وهو أمر يجب أن يكون جيدًا.

أيضًا ، عند تمرير مجموعة للإنتاج ، ما عليك سوى استخدام المصفوفة وليس المصفوفة.

-يقرأ

iBookG4user

ملصق أصلي
27 يونيو 2006
سياتل ، واشنطن
  • 20 سبتمبر 2009
قال lee1210: غيّر نوع وسيطة الإنتاج إلى int [] أو int *. في الوقت الحالي ، الأمر ليس صحيحًا ، لذا لا يمكنك استخدام [] ، إلخ. الشيء نفسه ينطبق على الطباعة. أيضًا ، لا تحتاج إلى إرجاع أي شيء من الإنتاج أو الطباعة. تغيير نوع عودتهم إلى باطل.

أعتقد أن القصد هو إعادة الاتصال بالطباعة الرئيسية ، وهو أمر يجب أن يكون جيدًا.

أيضًا ، عند تمرير مجموعة للإنتاج ، ما عليك سوى استخدام المصفوفة وليس المصفوفة.

-يقرأ

انها عملت
الآن ، هل تعرف ما قصده بكتابة الكود لاختبار الوظائف؟ ماذا يقصد بذلك؟ وشكرا جزيلا لمساعدتك حتى الآن!

الكود: #include #include using namespace std; double print(int *array); double produce(int *array); int main() { int array[25]; produce(array); print(array); } double produce(int *array) { srand(time(0)); for(int i=0; i<25; i++) { array[i] = (rand()%10)+1; cout << array[i] << endl; } return *array; } double print (int *array) { for(int i=0; i<25; i++) { cout << array[i] << endl; } return *array; }

chown33

الوسيط
موظف
9 أغسطس 2009
الطائرة السحيقة
  • 20 سبتمبر 2009
قال iBookG4user: الآن ، هل تعرف ما قصده بكتابة الكود لاختبار الوظائف؟ ماذا يقصد بذلك؟

قالت المواصفات أن الأرقام في المصفوفة يجب أن تكون بين 1 و 10. يمكنك كتابة اختبار يؤكد ذلك.

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

اختبار آخر يمكنك كتابته هو التأكد من أن دالة الإنتاج () ترجع قيمًا مختلفة في كل مرة يتم استدعاؤها. هذا شكل بسيط من أشكال التحليل الإحصائي ، أي ضمان أن الاستدعاءات المتتالية لها نتائج مستقلة.

يجب أيضًا مراعاة تهيئة المصفوفة بقيم معروفة غير صالحة ، مثل -1 أو 0 ، قبل استدعاء product (). وبخلاف ذلك ، قد تحتوي المصفوفة المحلية غير المهيأة بالفعل على قيم غير متوقعة ، والتي يمكن أن يفسرها الاختبار على أنها عشوائية حتى إذا كان المنتج () لا يفعل شيئًا على الإطلاق.

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

iBookG4user

ملصق أصلي
27 يونيو 2006
سياتل ، واشنطن
  • 20 سبتمبر 2009
كان ذلك بسيطا بما فيه الكفاية ، شكرا!
نجح هذا في علاج:
الكود: if (print(array) 10) // driver { cout << 'Numbers are not between 1 and 10!' << endl; } س

ساندر

إلى
24 أبريل 2008
  • 21 سبتمبر 2009
قال iBookG4user: كان هذا بسيطًا بما فيه الكفاية ، شكرًا!
نجح هذا في علاج:

حاول وضع رقم 'غير صالح' في المصفوفة الخاصة بك (على سبيل المثال ، 11) ومعرفة ما إذا كانت هذه الوظيفة تكتشف ذلك.

iBookG4user

ملصق أصلي
27 يونيو 2006
سياتل ، واشنطن
  • 21 سبتمبر 2009
قال ساندر: حاول وضع رقم 'غير صالح' في صفيفك (على سبيل المثال ، 11) ومعرفة ما إذا كانت هذه الوظيفة تكتشف ذلك.

لقد قمت بتعيين المصفوفة مؤقتًا للسماح بأرقام أكبر من 10 وقد اكتشفتها ، شكرًا س

ساندر

إلى
24 أبريل 2008
  • 22 سبتمبر 2009
قال iBookG4user: لقد قمت بتعيين المصفوفة مؤقتًا للسماح بأرقام أكبر من 10 وقد اكتشفت ذلك ، شكرًا

حتى لو لم يكن العنصر الأول في المصفوفة ..؟

سبب سؤالي هو أن وظيفة print () الخاصة بك (على الأقل الإصدار الأخير المعروض في هذا الموضوع) لا تُرجع سوى العنصر الأول من المصفوفة (تم تحويله إلى عنصر مزدوج).