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

حساب باقي القسمة للاعداد double

بدأه intel3000 في 8 يونيو 2011 · 6 رد · 1,050 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

اخواني اريد ان اعرف كيف اقوم بحساب باقي القسمة للاعداد double حيث ان المعامل% لايقوم بالمهمة باعتبار انه خاص بالنوع int

وهذا هو كود البرنامج :

#include <iostream>  
#include <fstream>
#include <math.h>

using namespace std;
int main (int* argc , char* argv[]){

     double cry,c;
     double m=65.0,n=17.0,v=32333.0;

     c=pow(m,n);
     cry=c % v;//<---??????
     cout<<"cry= "<<cry<<" \n";
     return 0;
}

ارجوا منكم المساعدة ولكم مني جزيل الشكر ....

#2

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

اخي كما ذكرت يستخدم هذا المعامل مع الاعداد الصحيح ولكن اذا اردتها للاعداد الكسريه يمكنك استخدام الدالة التالية


double modulus(double a, double b)
{
int result = static_cast<int>( a / b );
return a - static_cast<double>( result ) * b;
}

1

.:: Wish to become better and better ::.

#3

هناك دالة تعطيها البسط و المقام و ترجع لك الباقي:

#include <cmath>
#include <cassert>

int main()
{
	double numerator = 4.5, denominator = 3.0;
	assert( fmod(numerator, denominator) == 1.5 );
}
2
#4

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

اخي يمكنك الحصول على نتيجة باقي القسمه باستخدام الداله fmod جرب المثال التالي

#include <stdio.h> #include <math.h>   int main(void) {   double x = 2*3.1415926 + 0.14527, y = 3.1415926;   printf("fmod(x, y) = %.5lf\n", fmod(x, y));   return 0; }

http://www.cplusplus.com/reference/clibrary/cmath/fmod/ في مرجع للسي++

وهذا رابط الداله

.:: Wish to become better and better ::.

#5

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

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

يمكنكم تجريب ذلك بانفسكم مع البرنامج الموجود فوق مع العلم ان النتيجة المطلوبة هي باقي القسمة يساوي 2790.

اعتقد ان المشكل يكمن في ان النوع double طويل جدا.

ارجو المساعدة.

#6

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

اخي جرب المثال التالي ومن ثم طبقه على مثالك السابق


#include <math.h>
#include <stdio.h>

int main( void )
{
double x, y, n;

x = -14.87654321; /* Divide x into its fractional */
y = modf( x, &n ); /* and integer parts */

printf( "For %f, the fraction is %f and the integer is %.f\n",
x, y, n );
}

تم تعديل هذه المشاركة بواسطة VB Helper في 11 يونيو 2011 في 00:53

.:: Wish to become better and better ::.

#7

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

اخواني هذه هي طريقة حساب باقي القسمة للاعداد double حيث ان المعامل% خاصة ب int و fmod لا تعمل مع الاعداد الكبيرة جدا.

وهذا هو كود البرنامج :

#include <iostream>  
#include <fstream>
#include <math.h>

using namespace std;
int main (int* argc , char* argv[]){

    double cry;
    double m=65.0,e=17.0,n=3233.0;

    //حساب: (m^e) mod (n)
	double C = 1.0;

    for(int i=1;i<=e;i++){
      C = fmod(C * m, n);
      C = fmod(C,n);
    }

    cry=C;
	cout<<"cry= "<<cry<<" \n";
    system("PAUSE");
    return EXIT_SUCCESS;
}

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