الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مساعدة في البرنامج

مغلق
بدأه maas في 2 يونيو 2005 · 11 رد · 765 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

يا ريت لو أحد منكم يساعدني و يحل مشكلة الكود

و البرنامج يقوم بانه أدخل أي رقم و يقوم و بقسمة الرقم على 2 ثلاث مرات و بعد ذلك يقوم بجمع الأرقام الي حصلنه عليهه من القسمة على 2 و هذي الكود بس مشكلته انه ما يعطي الجواب الصحيح

#include<iostream.h>
int get(int);
int main()
{
	int n;
	cin>>n;
	cout<<"The answer is:  "<<get(n);
	return 0;
}
int get(int n)
{
	int ans,i;
	if(n==1)
  return 1;
	else
	for(i=0;i<3;i++)
	ans=n/2+get(n/2);
	return ans;

}

فيعني مثلا اذا أدخلت الرقم 40 يطلع لي الجواب 39 و الجواب الصح المفروض 35 فيا ريت أحد منكم يساعدني و بأسرع وقت

تم تعديل هذه المشاركة بواسطة احمد غريب في 3 يونيو 2005 في 01:24

#2

وينكم يا شباب الخبرة

#3

اسف و لكن لم افهم فكرة البرنامج

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#4
اقتباس
و يقوم و بقسمة الرقم على 2 ثلاث مرات و بعد ذلك يقوم بجمع الأرقام الي حصلنه عليهه من القسمة على 2

هل تقصد 3*(n/2)؟

#5

يعني تدخل الرقم مثلا 40

40/2=20

20/2=10

10/2=5

و بعد ذلك يقوم بجمع الأرقام=20+10+5=35 الجواب الأخير يكون 35

هذي طريقة البرنامج

#6

و ماحاجتك للRecursion في هذا فهي Loop واحدة

#include<iostream.h>

int main()
{
	int num;
	int sum = 0;
	cin>>num;
	for(int i=0; i< 3; i++)
	{
  num/=2;
  sum+= num;
	}
	cout<<sum;
	return 0;
}

فقط

تم تعديل هذه المشاركة بواسطة bashmohandes في 3 يونيو 2005 في 00:16

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#7

لا الحل مطلوب بالrecursion الله يسلمك

#8

السلام عليكم

اولاً الـrecursion لا تستطيع ان تضعه فى الـmain لا بد من إنشاء داله جديده الفكره كالتالى:

int myrecursion(int x, int y){
if y!=0
z=z+myrecursion(x/2,y--)
return z;
{

int main(){

cout << myrecursion(40,3);

}

هذه طبعاً الفكره وعليك تنسيق الشفره وإستخدامها بطريقتك.

والسلام عليكم

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#9

مشكور اخوي على المساعدة

#10
#include <iostream.h>
int myrecursion(int,int);
int main()
{
cout<<myrecursion(40,3)<<"     ";
return 0;
}
int myrecursion(int x,int y)
{
int z=0;
if(y!=0)
z=z+myrecursion(x/2,y--);
return z;
}

جربت الكود ما يشتغل

تم تعديل هذه المشاركة بواسطة maas في 3 يونيو 2005 في 15:00

#11

الحل

#include<iostream>

using namespace std;

int myrecursion(int x, int y);
int main()
{
	int z;
	cout<<"Enter number : ";
	cin>>z;
	cout<<" \n "<<myrecursion(z, 3)<<" \n ";

	return 0;
}
int myrecursion(int x, int y)
{
	if(x<2 || y==0)
  return 0;
	return x/2 + myrecursion(x/2 , y-1);
}
#12

مشكور أخوي و الله يعطيكم العافية

هذا الموضوع مغلق.

مواضيع مشابهة