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

اريد مساعده في تصحيح كود فنكشن

مغلق
بدأه albronzy في 2 يونيو 2007 · 4 رد · 733 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

البرنامج تحويل من binary الىdecimal يعني من ثنائي الى عشري

و الكود هنا

/code

#include <iostream>

using namespace std;

int main ()

{

int binconvert (int binNumber);;

int foo;

cout<<"Enter 8-digit binary number and I'll convert it: ";

cin>>foo;

cout<<foo<< ":"<<binconvert(foo)<<endl;

return 0;

}

/////////////////////////// The Function is right down////////////

int binconvert (int binNumber)

{

int n,n1,n2,n3,n4,n5,n6,n7,n8;

n1=n%2;

n=n/2;

n2=n%2;

n=n/2;

n3=n%2;

n=n/2;

n4=n%2;

n=n/2;

n5=n%2;

n=n/2;

n6=n%2;

n=n/2;

n7=n%2;

n=n/2;

n8=n%2;

n=n/2;

int foo= n1*128+n2*64+n3*32+n4*16+n5*8+n6*4+n7*2+n8*1;

return foo;

}

///////////////////////////////////////////////////

بس ابي اسوي الفنكشن اما الباقي مثل ما هو و بنفس الوقت ما ابغى لا ادخال و لا اخراج داخل الفنكشن

و ما ادري هل الفنكشن اللي انا سويتها صحيحه و الا غلط ,,, نبي نستفيد منكم اخواني,,,

تحياتي لكل من ساعد و راح يساعد و للجميع ,

#2

السلام عليكم و رحمة الله و بركاته أخي لم أفهم قصدك جيدا و لكن جرب هذا هذا الكود بعد التعديل و أنظر هل هذا هو المطلوب .....

#include <iostream>
using namespace std;


int main ()

{

	int binconvert (int );
	int foo;
	cout<<"Enter 8-digit binary number and I'll convert it: ";
	cin>>foo;
	cout<<foo<< ":"<<binconvert(foo)<<endl;
	return 0;
}

/////////////////////////// The Function is right down////////////




int binconvert (int n)
{


	int n1,n2,n3,n4,n5,n6,n7,n8;



	n1=n%2;
	n=n/2;
	n2=n%2;
	n=n/2;
	n3=n%2;
	n=n/2;
	n4=n%2;
	n=n/2;
	n5=n%2;
	n=n/2;
	n6=n%2;
	n=n/2;
	n7=n%2;
	n=n/2;
	n8=n%2;
	n=n/2;

	int foo= n1*128+n2*64+n3*32+n4*16+n5*8+n6*4+n7*2+n8*1;

	return foo;
}

///////////////////////////////////////////////////

الفرق أني أستبدلت

int binconvert (int binNumber)
{

بهذا الكود.

int binconvert (int );

و هذا الكود

int binconvert (int binNumber

بهذا الكود

int binconvert (int n)

و حذفت n من هذا الكود

int n,n1,n2,n3,n4,n5,n6,n7,n8;

أرجوا أن أكون قد أفدتك ....

الـدهـر يـومان ذا أمـن وذا خــطر******* والعيش عيشان ذا صفو وذا كـدر

أمـا تـرى الـبحر تعلو فوقه جـيف****** وتـسـتـقـربإقصى قــاعـه الــــــدرر

وفــي الـسـماء نـجوم لاعـداد لـها ****** ولـيس يـكسف إلا الشمس والقمر

#3

اتوقع ان الدالة الي كاتبها انت ما تقدر تتعامل مع اعداد فيها اكثر من ثمانية خانات ؟

اكتبها في while loop وعرّف متغير وابدأ بالجمع او الضرب حتى يكون الرقم المعطى يساوي صفر مثلاً

#4

بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته

أولا: الخطأ أخي في برنامجك أنه عملية عكسية أولا أعني بذلك أن الطريقة التي تتبعها في التحويل من ثنائي إلى عشري هي خاطئة لأنها تستخدم في العكس آي للتحويل من عشري إلى ثنائي وحتى لو كنت تريد أستخدامها للتحويل من عشري إلى ثنائي لما استطعت وذلك لأن السطر الأخير الذي تقوم فيه بالضرب مع الأعداد والجمع هو سطر معكوس بالكامل(أي العدد n1يجب ضربه بـ1) الإضافة إلى الكثير من الأخطاء المنطقية آسف أخي على كل هذا النقد لكن ما أفعل هذا إلا للفائدة أخي وإن شاء الله نحن أخوة

و لقد قمت بكتابة البرنامج ولكن عدلت على البرنامج تعديلات جذرية بالإضافة إلى أنني جعلته قابل لإدخال بالثنائي مهما كان الطول ومهما قصر بمعنى أخر لا يهم الطول

فكرة الحل :

1- قمت بتخزين العدد على string(سلسلة محارف)وليست (سلسلة حرفية)

2- أدخلت السلسلة الحرفية في برنامج جزئي

3- خزنت طول السلسلة في متحول

4- استخدمت متحول طول السلسلة في حلقة

5- وضعت داخل الحلقة شرط يتعلق بقيمة السلسلة في نقطة معينة مع ال1 (بالمناسبة هنا تم التعامل مع الـ 1 كمحرف لا كرقم)

6- وضعت داخل الشرط العمليات الرياضية المناسبة لكي يتم حساب القيمة ووضعت متحول يتم تخزين الناتج النهائي به

#include <math.h>
#include <string>
#include <iostream>
using namespace std;
int binconvert (string);
int main (){
string binary;
cout <<endl<<"please insert the number in binary :"<<endl;
cin >>binary;
int dec=binconvert(binary);
cout <<"the number in decimal is :"<<dec<<endl;
return 0;
}
int binconvert (string a)
{	int i=a.length();
	int total=0;
	int n=-1;
	for (int t=i;t>0;t--)
	{
		n++;
		if (a.at(t-1)=='1')
		total=total +pow (2.0,n);
	}
	return total;
}

أتمنى أن أكون قد أفدت

أخوك في الله سامر

تم تعديل هذه المشاركة بواسطة samer226047 في 3 يونيو 2007 في 10:57

إن كلماتنا ستبقى ميتة أعراساً من الشموع لا حراك فيها جامدة ، حتى إذا متنا من أجلها انتفضت حية وعاشت بين الأحياء ، كل كلمة عاشت كانت قد اقتاتت قلب إنسان حي ، فعاشت بين الأحياء ، والأحياء لا يتبنون الأموات

الليل ولى وجاء دورك يا صباح سفينة الإيمان سارت لا تبالي بالرياح

ولا تنسوني من دعائكم

#5

صحيح انتبهم للخطأ انه عمليه عكسيه بدل القسمه على 2 حولتها الى 10

n1=n%10;

n=n%10;

و اشتغل معاي البرنامج

مشكورين اخواي على المساعده تحياتي لكم جميعاً

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…