IOPanel

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

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

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

העברת הערכים ממחרוזת לתוך משתנה

שלום רב, השאלה הבאה היא בנושא מחרוזות: נאמר וקלטתי את המחרוזת הבאה: קוד: "1111+333-22" איך אני מעביר למשל את הערך ...
תגובה
 
קישור חוזר הגדרות אשכול אפשרויות הצגת נושא
ישן 03-01-13, 3:22   #1 (קישור ישיר)
IO Rookie
 
תאריך הצטרפות: Nov 2012
הודעות: 18
ברירת מחדל העברת הערכים ממחרוזת לתוך משתנה

שלום רב,

השאלה הבאה היא בנושא מחרוזות:

נאמר וקלטתי את המחרוזת הבאה:
קוד:
"1111+333-22"
איך אני מעביר למשל את הערך 333 לתוך משתנה? כלומר איך אני מעביר ערכים מתוך תאים במערך המחרוזת לתוך משתנה int.

תודה.
eliorws לא מחובר   הגב עם ציטוט
ישן 03-01-13, 7:23   #2 (קישור ישיר)
IO Rookie
 
תאריך הצטרפות: Oct 2012
הודעות: 53
ברירת מחדל

קיימת פונקציה בשם ATOI, היא מקבלת char* ומחזירה לך את הערך בINT.
אם אתה רוצה את 333 בתוך משתנה אתה פשוט נותן לה את הכתובת של המקום (הפוינטר למערך + האינדקס של המס') והיא תחזיר לך את המספר.
azulgrana לא מחובר   הגב עם ציטוט
ישן 03-01-13, 15:37   #3 (קישור ישיר)
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 לא מחובר   הגב עם ציטוט
ישן 03-01-13, 21:15   #4 (קישור ישיר)
IO Rookie
 
תאריך הצטרפות: Nov 2012
הודעות: 18
ברירת מחדל

הנה הקוד המעודכן- הדבר היחיד שאני לא מצליח לטפל בו זו פעולת החזקה, משום מה היא לא מתממשת:

קוד:
#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=0, end, index, i;
    char string[size];


    for (i=0; i<size; i++)
    {
        string[i]=0;
    }
    scanf("%s", string);
    scanf("%d", &index);
    end = findNumber(string,index,&num);
    printf("%d\n",num);
    printf("%d\n",end);
    return 0;

}

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

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

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

int string_length(char str[])
{
  int i=0;
  while (str[i] != '\0') {
    i++;
  }
  return i;
}
eliorws לא מחובר   הגב עם ציטוט
תגובה


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

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

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

נושאים דומים
אשכול מפרסם האשכול פורום תגובות הודעה אחרונה
הכנסת ערך טלפוני לתוך DATATABLE ב-C# ofir_bl תיכנות 3 04-03-12 11:24
מחפש תאורה לתוך המארז underground מחשבים ומה שמסביב 3 17-10-10 21:53
הרכבתי מערכת מחשב חדש לעריכה עם קירור מים H50 ורציתי לדעת האם הערכים תקינים.... kastro קירור מים 12 12-09-10 17:44
איך לקרוא RSS לתוך אתר (Dreamweaver)? r_rafaeli תיכנות 3 05-09-10 21:22
בדיקת האם כל הערכים במערך שווים YosiAT תיכנות 4 13-11-09 8:34


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





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