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

أريد برنامج يحاكي آلة حاسبة ب ++C

مغلق
بدأه PROGRAMMER_15 في 9 أكتوبر 2004 · 8 رد · 628 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

أريد برنامج بـ ++C يحاكي بشكل بيسط الآلة الحاسبة وهو كالتالي

أريد أن يقوم المستخدم بإدخال عدد صحيح من لوحة المفاتيح وبعدها يقوم بإدخال نوع العملية الحاسبية (+ , - ، / ، *) وبعدها يدخل العدد الصحيح الثاني بعد ذلك تخرج النتيجة على الشاشة ... مع ملاحظة عند إدخال المستخدم عدد غير صحيح أو نوع عملية غير صحيحة تخرج رسالة خطأ للمستخدم...

الفكرة التي توصلت لها هي :

أن نقوم بتعريف متغيريرن من نوع Integer مثلاً x,y حيث X هو العدد الصحيح الأول المدخل من قبل المستخدم

و y هو العدد الصحيح الثاني المدخل من قبل المستخدم

ومتغير أخر مثلاً c تخزن فيه نتيجة العملية ويكون مثلاً من نوع Float

لكن السؤال كيف أعرف متغيرات للعمليات الحسابية

أرجو المساعدة وشكراً لكم

#2

جرب هذا يمكن يساعدك

http://www.codeproject.com/tools/caclulater/Calculater_demo.zip
#3

السلام عليكم

استخدم switch الامر بسيط

مثلا

switch(c)
{
case '+':
cout << x+y;
case '-':
cout << x-y;
//وهكذا البقية 
}

اذا لم تعرف الكود سأكتبه لك بس حاول أولا.

ملاحظة المتغير c من النوع char وليس float . بالتوفيق.

اللهم علمنا ما ينفعنا وأنفعنا بما علمتنا أنك أنت العليم الحكيم

سبحان الله وبحمده سبحان الله العظيم

لاحول ولاقوة الا بالله( كنز من كنوز الجنة ).

#4

معليش اقصد أن نوع العمليات الحسابية هو طبعا char واطبع ناتج العملية اذا لم تحتج الى تخزينها

البرنامج بسيط لا تصعب الامور.

اللهم علمنا ما ينفعنا وأنفعنا بما علمتنا أنك أنت العليم الحكيم

سبحان الله وبحمده سبحان الله العظيم

لاحول ولاقوة الا بالله( كنز من كنوز الجنة ).

#5

مارأيك بهذا الكود هل هو صحيح هذه هي الفكرة التي توصلت إليها

int a,b;
float result;

char c;

do
{

printf("Enter First Number");

scanf("%d",&a);

printf("Enter second number");

scanf("%d",&b);

printf("Enter the operation");

switch(getche())

{

case '+':

{

result=a+b;

printf("nthe result of a+b=%f",result);

break;

}

case '-':

{

result=a-b;

printf("nthe result of a-b=%f",result);

break;

}

case '*':

{

result=a*b;

printf("nthe result of a*b=%f",result);

break;

}

case '/':

{



result=a/b;

printf("nthe result of a/b=%f",result);

break;

}

default :

printf("nyou enter unknown operator:n");

break;

}
#6

ماشاء الله الفكرة صح ولكن هنالك بعض الخلل في ما يلي:

أولا لماذ تعرف a,b int وتخزن الناتج في float هذا لايصح عرف كل شيء float .

ثانيا في القسمة لابد ان تضع شرط لاتكون b = 0 لانه لاتجوز القسمة على صفر.

ثالثا استخدت تكرار do فاين شرط التوقف while

do{
}while(condition);

لابد من شرط يوقف التكرار فهمت علي مثلا رسالة اضغط الحرف n اذا اردت الخروج من البرنامج وفي الشرط اذا كان الحرف هو n انهي التكرار.

الفكرة صح كمل ماعليك .

اللهم علمنا ما ينفعنا وأنفعنا بما علمتنا أنك أنت العليم الحكيم

سبحان الله وبحمده سبحان الله العظيم

لاحول ولاقوة الا بالله( كنز من كنوز الجنة ).

#7

السلام عليكم

جرب هذا الكود ممكن يفي بالغرض

لابد تدخل العملية مثلا هكذا

1+5

الكود:

#include <stdio.h>
#include <stdlib.h>


void main()
{
	float x,y;
	char op;

	while( 1 )
	{
  printf("\nEnter Number op Number ");
  scanf("%f%c%f",&x,&op,&y);

  switch ( op )
  {

 	 case '+':
 	 {
    printf("\n %.2f + %.2f = %.2f ",x,y,x+y);
    break;
 	 }
 	 case '-':
 	 {
    printf("\n %.2f - %.2f = %.2f ",x,y,x-y);
    break;
 	 }
 	 case '*':
 	 {
    printf("\n %.2f * %.2f = %.2f ",x,y,x*y);
    break;
 	 }
 	 case '/':
 	 {
    if ( y == 0 )
   	 printf("\n\a Error y = %.2f",y);
    else
   	 printf("\n %.2f / %.2f = %.2f ",x,y,x/y);
    break;
 	 }
 	 default:
    printf("\a\n Error opertion Not fond ");
    exit(1);
 	 
  }

  
	}

}

اللهم علمنا ما ينفعنا وأنفعنا بما علمتنا أنك أنت العليم الحكيم

سبحان الله وبحمده سبحان الله العظيم

لاحول ولاقوة الا بالله( كنز من كنوز الجنة ).

#8
#include<iostream.h>
class cal{
protected:
	int a,b;
public:
	void add(int a1,int b1){
  a=a1;
  b=b1;
	}
	void show(){cout<<a<<"   "<<b<<endl<<a+b<<endl;}
////////////////////////////
  void sub(int a11,int b11){
  a=a11;
  b=b11;
	}
	void show1(){cout<<a<<"   "<<b<<endl<<a-b<<endl;}
	////////////////////////


};
void main(){
	cal ob;
	int aa,bb,aa1,bb1;
	char c,ch;

	do{
	cout<<"(A)  (S)   (M)    (D)   "<<endl;
	cin>>c;
//////////////////////
	if(c=='a'){
	cout<<"enter number1 :";cin>>aa;
  cout<<"enter number2 :";cin>>bb;
  ob.add(aa,bb);
  ob.show();}
////////////////////////
	if(c=='s'){
	cout<<"enter number1 :";cin>>aa1;
  cout<<"enter number2 :";cin>>bb1;
  ob.sub(aa1,bb1);
  ob.show1();}
	cout<<"(y,n)"<<endl;
	cin>>ch;}while(ch=='y');
////////////////////////////

}

طبعا عملت الجمع والطرح

وممكن تكمل البقيه

لكم مني خالص التقدير

*********************

دروس الاكسس

قاعدة بيانات بالسي++

قاعدة بيانات اخرى بالسي++

الفريق العربي للبرمجه

*********************

كان الله في عون العبد مادام العبد في عون اخيه

#9

شكرا لك اخي الكريم

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

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