1 مصطفى القباني نشر 14 أغسطس 2020 أرسل تقرير نشر 14 أغسطس 2020 يمكن عمل المطلوب كالآتي: #include <iostream> using namespace std; void Multiply(const int[], const int[][3], int[], int); int main(){ int n; cin >> n; int v_array[n]; int m_array[n][3]; int o_array[3]; for (int i=0; i<n; i++) cin >> v_array[i]; for (int i=0; i<n; i++) for(int j=0; j<3; j++) cin >> m_array[i][j]; Multiply(v_array,m_array,o_array,n); for(int j=0; j<3; j++) cout<<o_array[j]<<" "; return 0; } void Multiply(const int v_arr[], const int m_arr[][3], int o_arr[], int size){ int current_sum; for (int i=0; i<3; i++){ current_sum = 0; for(int j=0;j<size;j++){ current_sum += v_arr[j] * m_arr[j][i]; } o_arr[i] = current_sum; } } المطلوب هو تعريف دالة Multiply والتي تقوم بضرب متجه من الحجم 1 * ن في مصفوفة من الحجم ن * 3. شرط الضرب للمصفوفات في هذه الحالة دائماً متحقق، وشرط الضرب هو أن عدد أعمدة المصفوفة الأولى تساوي عدد صفوف المصفوفة الثانية. وهو دائماً متحقق لأن حجم المتجه هو 1 * ن أي أن عدد أعمدته تساوي ن ، وحجم المصفوفة هو ن*3 ، أي أن عدد الصفوف تساوي ن. بالتالي عدد أعمدة المتجه الأول مساوي لعدد صفوف المصفوفة، بالتالي يمكن ضربهم. تتم عملية الضرب في loop التالية بضرب المتجه في كل عمود للمصفوفة، وينتج عن عملية الضرب العنصر المناظر في المتجه الناتج. int current_sum; for (int i=0; i<3; i++){ current_sum = 0; for(int j=0;j<size;j++){ current_sum += v_arr[j] * m_arr[j][i]; } o_arr[i] = current_sum; } يمكنك تجربة الكود كامل من هنا. 1 اقتباس
السؤال
Mohanad Hammoudeh
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.