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

تصحيح الإيرور في كود -آلة حاسبة بسيطة- بلغة c++

بدأه I L Technology في 27 يوليو 2012 · 19 رد · 2,494 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

لديّ مشروع لمادة البرمجة (1) c++ عبارة عن آلة حاسبة بسيطة وقد أتممت كتابة الكود -الكود موجود في المرفقات- باستخدام الفنكشن

لكن وجدت صعوبة في تطبيق شرط أن يُسمح لليوزر بإدخال رقمين أو ((أكثر )) لإتمام عملية الجمع والطرح والضرب والقسمة والأكبر والأصغر عدد !

استخدمت الفور لوب لإدخال أكثر من رقمين , لكن ظهر 19 إيرور ..

ارجو منكم أن تساعدوني في تصحيح الإيرور وتشغيل الآلة بالشكل الصحيح قبل منتصف الليل غدًا ..

هذا هو السؤال : والكود في المرفقات كما أسلفت ..

Write a C++ program to simulate a calculator for addition,

subtraction , multiplication, division , square root , factorial ,

Modulus , maximum , minimum and average operations :

1- A welcome message and the name of the project at first .

2- Operations are selected from the menu at first .

3- Define a function for each operation.

4- After the implementation of operation, ask the users if

they want another operation .

5- Take all values from the user .

6- Notes :

1- addition, subtraction , multiplication, division ,maximum

, minimum and average operations can be applied on

two numbers and more .

2- square root and factorial operations can be only

applied on one number.

3- Modulus operations can be only applied on two

numbers.

project1.cpp

تم تعديل هذه المشاركة بواسطة I L Technology في 27 يوليو 2012 في 21:20

#2
#include <iostream>
#include <cmath>
#include <iomanip>

using namespace std;

void Addition ( double [] , int );
void Subtraction ( double [] , int );
void Multiplication ( double [] , int );
void Division ( double [] , int );
void SqareRoot ( double );
void Factorial ( unsigned long );
void Modulus  ( double , double  );
void Minimum ( double [] , int );
void Maxmum ( double [] , int );


int main ()
{
	int choice , x;
	int ArrySize=0;
	double arry;
	double number1 , number2;
	unsigned long FactNum;



	do 
	{
		do
		{

	cout<<"\n\n";
	cout<<"       **************** Welcom To Our Calculator **************** "<<endl;
	cout << "\n\n\n                M E N U \n\n";
    cout <<" Addition operation ------------> 1\n";                         
    cout <<" Subtraction operation ---------> 2\n";
    cout <<" Multiplication operation ------> 3\n";
    cout <<" Division operation ------------> 4\n";
    cout <<" Sqare root operation ----------> 5\n";
	cout <<" Factorial operation -----------> 6\n";
	cout <<" Modulus operation -------------> 7\n";
    cout <<" Maximum operation -------------> 8\n";
	cout <<" Minimum operation -------------> 9\n";
	cout <<" Exit the calculator -----------> 10\n";
    cout <<"\n Enter your choice please : ";
    cin >>choice;

		} while (choice<1 || choice > 5);


		 switch 
			 (choice)

                {
					case 1 :
						cout<<"\n\n Enter the numbers:";

						for ( int i=0; i<x ; i++)
						ArrySize += 1;

						cin>>arry;
						Addition (arry ,ArrySize);

						break;



					case 2 :
						cout<<"\n\n Enter the numbers:";

						for ( int i=0; i<x ; i++)
						ArrySize += 1;

						cin>>arry;
						Subtraction (arry ,ArrySize);

						break;



					case 3 :
						cout<<"\n\n Enter the numbers:";

						for ( int i=0; i<x ; i++)
						ArrySize += 1;

						cin>>arry;
						Multiplication (arry ,ArrySize);

						break;



					case 4 :
						cout<<"\n\n Enter the numbers:";

						for ( int i=0; i<x ; i++)
						ArrySize += 1;

						cin>>arry;
						Division (arry ,ArrySize);

						break;



					case 5 :
						cout<<"\n\n Enter a number:";
						cin>>number1;
						SqareRoot ( number1 );

						break;




					case 6 :
						cout<<"\n\n Enter a number:";
						cin>>FactNum;
						Factorial ( FactNum );

						break;



					case 7 :
						cout<<"\n\n Enter two numbers:";
						cin>>number1>>number2;
						Modulus ( number1 , number2);

						break;



					case 8 :
						cout<<"\n\n Enter the numbers:";

						for ( int i=0; i<x ; i++)
						ArrySize += 1;

						cin>>arry;
						Maximaum (arry ,ArrySize);

						break;



					case 9 :
						cout<<"\n\n Enter the numbers:";						
						for ( int i=0; i<x; i++)
						ArrySize += 1;
						Minimum (arry ,ArrySize);

						break;



					case 10 :
						cout <<"\n\n End of job thank you....";
						break;

		 }

	} while (choice !=5); 



cin.get();
return 0;
}


void Addition ( double arry1[] , int ArrySize1 )
{
	double result=0;
	for( int j=0; j<ArrySize1; j++)
		result+= arry1[j];
	cout<<"The result is :"<<" "<<result;
}

void Subtraction ( double arry1[] , int ArrySize1 )
{
	double result=0;
	for( int j=0; j<ArrySize1; j++)
		result-= arry1[j];
	cout<<"The result is :"<<" "<<result;
}

void Multiplication  ( double arry1[] , int ArrySize1 )
{
	double result=1;
	for( int j=0; j<ArrySize1; j++)
		result*= arry1[j];
	cout<<"The result is :"<<" "<<result;
}

void Division  ( double arry1[] , int ArrySize1 )
{
	double result=1;
	for( int j=0; j<ArrySize1; j++)
		result/= arry1[j];
	cout<<"The result is :"<<" "<<result;
}


void SqareRoot ( double num1 )
{
	cout<<"The result is :"<<" "<<sqrt(num1);
}


void Modulus ( double numb1 , double numb12 )
{
	double result=0;
		result= numb1 % numb2 ;
	cout<<"The result is :"<<" "<<result;
}

void Factorial( unsigned long num )
 {                                                                             
      if ( num <= 1 )                           
		  return 1;                                

	  else                                        
		  return num * factorial( num - 1 ); 
}

void Maximum ( double arry1[] , int ArrySize1 )
{
	double Max=arry1[0];
	for( int j=0; j<ArrySize1; j++)
	{
		if ( arry1[j] > Max )
			Max=arry1[j];
	}

	cout<<"The result is :"<<" "<<Max;
}
void Multiplication ( double [] , int );

هذا هو الكود إن لم يفتح في المرفقات ..

#3

السلام عليكم أول خطأ أجده هو أنك وضعت في بعض الدوال double arry1[]

ولكنك تمرر لهم double arry;

+لمادا هدا الكود ما عمله do

{

	cout<<"\n\n";
	cout<<"   	**************** Welcom To Our Calculator **************** "<<endl;
	cout << "\n\n\n            	M E N U \n\n";
	cout <<" Addition operation ------------> 1\n";                     	
	cout <<" Subtraction operation ---------> 2\n";
	cout <<" Multiplication operation ------> 3\n";
	cout <<" Division operation ------------> 4\n";
	cout <<" Sqare root operation ----------> 5\n";
	cout <<" Factorial operation -----------> 6\n";
	cout <<" Modulus operation -------------> 7\n";
	cout <<" Maximum operation -------------> 8\n";
	cout <<" Minimum operation -------------> 9\n";
	cout <<" Exit the calculator -----------> 10\n";
	cout <<"\n Enter your choice please : ";
	cin >>choice;

		} while (choice<1 || choice > 5);

تم تعديل هذه المشاركة بواسطة the inventor habib في 27 يوليو 2012 في 21:51

#4

+ x لم تعطيه أي قيمة وأ،ت استعمته في for

يعني أنت تريد x أن يكون عدد العمليات يعني 2 + 5 + 8 + 9 ...

+while (choice !=5); أنت تريد الخروج من الحاسبة عندما يصبح while (choice !=10); وليس 5 يمكنك الاستغناء عنها.

تم تعديل هذه المشاركة بواسطة the inventor habib في 27 يوليو 2012 في 21:58

#5

أرجو تجربت هدا الكود

#include <iostream>
#include <cmath>

using namespace std;

void Addition ( double hh[] , int h);
void Subtraction ( double hh[] , int h);
void Multiplication ( double hh[] , int h);
void Division ( double hh[] , int h );
void SqareRoot ( double hh );
int Factorial ( unsigned long h);
void Modulus  ( double hh, double  h);
void Minimum ( double hh[] , int h);
void Maximum ( double hh[] , int h);


int main ()
{
	int choice , x=5;
	int ArrySize=0;
	double arry[100];
	double number1 , number2;
	unsigned long FactNum;
	int u=0;


	while(u<5)
	{
	cout<<"\n\n";
	cout<<"   	**************** Welcom To Our Calculator **************** "<<endl;
	cout << "\n\n\n            	M E N U \n\n";
	cout <<" Addition operation ------------> 1\n";
	cout <<" Subtraction operation ---------> 2\n";
	cout <<" Multiplication operation ------> 3\n";
	cout <<" Division operation ------------> 4\n";
	cout <<" Sqare root operation ----------> 5\n";
	cout <<" Factorial operation -----------> 6\n";
	cout <<" Modulus operation -------------> 7\n";
	cout <<" Maximum operation -------------> 8\n";
	cout <<" Minimum operation -------------> 9\n";
	cout <<" Exit the calculator -----------> 10\n";
	cout <<"\n Enter your choice please : ";
	cin >>choice;
		 switch(choice)

            	{
                	ArrySize=0;
                	x=5;
					case 1 :
						cout<<"\n\n Enter the numbers:";

						for ( int i=0; i<x; i++)
						{
                        	ArrySize++;
                        	cin>>arry;
                        	i++;
						}
						Addition (&arry[0] ,ArrySize);

						break;



					case 2 :
						cout<<"\n\n Enter the numbers:";

						for ( int i=0; i<x; i++)
						{
                        	ArrySize++;
                        	cin>>arry;
                        	i++;
						}
						Subtraction (&arry[0] ,ArrySize);

						break;



					case 3 :
						cout<<"\n\n Enter the numbers:";

						for ( int i=0; i<x; i++)
						{
                        	ArrySize++;
                        	cin>>arry;
                        	i++;
						}
						Multiplication (&arry[0] ,ArrySize);
						break;


					case 4 :
						cout<<"\n\n Enter the numbers:";

						for ( int i=0; i<x; i++)
						{
                        	ArrySize++;
                        	cin>>arry;
                        	i++;
						}
						Division (&arry[0],ArrySize);

						break;



					case 5 :
						cout<<"\n\n Enter a number:";
						cin>>number1;
						SqareRoot ( number1 );
						break;




					case 6 :
						cout<<"\n\n Enter a number:";
						cin>>FactNum;
						Factorial ( FactNum );

						break;



					case 7 :
						cout<<"\n\n Enter two numbers:";
						cin>>number1>>number2;
						Modulus ( number1 , number2);

						break;



					case 8 :
						cout<<"\n\n Enter the numbers:";

						for ( int i=0; i<x; i++)
						{
                        	ArrySize++;
                        	cin>>arry;
                        	i++;
						}
						Maximum (&arry[0],ArrySize);

						break;



					case 9 :
						cout<<"\n\n Enter the numbers:";
						for ( int i=0; i<x; i++)
						{
                        	ArrySize++;
                        	cin>>arry;
                        	i++;
						}
						Minimum(&arry[0],ArrySize);
						break;



					case 10 :
						cout <<"\n\n End of job thank you....";
						u=5;/////////>=5
						break;

		 }
	}



cin.get();
return 0;
}


void Addition ( double arry1[] , int ArrySize1 )
{
	double result=0;
	for( int j=0; j<ArrySize1; j++)
		result+= arry1[j];
	cout<<"The result is :"<<" "<<result;
}

void Subtraction ( double arry1[] , int ArrySize1 )
{
	double result=0;
	for( int j=0; j<ArrySize1; j++)
		result-= arry1[j];
	cout<<"The result is :"<<" "<<result;
}

void Multiplication  ( double arry1[] , int ArrySize1 )
{
	double result=1;
	for( int j=0; j<ArrySize1; j++)
		result*= arry1[j];
	cout<<"The result is :"<<" "<<result;
}

void Division  ( double arry1[] , int ArrySize1 )
{
	double result=1;
	for( int j=0; j<ArrySize1; j++)
		result/= arry1[j];
	cout<<"The result is :"<<" "<<result;
}


void SqareRoot ( double num1 )
{
	cout<<"The result is :"<<" "<<sqrt(num1);
}


void Modulus ( double numb1 , double numb2 )
{
	double result=0;
		result= (int)numb1 % (int)numb2 ;
	cout<<"The result is :"<<" "<<result;
}

int Factorial( unsigned long num )
 {
  	if ( num <= 1 )
		  return 1;

	  else
		  return num * Factorial( num - 1 );
}

void Maximum ( double arry1[] , int ArrySize1 )
{
	double Max=arry1[0];
	for( int j=0; j<ArrySize1; j++)
	{
		if ( arry1[j] > Max )
			Max=arry1[j];
	}

	cout<<"The result is :"<<" "<<Max;
}
void Multiplication ( double arr[] , int size)
{
	int res;
	int y=0;
	while(y<size)
	{
    	res *=arr[y];
	}
	cout<<"The result is :"<<" "<res<<endl;
}
1
#6
the inventor habib كتب:

السلام عليكم أول خطأ أجده هو أنك وضعت في بعض الدوال double arry1[]

ولكنك تمرر لهم double arry;

+لمادا هدا الكود ما عمله do

{

	cout<<"\n\n";
	cout<<"   	**************** Welcom To Our Calculator **************** "<<endl;
	cout << "\n\n\n            	M E N U \n\n";
	cout <<" Addition operation ------------> 1\n";                     	
	cout <<" Subtraction operation ---------> 2\n";
	cout <<" Multiplication operation ------> 3\n";
	cout <<" Division operation ------------> 4\n";
	cout <<" Sqare root operation ----------> 5\n";
	cout <<" Factorial operation -----------> 6\n";
	cout <<" Modulus operation -------------> 7\n";
	cout <<" Maximum operation -------------> 8\n";
	cout <<" Minimum operation -------------> 9\n";
	cout <<" Exit the calculator -----------> 10\n";
	cout <<"\n Enter your choice please : ";
	cin >>choice;

		} while (choice<1 || choice > 5);

مررتها باسم مختلف لأن الفنكشن حين تُمرر يجب أن تُغيّر اسم البارامترات !! أم أنني على خطأ ؟!

و ال do وضعتها لأجل الخروج من البرنامج في حين يختار اليوزر الخروج من البرنامج ..

لكني لست متأكدة من صحة فعلي .

the inventor habib كتب:

+ x لم تعطيه أي قيمة وأ،ت استعمته في for

يعني أنت تريد x أن يكون عدد العمليات يعني 2 + 5 + 8 + 9 ...

+while (choice !=5); أنت تريد الخروج من الحاسبة عندما يصبح while (choice !=10); وليس 5 يمكنك الاستغناء عنها.

نعم قصدت أن يكون x أي عدد صحيح يعني عدد العمليات

صحيح نسيت أن أعدل الـ 5 في الشرط ..

يبدو أن كودي خاطئ 60% ..

the inventor habib كتب:

أرجو تجربت هدا الكود

#include <iostream>
#include <cmath>

using namespace std;

void Addition ( double hh[] , int h);
void Subtraction ( double hh[] , int h);
void Multiplication ( double hh[] , int h);
void Division ( double hh[] , int h );
void SqareRoot ( double hh );
int Factorial ( unsigned long h);
void Modulus  ( double hh, double  h);
void Minimum ( double hh[] , int h);
void Maximum ( double hh[] , int h);


int main ()
{
	int choice , x=5;
	int ArrySize=0;
	double arry[100];
	double number1 , number2;
	unsigned long FactNum;
	int u=0;


	while(u<5)
	{
	cout<<"\n\n";
	cout<<"   	**************** Welcom To Our Calculator **************** "<<endl;
	cout << "\n\n\n            	M E N U \n\n";
	cout <<" Addition operation ------------> 1\n";
	cout <<" Subtraction operation ---------> 2\n";
	cout <<" Multiplication operation ------> 3\n";
	cout <<" Division operation ------------> 4\n";
	cout <<" Sqare root operation ----------> 5\n";
	cout <<" Factorial operation -----------> 6\n";
	cout <<" Modulus operation -------------> 7\n";
	cout <<" Maximum operation -------------> 8\n";
	cout <<" Minimum operation -------------> 9\n";
	cout <<" Exit the calculator -----------> 10\n";
	cout <<"\n Enter your choice please : ";
	cin >>choice;
		 switch(choice)

            	{
                	ArrySize=0;
                	x=5;
					case 1 :
						cout<<"\n\n Enter the numbers:";

						for ( int i=0; i<x; i++)
						{
                        	ArrySize++;
                        	cin>>arry;
                        	i++;
						}
						Addition (&arry[0] ,ArrySize);

						break;



					case 2 :
						cout<<"\n\n Enter the numbers:";

						for ( int i=0; i<x; i++)
						{
                        	ArrySize++;
                        	cin>>arry;
                        	i++;
						}
						Subtraction (&arry[0] ,ArrySize);

						break;



					case 3 :
						cout<<"\n\n Enter the numbers:";

						for ( int i=0; i<x; i++)
						{
                        	ArrySize++;
                        	cin>>arry;
                        	i++;
						}
						Multiplication (&arry[0] ,ArrySize);
						break;


					case 4 :
						cout<<"\n\n Enter the numbers:";

						for ( int i=0; i<x; i++)
						{
                        	ArrySize++;
                        	cin>>arry;
                        	i++;
						}
						Division (&arry[0],ArrySize);

						break;



					case 5 :
						cout<<"\n\n Enter a number:";
						cin>>number1;
						SqareRoot ( number1 );
						break;




					case 6 :
						cout<<"\n\n Enter a number:";
						cin>>FactNum;
						Factorial ( FactNum );

						break;



					case 7 :
						cout<<"\n\n Enter two numbers:";
						cin>>number1>>number2;
						Modulus ( number1 , number2);

						break;



					case 8 :
						cout<<"\n\n Enter the numbers:";

						for ( int i=0; i<x; i++)
						{
                        	ArrySize++;
                        	cin>>arry;
                        	i++;
						}
						Maximum (&arry[0],ArrySize);

						break;



					case 9 :
						cout<<"\n\n Enter the numbers:";
						for ( int i=0; i<x; i++)
						{
                        	ArrySize++;
                        	cin>>arry;
                        	i++;
						}
						Minimum(&arry[0],ArrySize);
						break;



					case 10 :
						cout <<"\n\n End of job thank you....";
						u=5;/////////>=5
						break;

		 }
	}



cin.get();
return 0;
}


void Addition ( double arry1[] , int ArrySize1 )
{
	double result=0;
	for( int j=0; j<ArrySize1; j++)
		result+= arry1[j];
	cout<<"The result is :"<<" "<<result;
}

void Subtraction ( double arry1[] , int ArrySize1 )
{
	double result=0;
	for( int j=0; j<ArrySize1; j++)
		result-= arry1[j];
	cout<<"The result is :"<<" "<<result;
}

void Multiplication  ( double arry1[] , int ArrySize1 )
{
	double result=1;
	for( int j=0; j<ArrySize1; j++)
		result*= arry1[j];
	cout<<"The result is :"<<" "<<result;
}

void Division  ( double arry1[] , int ArrySize1 )
{
	double result=1;
	for( int j=0; j<ArrySize1; j++)
		result/= arry1[j];
	cout<<"The result is :"<<" "<<result;
}


void SqareRoot ( double num1 )
{
	cout<<"The result is :"<<" "<<sqrt(num1);
}


void Modulus ( double numb1 , double numb2 )
{
	double result=0;
		result= (int)numb1 % (int)numb2 ;
	cout<<"The result is :"<<" "<<result;
}

int Factorial( unsigned long num )
 {
  	if ( num <= 1 )
		  return 1;

	  else
		  return num * Factorial( num - 1 );
}

void Maximum ( double arry1[] , int ArrySize1 )
{
	double Max=arry1[0];
	for( int j=0; j<ArrySize1; j++)
	{
		if ( arry1[j] > Max )
			Max=arry1[j];
	}

	cout<<"The result is :"<<" "<<Max;
}
void Multiplication ( double arr[] , int size)
{
	int res;
	int y=0;
	while(y<size)
	{
    	res *=arr[y];
	}
	cout<<"The result is :"<<" "<res<<endl;
}

للأسف لم يشتغل , ظهر لي 4 إيرور ..

#7

المشكل في نوع البرامترات عليك أن تتحقق منهم.

والسلام

أسف لانني لم أساعدك لما فيه الكفاية ليس لدي الوقت الكافي لمساعدتك.

#8

حسنًا جزاكم الله خير ..

#9
اقتباس
وجدت صعوبة في تطبيق شرط أن يُسمح لليوزر بإدخال رقمين أو ((أكثر )) لإتمام عملية الجمع والطرح والضرب والقسمة والأكبر والأصغر عدد !

ماذا تقصد بـــ "إدخال رقمين أو أكثر" ؟

#10
اقتباس
ماذا تقصد بـــ "إدخال رقمين أو أكثر" ؟

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

#11

و ماهو مقدار الكمية المسموحة ؟

هل يريد شيئا كهذا ؟

#include <stdio.h>
#define MAX 4
int main() {
	 int i = 0, sum = 0,n;
	 while(i++ <= MAX)  {
			scanf("%d",&n);
			sum+=n;
	 }
	  printf("--------------\nsum = %d",sum);
	 return 0;
}
#12
أحمد الشنقيطي كتب:

و ماهو مقدار الكمية المسموحة ؟

هل يريد شيئا كهذا ؟

#include <stdio.h>
#define MAX 4
int main() {
	 int i = 0, sum = 0,n;
	 while(i++ <= MAX)  {
			scanf("%d",&n);
			sum+=n;
	 }
	  printf("--------------\nsum = %d",sum);
	 return 0;
}

جُزيت خيرًا لكننا لم نستخدم مكتبة الـ stdio.h

ولا الـ define ولا الـ scanf , printf

نحن مبتدئين في البرمجة1 :(

#13

الكود الذي وضعه أحمد مكتوب بالسي, بالسي++ يكون هكذا :

#include <iostream>
using namespace std;
int main() {
    int i = 0, sum = 0,n;
    int const MAX = 4;
    while(i++ < MAX)  {
        cin>>n;
        sum+=n;
    }
    cout<<"--------------"<<endl<<"sum = "<<sum;
    return 0;
}

تم تعديل هذه المشاركة بواسطة khaled_prg في 28 يوليو 2012 في 16:53

1
#14

^

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

هذا كود آخر كتبه لي أحدهم :

#include <iostream>
using namespace std;

double SumNum (double &nA, double &nB); //addition function prototype
double SubNum (double &nA, double &nB); //subtraction function prototype
double MultNum (double &nA, double &nB); //multiplication function prototype
double DivNum (double &nA, double &nB); //division function prototype
double MaxNum (double &nA, double &nB);//Maximum function prototype
double MinNum (double &nA, double &nB);//Minimum function prototype
double FactNum (double &nA);//Factorial function prototype
int ModNum (double &nA, double &nB); //modulo function prototype

//begin execution of function main
int main ()
{
	double *num1 = new double; //first number user enters
	double *num2 = new double; //second number user enters
    char *oprd = new char; //operand user enter
	char *cnt = new char; //ask user if continue program

	cout << "\n*****************Welcome to Calculator!******************\t\t\n" << endl;

	do {
		cout << "Enter the operand (+, -, *, /, %  , Max , Min , ! ,) for the" << endl;
		cout <<	"operation you wish to perform:" << endl; //prompt user for desired operation
		cin >> *oprd; //input operand

		cout << "Enter two numbers (separate with space):" << endl;
		cin >> *num1; //input first number
		cin	>> *num2; //input second number

		if (*oprd == '+') //addition condition
			cout << SumNum(*num1, *num2) << endl;

		else if (*oprd == '-') //subtraction condition
			cout << SubNum(*num1, *num2) << endl;

		else if (*oprd == '*') //multiplication condition
			cout << MultNum(*num1, *num2) << endl;

		else if (*oprd == '/' && *num2 != 0) //division condition
			cout << DivNum(*num1, *num2) << endl;

		else if (*oprd == '%') //modulo condition
			cout << ModNum(*num1, *num2) << endl;

		else if (*oprd == 'Max') //maximum condition
			cout << MaxNum(*num1, *num2) << endl;

		else if (*oprd == 'Min') //minimum condition
			cout << MinNum(*num1, *num2) << endl;

		else if (*oprd == '!') //factorial condition
			cout << FactNum(*num1) << endl;

		else //illustrate to user error occurred
			cout << "Error..." << endl;

        //prompt user to continue
		cout << "Do you want to continue? \n(enter 'y' to continue or 'n' to exit):" << endl;

		cin >> *cnt; //pointer to anonymous variable continue
	} while (*cnt == 'y'); //condition to continue program

	cout << "Exiting..." << endl; //illustrate program exit

    return 0; //successful program termination
} //end function main



//addition function
double SumNum (double &nA, double &nB)
{
	return (nA + nB);
}

//subtraction function
double SubNum (double &nA, double &nB)
{
	return (nA - nB);
}

//numtiplication function
double MultNum(double &nA, double &nB)
{
	return (nA * nB);
}

//division function
double DivNum(double &nA, double &nB)
{
	return (nA / nB);
}

//modulo function
int ModNum(double &nA, double &nB)
{
	return (int)nA % nB;
}

//maximum function
double MaxNum (double &nA, double &nB)
{
	double max=nA;
	if (nB>nA)
		max= nB;
}

//minimum function
double MinNum (double &nA, double &nB)
{
	double min=nA;
	if (nB<nA)
		min=nB;
}
double FactNum (double &nA)
{    

   // base case                                
   if ( nA <= 1 )                          
       return 1;                                

   // recursive step                           
    else                                        
       return nA * factorial( nA - 1 ); 

    }

يظهر لي 2 إيرور في ريتيرن فنكشن الـ FactNum و الـ ModNum _ في المرفقات صورة _

هل من مساعدة !! تسليمه قبل الساعة 12 صباحا :(

post-261813-035402500 1343498358_thumb.j

المرفقات
التقاط.JPGds.JPG

تم تعديل هذه المشاركة بواسطة I L Technology في 28 يوليو 2012 في 21:05

#15

الخطأ الأول في الدالة:

int ModNum(double &nA, double &nB)
{
    	return (int)nA % nB;
}

إذا ماحولنا nA لنوع int وتركنا nB على نوع double لن يتحول nB وبهذا لن تحصل عملية modulo بشكلها الصحيح

حول الإثنين معا وتفادى مثل هذه الأخطاء

int ModNum(double &nA, double &nB)
{
    	return (int)nA % (int)nB;
}

الخطأ الثاني هنا

double FactNum (double &nA)
{

   // base case
   if ( nA <= 1 )
   	return 1;

   // recursive step
	else
   	return nA * factorial( nA - 1 );

	}

من أين جئت بالدالة factorial ؟ ؟؟؟

الخطأ الثالت في هذه الدالة

//maximum function
double MaxNum (double &nA, double &nB)
{
    	double max=nA;
    	if (nB>nA)
            	max= nB;
}

//minimum function
double MinNum (double &nA, double &nB)
{
    	double min=nA;
    	if (nB<nA)
            	min=nB;
}

لا وجود لإعادة قيمة no return !!!

خطأ رابع

لا يمكنا مقارنة حرف مع مصفوفة من الحروف

"" >= '' || "" != ''  // ==> FALSE

الكود بعد التصحيح

#include <iostream>
using namespace std;

double SumNum (double &nA, double &nB); //addition function prototype
double SubNum (double &nA, double &nB); //subtraction function prototype
double MultNum (double &nA, double &nB); //multiplication function prototype
double DivNum (double &nA, double &nB); //division function prototype
double MaxNum (double &nA, double &nB);//Maximum function prototype
double MinNum (double &nA, double &nB);//Minimum function prototype
double FactNum (double nA);//Factorial function prototype
int ModNum (double &nA, double &nB); //modulo function prototype

//begin execution of function main
int main ()
{
    	double *num1 = new double; //first number user enters
    	double *num2 = new double; //second number user enters
    	char   oprd = 0; //operand user enter
    	char   *cnt = new char; //ask user if continue program



    	cout << "\n*****************Welcome to Calculator!******************\t\t\n" << endl;

    	do {
            	cout << "Enter the operand :\n\n\n1: +\n2: -\n3: *\n4: /\n5: %\n6: Fact\n7: Max\n8: Min\n" << endl;
            	cout << "operation you wish to perform:" << endl; //prompt user for desired operation
            	cin >> oprd; //input operand

            	cout << "Enter two numbers (separate with space):\t" << endl;
            	cin >>   *num1; //input first number
            	cin 	>> *num2; //input second number

            	if (oprd == '1') //addition condition
                    	cout << SumNum(*num1, *num2) << endl;

            	else if (oprd == '2') //subtraction condition
                    	cout << SubNum(*num1, *num2) << endl;

            	else if (oprd == '3') //multiplication condition
                    	cout << MultNum(*num1, *num2) << endl;

            	else if (oprd == '4' && *num2 != 0) //division condition
                    	cout << DivNum(*num1, *num2) << endl;

            	else if (oprd == '5') //modulo condition
                    	cout << ModNum(*num1, *num2) << endl;

            	else if (oprd == '6') //factorial condition
                    	cout << FactNum(*num1) << endl;

            	else if (oprd == '7') //maximum condition
                    	cout << MaxNum(*num1, *num2) << endl;

            	else if (oprd == '8') //minimum condition
                    	cout << MinNum(*num1, *num2) << endl;


            	else //illustrate to user error occurred
                    	cout << "Error..." << endl;

    	//prompt user to continue
            	cout << "Do you want to continue? \n(enter 'y' to continue or 'n' to exit):" << endl;

            	cin >> *cnt; //pointer to anonymous variable continue
    	} while (*cnt == 'y'); //condition to continue program

    	cout << "Exiting..." << endl; //illustrate program exit

	return 0; //successful program termination
} //end function main



//addition function
double SumNum (double &nA, double &nB)
{
    	return (nA + nB);
}

//subtraction function
double SubNum (double &nA, double &nB)
{
    	return (nA - nB);
}

//numtiplication function
double MultNum(double &nA, double &nB)
{
    	return (nA * nB);
}

//division function
double DivNum(double &nA, double &nB)
{
    	return (nA / nB);
}

//modulo function
int ModNum(double &nA, double &nB)
{
    	return (int)nA % (int)nB;
}

//maximum function
double MaxNum (double &nA, double &nB)
{
    	double max=(nA>nB)? nA:nB;
    	return max;
}

//minimum function
double MinNum (double &nA, double &nB)
{
    	double min=(nA<nB)? nA:nB;
    	return min;
}
double FactNum (double nA)
   {

   // base case
   if ( nA <2 )
   	return 1;

   // recursive step
	else
   	return nA * FactNum( nA - 1 );

	}

و رمضان مبارك سعيد

تم تعديل هذه المشاركة بواسطة مومو (momo) في 28 يوليو 2012 في 23:19

3

i love you mama

#16

جزاك الله كل الخير

والله أنّك فرّجت علي كربة وهم لا يعلمه إلا الله ..

سؤال أخير , هل تستطيع أن تجعل الجمع والضرب والقسمة والطرح سموح لأكثر من رقمين ؟!

#17

سويت رن للبرنامج وصار يطلع لي دايم إيرور عالشاشة :

post-261813-051031700 1343507523_thumb.j

المرفقات
sdf.JPG
#18
I L Technology كتب:

سويت رن للبرنامج وصار يطلع لي دايم إيرور عالشاشة :

مثلا إذا أردت أن تقوم بعملية ' + ' عليك أن تضغط على الرقم '1 ' و عملية الطرح تضغط رقم '2' وهكذا ..

I L Technology كتب:

سؤال أخير , هل تستطيع أن تجعل الجمع والضرب والقسمة والطرح سموح لأكثر من رقمين ؟!

قم فقط بإنشاء مصفوفة أعداد !!!

2

i love you mama

#19

جزاك الله خيرًا

وشكرًا لك من ساعدني أو حتى حاول مساعدتي ..

#20
I L Technology كتب:

سويت رن للبرنامج وصار يطلع لي دايم إيرور عالشاشة :

اعذرني أخي لم أنتبه لبعض الأخطاء في الكود

فمثلا لا يمكننا كتابة الدالة هكذا

double DivNum(double &nA, double &nB)
{
    	return (nA / nB);
}

ثم نستدعيها بهذا الشكل !!!

DivNum(*nA, *nB)

التصحيح

DivNum (&nA, &nB); // استدعاء الدالة


double DivNum(double *nA,double *nB)
{
    	return (*nA) / (*nB);
}

الكود بعد تصحيح أجزاء منه

#include <iostream>
using namespace std;

double SumNum (double nA, double nB); //addition function prototype
double SubNum (double nA, double nB); //subtraction function prototype
double MultNum (double nA, double nB); //multiplication function prototype
double DivNum (double nA, double nB); //division function prototype
double MaxNum (double nA, double nB);//Maximum function prototype
double MinNum (double nA, double nB);//Minimum function prototype
long FactNum  (long nA);//Factorial function prototype
long ModNum   (long nA, long nB); //modulo function prototype

//begin execution of function main
int main ()
{
    	double num1 = 0; //first number user enters
    	double num2 = 0; //second number user enters
    	long	a=0; // // for FactNum() || ModNum()
    	long	b=0; // for  ModNum()
    	char   oprd = 0; //operand user enter
    	char   *cnt = new char; //ask user if continue program


    	cout << "\n*****************Welcome to Calculator!******************\t\t\n" << endl;

    	do {
            	cout << "Enter the operand :\n\n\n1: +\n2: -\n3: *\n4: /\n5: %\n6: Fact\n7: Max\n8: Min\n" << endl;
            	cout << "operation you wish to perform:" << endl; //prompt user for desired operation
            	cin >> oprd; //input operand

            	cout << "Enter two numbers (separate with space):\t" << endl;
            	cin >>   num1; //input first number
            	cin >>   num2; //input second number
            	a=num1; // for FactNum() || ModNum()
            	b=num2; // for ModNum()

            	if (oprd == '1') //addition condition
                    	cout << SumNum(num1, num2) << endl;

            	else if (oprd == '2') //subtraction condition
                    	cout << SubNum(num1, num2) << endl;

            	else if (oprd == '3') //multiplication condition
                    	cout << MultNum(num1, num2) << endl;

            	else if (oprd == '4' && num2 != 0) //division condition
                    	cout << DivNum(num1, num2) << endl;

            	else if (oprd == '5') //modulo condition
                    	cout << ModNum(a, b) << endl;

            	else if (oprd == '6') //factorial condition
                    	cout <<'!'<<a <<'='<< FactNum(a) << endl;

            	else if (oprd == '7') //maximum condition
                    	cout << MaxNum(num1, num2) << endl;

            	else if (oprd == '8') //minimum condition
                    	cout << MinNum(num1,num2) << endl;


            	else //illustrate to user error occurred
                    	cout << "Error..." << endl;

    	//prompt user to continue
            	cout << "Do you want to continue? \n(enter 'y' to continue or 'n' to exit):" << endl;

            	cin >> cnt; //pointer to anonymous variable continue
    	} while (*cnt == 'y'); //condition to continue program

    	cout << "Exiting..." << endl; //illustrate program exit

    	return 0; //successful program termination
} //end function main



//addition function
double SumNum (double nA, double nB)
{
    	return (nA + nB);
}

//subtraction function
double SubNum (double nA, double nB)
{
    	return (nA - nB);
}

//numtiplication function
double MultNum(double nA, double nB)
{
    	return (nA * nB);
}

//division function
double DivNum(double nA, double nB)
{
    	return (nA / nB);
}

//modulo function
long ModNum(long nA, long nB)
{
    	return (nA % nB);
}

//maximum function
double MaxNum (double nA, double nB)
{
    	double max=(nA>nB)? nA:nB;
    	return max;
}

//minimum function
double MinNum (double nA, double nB)
{
    	double min=(nA<nB)? nA:nB;
    	return min;
}


long FactNum (long nA)
{
  if (nA == 0)
    	return 1;
  else
    	return(nA * FactNum (nA-1));
}

تم تعديل هذه المشاركة بواسطة مومو (momo) في 1 أغسطس 2012 في 02:11

i love you mama

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