تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
برمجة آلة حاسبة متكاملة بلغة c
#1
Sad 
السلام عليكم ورحمة الله وبركاته
انا عضو جديد في المنتدى 
ارجو منكم مساعدتي في صناعة برنامج بلغة c يحاكي الآلة الحاسبة التي تباع في المتاجر مع بعض الإضافات الخاصة بي 
هذه محاولي ارجو مساعدتي في النقطة التي سأشير لكم فيها في المحاولة  
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <ctype.h>
int sconvert(int h)
 
{if (h==48)
 return 0;
if(h==49);
 return 1;
if(h==49)
 return 1;
 if(h==50)
 return 2;
  if(h==51)
 return 3;
  if(h==52)
 return 4;
  if(h==53)
 return 5;
  if(h==54)
 return 6;
  if(h==55)
 return 7;
  if(h==56)
 return 8;
 
  if(h==57)
 return 9;
  if(h==40)
 return 101;//(
  if(h==41)
 return 102;//)
  if(h==42)
 return 103;//*
  if(h==47)
 return 104;// /
  if(h==43)
 return 105;// +
  if(h==45)
 return 106;// -
  if(h==94)
 return 107;// ^
  if(h==120)
 return 108;// x
  return 10;
 }
int main()
{
 int num[21]={0},i=0,h,t;//num عبارة عن مصفوفة تحمل كل العمليات الحسابية على شكل أرقام والاعداد بالترتيب  
 printf("please dont make mistake ..prese enter for result .. thanks\n");
 for (i=0;i<251;i++)
 {h = getche(); // h عبارة عن وسيط لا أكثر 
  if (h==10)/وتبدأ المعالجة/ عند الانتهاء ينفر enter  
  break;
  num[i]=sconvert(h);
  //محاولتي ارجو تصحيحها
  i=0;
if (num[i]==101/*(*/&& num[i+1]==106/*-*/&& num[i+2]<10&&num[i+3]<10&&num[i+4]==103/* * */&&num[i+5]<10&&num[i+6]==102)
printf("%d",(-(num[i+2]*10+num[i+3])*num[i+5]));
}
  
 return 9;
}
 
 
أعضاء أعجبوا بهذه المشاركة :
#2
وعليكم السلام ورحمة الله وبركاته أخي، أهلا بك في المنتدى.

بعض الاقتراحات:
أولا، حاول كتابة آلة حاسبة بدون أقواس وبدون أسس. بعد ذلك حاول التعميم إلى حالة الأسس ومن ثم الأقواس (مثلا باستخدام ال recursion).
ثانيا، الدالة sconvert يمكنك كتابتها كالتالي
int sconvert(char c)
{
    // إذا كان عددا
    if (c >= 48 && c <= 57) {
        return (int)c - 48;
    }

    if (c == 40)
        return 101;// (
    if (c == 41)
        return 102;// )
    if (c == 42)
        return 103;// *
    if (c == 47)
        return 104;// /
    if (c == 43)
        return 105;// +
    if (c == 45)
        return 106;// -
    if (c == 94)
        return 107;// ^
    if (c == 120)
        return 108;// x
    return 10;
}

ثالثا، آخر عبارة if في بداخل دالة ال main تبدو غريبة، ما الشرط الذي أردته؟
I am homesick for a place I have not even visited
مَا ابْيَضَّ وجهٌ باكتساب كريمةٍ ... حتى يسوِّدهُ شُحوب المَطلبِ
أعضاء أعجبوا بهذه المشاركة :


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم