السلام عليكم ورحمة الله
كيف حالكم إخواني؟
أحاول تطبيق مثال في لغة C++ يتحقق من بعدي مصفوفة، فإذا كانا متساويين فإنه يسأل المستخدم عن رغبته في تصفير قطر المصفوفة، ثم يصفره إن أجاب بنعم.
وإن لم يكن بعدا المصفوفة متساويين فإنه يطبع قيم عناصرها على الشاشة بشكل عادي جداً.
المشكلة: في حال عدم تساوي قطري المصفوفة فإنه يطبع العناصر ثم يظهر لي رسالة خطأ، أظن معناها أنني أكتب خارج حدود المصفوفة، ونصها كالتالي:
DAMAGE: after Normal block (#72) at 0x00141E40
فما معنى الرسالة؟ وما سببها؟
هذا هو الكود، وهو تطبيق لمثال في كتاب الإكسير:
- #include <iostream>
- using namespace std;
- {
- private:
- int d1,d2,ctrd1,ctrd2; //البعد الأول، البعد الثاني، متغير العد الأول، متغير العد الثاني
- char choise; //متغير لمعرفة رأي المستخدم في تصفير قطر المصفوفة
- public:
- Enter(); //دالة إدخال قيم عناصر المصفوفة
- BigFunction(); //دالة التصفير
- };
- {
- d1=a;d2=b;
- for (ctrd2=0;ctrd2<d2;ctrd2++)
- }
- {
- }
- {
- cout<<"Enter array's members:n";
- for (ctrd1=0;ctrd1<d1;ctrd1++)
- for (ctrd2=0;ctrd2<d2;ctrd2++)
- {
- cout<<"Enter the membert";
- cin>>array[ctrd1][ctrd2];
- }
- }
- Array::BigFunction() //في حال كانت أبعاد المصفوفة متساوية، نسأل المستخدم عن رغبته في تصفير ا
لقطر الرئيسي، وإة كان الجواب نعم نقوم بالتصفير - {
- if (d1==d2)
- {
- cout<<"Do you want to zero the main rayon [y/n]?t";
- cin>>choise;
- if (choise=='y')
- {
- for (ctrd1=0;ctrd1<d1;ctrd1++)
- }
- else
- }
- else
- }
- {
- for (ctrd1=0;ctrd1<d1;ctrd1++)
- {
- for (ctrd2=0;ctrd2<d2;ctrd2++)
- {cout<<array[ctrd1][ctrd2]<<"t";}
- cout<<endl;
- }
- }
- main()
- {
- int i,j;
- cin>>i;cin>>j;
- a.Enter();
- a.BigFunction();
- return 0;
- }
وجزاكم الله كل خير