• 0

ما الخطأ في شيفرة C++ التالية؟

#include <iostream>

using namespace std;

int factorial(int number, int result) {
	
	
	result = result * number;
	
	number--;
	
	if (number >= 1) {
		factorial (number, result);
	} else {
		return result;
	}
}

int show_multiply (int number) {
	
	for (int i = number; i >= 1; i--) {
		
		cout << i;
		if (i != 1) {
			cout << " x ";
		}
	}
	return 0;
}

int main() {
	int number, result = 1;
	
	cout << "Enter the number you need its factorial:\n";
	cin >> number;
	
	int fact_result = factorial(number, result);

	cout << "To compute the factorial of " << number << " , you must multiply " << show_multiply(number) << " So the factorial of " << number << " is " << fact_result;
}

الناتج يكون كالتالي:

Enter the number you need its factorial:
5
5 x 4 x 3 x 2 x 1To compute the factorial of 5 , you must multiply 0 So the factorial of 5 is 120

 

لكني أريد أن تظهر الأعداد:

  5x 4 x 3 x 2 x 1

بدلا من الصفر

 

أعتقد أن اﻷمر له علاقة ب return 0 في دالة show_mulltiply، لكن لم أعرف كيف أحلها..

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

اخي انت تقصد الصفر الي موجود هنا you must multiply 0

 

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0
بتاريخ الآن قال بدور مجادمي:

اخي انت تقصد الصفر الي موجود هنا you must multiply 0

 

 

صحيح .. بالضبط

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0
بتاريخ 2 دقائق مضت قال محب روفائيل:

 

صحيح .. بالضبط

شو الي بدك يظهر مكانها بالضبط

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0
بتاريخ الآن قال بدور مجادمي:

شو الي بدك يظهر مكانها بالضبط

5 × 4 × 3 × 2 × 1

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

أخي عم حاول فيها وماظبطت بس انو لازم تعمل بدل return 0 تخزن هاد الشكل بمصفوفة وبعدين تطبعها 

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

لن تضهر لك الاعداد بتلك الطريقة

يجب عليك فعل for loop من الرقم الذي ادخلته الى 1 ثم تعرضهم على الشاشة

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0
#include <iostream>
#include <sstream>

using namespace std;

int factorial(int number) {
  if (number < 0)
    return false;
  if (number == 0)
    return 1;
  return number * factorial(number - 1);
}

void show_multiply (int number) {
  stringstream res;
  for (int i = number; i > 1; i--) {
  	res << i << " x ";
  }
  res << "1";
  cout << res.str();
}

int main() {
  int x = 5;
  int fact = factorial(x);
  show_multiply(x);
}

أولاً: لحساب الـ factorial انت بحاجة بس لـ parameter واحد.

ثانياً: لا تستخدم تابع show_multiply ضمن cout.

الخطأ عندك انو تابع show_multiply عم تساوي جواتو تعليمات cout، والخرج تبعو من النمط int، ومو محدد خرج لإلو إلا return 0 لهيك دائماً عم يخرج 0

الحل: إما تخلي تابع show_multiply يساوي تعليمات cout، وبدون خرج، وبالتالي لح يطبع 5x4x3x2x1، وما تستدعيه ضمن cout تانية خارجية (وهاد الحل يلي استخدمتو بالكود تبعي)

أو إنك تخلي خرج التابع show_multiply من النمط string، وتعملو cout من برا.

تمّ تعديل بواسطة عمار الشيخ

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن