IOPanel

חזור   IOPanel > דבר חופשי > תוכנה ומערכות הפעלה > תיכנות
עמוד ראשי הירשם חיפוש הודעות מהיום סמן פורומים כנקראו

תיכנות פורום בנושאי תיכנות , פיתוח אתרים , שפות תיכנות , אפליקציות סלולר וטאבלטים.

תוכנה ומערכות הפעלה : תיכנות

שאלה ברקורסיה

שלום רב, אודה למי שיוכל לתת לי כיוון מסויים לאיך לכתוב את האלגוריתם הבא שאציג. ברקורסיה בלבד, ללא מערכים ולולאות ...
תגובה
 
קישור חוזר הגדרות אשכול אפשרויות הצגת נושא
ישן 22-01-13, 23:08   #1 (קישור ישיר)
IO Rookie
 
תאריך הצטרפות: Jan 2013
הודעות: 2
ברירת מחדל שאלה ברקורסיה

שלום רב,

אודה למי שיוכל לתת לי כיוון מסויים לאיך לכתוב את האלגוריתם הבא שאציג. ברקורסיה בלבד, ללא מערכים ולולאות ובשפת C.

קולטים מחרוזת של אופרנדים ומספרים בלבד. וצריך להדפיס את הביטויים ותוצאת החישוב של מה שנמצא בסוגריים. החל מהפנימיים ביותר.
קבצים מצורפים
סוג הקובץ: jpg ללא שם.jpg (30.4 KB, 22 צפיות)
Thelonelylion לא מחובר   הגב עם ציטוט
ישן 25-01-13, 0:22   #2 (קישור ישיר)
IO Rookie
 
תאריך הצטרפות: Jan 2013
הודעות: 2
ברירת מחדל

האם מישהו יכול לעזור לי להתקדם מכאן?
התוכנית כרגע מצליחה לחשב ביטוי בודד ולהדפיס. ולסכום את הביטויים הסופיים אני פשוט לא יודע איך, ניסיתי וזה נותן תשובה חלקית. יותר מזה אני לא מסוגל כרגע בלי רעיון.

קוד:
#include <stdio.h>
#define M 100

int Crazy_Calculator(char *string, int i);

int main()
{
    char string[M];
    int end=0;
    scanf("%s",string);
    end=Crazy_Calculator(string,0);
    printf("%d\n", end);
    return 0;

}

 int Crazy_Calculator(char *string, int i)
 {
    int sum1=0, sum2=0, sum3=0;

    if (string[i]=='(')
        return Crazy_Calculator(string, i+1);
    if (string[i]==')')
        return Crazy_Calculator(string, i+1);
    if (string[i]=='\0')
    {
        return sum3;

    }
    else
    {
        {
        if (string[i+1]=='+')
        {
            sum1=0, sum2=0;
            if ((string[i+2]>'0')||(string[i+2]<'9'))
            {
            sum1=(string[i]-'0');
            }
            else
            {
                sum1=0;
            }
            if ((string[i+2]>'0')||(string[i+2]<'9'))
            {
                sum2=(string[i+2]-'0');
            }
            else
            {
                sum2=0;
            }
            sum3=sum1+sum2;
            printf("%c%c%c = %d \n",string[i], string[i+1], string[i+2], sum1+sum2);
            if (string[i+4]=='+')
            {
                return sum3+Crazy_Calculator(string, i+4);
            }

            else if (string[i+4]=='-')
                return sum3-Crazy_Calculator(string, i+5);

            if (string[i+4]=='*')
                return sum3*Crazy_Calculator(string, i+5);
        }
        }

        {
        if (string[i+1]=='-')
        {
            sum1=0, sum2=0;
            if ((string[i+2]>'0')||(string[i+2]<'9'))
            {
            sum1=(string[i]-'0');
            }
            else
            {
                sum1=0;
            }
            if ((string[i+2]>'0')||(string[i+2]<'9'))
            {
            sum2=(string[i+2]-'0');
            }
            else
            {
                sum2=0;
            }
            sum3=sum1-sum2;
            printf("%c%c%c = %d \n",string[i], string[i+1], string[i+2], sum1-sum2);
            if (string[i+4]=='+')
                return sum3+Crazy_Calculator(string, i+5);
            else if (string[i+4]=='-')
                return sum3-Crazy_Calculator(string, i+5);
            if (string[i+4]=='*')
                return sum3*Crazy_Calculator(string, i+5);
        }

        }
        if (string[i+1]=='*')
        {
            sum1=0, sum2=0;
            if ((string[i+2]>'0')||(string[i+2]<'9'))
            {
            sum1=(string[i]-'0');
            }
            else
            {
                sum1=0;
            }
            if ((string[i+2]>'0')||(string[i+2]<'9'))
            {
            sum2=(string[i+2]-'0');
            }
            else
            {
            sum2=0;
            }
            sum3=sum1*sum2;
            printf("%c%c%c = %d \n",string[i], string[i+1], string[i+2], sum1*sum2);
            if (string[i+4]=='+')
                return sum3+Crazy_Calculator(string, i+5);
            else if (string[i+4]=='-')
                return sum3-Crazy_Calculator(string, i+5);
            if (string[i+4]=='*')
                return sum3*Crazy_Calculator(string, i+5);
        }
    }
    return Crazy_Calculator(string, i+1);



 }
Thelonelylion לא מחובר   הגב עם ציטוט
תגובה


הגדרות אשכול
אפשרויות הצגת נושא

חוקי משלוח הודעות
אתה לא יכול לשלוח הודעות חדשות
אתה לא יכול לשלוח תגובות
הינך לא יכול לצרף קבצים להודעותיך
אתה לא יכול לערוך את הודעותיך

vB code הינו פועל
סמיילים הינו פועל
קוד [IMG] הינו פועל
קוד HTML הינו כבוי
Trackbacksהינו פועל
Pingbacks הינו פועל
Refbacks הינו פועל

נושאים דומים
אשכול מפרסם האשכול פורום תגובות הודעה אחרונה
שאלה בהחלפת מארז+שאלה לכל מחזיקי ה-CM690 VentAcruZ ספקי כח, מארזים ומודינג 9 10-11-11 0:12
שאלה ברקורסיה tamos' תיכנות 1 22-03-11 23:08
שאלה בנוגע לכונן קשיח חיצוני- שאלה עודכנה duduedri96 אחסון 17 15-08-10 1:03
שאלה|איזה ספק אני צריך בשביל המחשב הזה.+פלוס שאלה VentAcruZ ספקי כח, מארזים ומודינג 7 10-10-08 14:02
שאלה| שידרוג ל4870 יש שאלה קטנה לגבי ספק כוח tomer434 כרטיסי מסך 23 04-10-08 16:20


כל הזמנים הם GMT +3. השעה כרגע היא 16:38.





מופעל על ידי: vBulletin
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO
IOPanel.net © כל הזכויות שמורות