צפיה בהודעה בודדת
ישן 03-01-13, 15:37   #3 (קישור ישיר)
eliorws
IO Rookie
 
תאריך הצטרפות: Nov 2012
הודעות: 18
ברירת מחדל

תודה.
בסוף ניסיתי לעשות זאת בדרך אחרת. לדעתי האלגוריתם אמור (תאורתית) לפלוט לי את מה שאני צריך אבל זה לא עובד.

סך הכול התוכנית אמורה לקלוט (או יותר נכון אחת הפונקציות) מחרוזת של תווים, אינדקס למקום מסויים במחרוזת ופוינטר למשתנה מסויים (num) כך שאם נסתכל לדוגמא, בדוגמא הבאה:
ציטוט:
"1111+333-22"
התוצאה אמורה להיות: אינדקס ההתחלה=0, אינדקס החזרה=5, num=1111.

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

וזה הקוד:

קוד:
#include <stdio.h>
#include <math.h>

#define size 100

int findNumber(char *exp, int i, int *num);
int string_length(char str[]);

int main()
{
    int num, end;
    char str[100];
    char string[size];

    scanf("%s", string);
    end = findNumber(string,0,&num);
    printf("%d\n",end);
    printf("%d\n",num);
    printf("%d\n",string_length(str));
    return 0;

}

int findNumber(char *exp, int i, int *num)
{
    int j, m, start, k=0, length;

    length = string_length(exp);
    start=i;
    *num=0;


    for (m=i; m < length; m++)
    {
        if ((exp[m]<'0') || (exp[m]>'9'))
        {
            k=m;
            for (j=start; j<m; j++)
            {
                *num=*num + (exp[j]*pow(10,m-1));
                m--;
            }

        }
    }
    return k;
}

int string_length(char str[])
{
    int i, length=0;
    for (i=0; i<100; i++)
    {
        if (str[i]=='\0')
        {
            length=i;
        }
        break;
    }
    return length;
}
eliorws לא מחובר   הגב עם ציטוט