尝试将字符串插入数组以检查字符串是否描述函数

时间:2013-12-16 22:03:11

标签: c string

我有一个描述该函数的字符串,我需要检查这是否是函数 这个想法来找我把字符串数组然后检查

 the string: "1 11.1 2 3.2 3 44.1 4 5.4 5 7.4 6 1111.0"

字符串描述函数(1,11.1),(2,3.2)(3,44.1)等......

我尝试将其插入数组,如arr [0] [0] = 1和arr [1] [0] = 11.1,arr [0] [1] = 2,arr [1] [1] = 3.2 ... 我需要帮助如何做或获得建议另一个想法如何检查如果字符串是功能?我希望我解释自己更好..谢谢

以示例字符串:

 "1 11.1 1 3.2 3 44.1 4 5.4 5 7.4 6 1111.0"

不是描述函数,因为我们有(1,11.1)和(1,3.2) 问题是如何将字符串插入数组

为清晰起见编辑:

他提出了以下问题:给定一串(显然)均匀的许多花车,让我们用以下形式表示:

"x1 y1 x2 y2 x3 y3 ... xn yn"

如果xixj处的值ij不同,那么字符串“定义一个函数” {1}}相同,则xixj的值相同。

他想知道如何检查字符串是否“定义了一个函数。”

1 个答案:

答案 0 :(得分:2)

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

int main(){
    {//split string by strtok, destroy input by strtok
        char input[] = "1 11.1 2 3.2 3 44.1 4 5.4 5 7.4 6 1111.0";
        char *array[10][2];
        char *item;
        char **to = &array[0][0];
        int i, count=0;
        for(item = strtok(input, " "); item != NULL; item = strtok(NULL, " ")){
            *to++ = item;
            ++count;
        }
        for(i = 0;i<count / 2;++i){
            printf("%s, %s\n", array[i][0], array[i][1]);
        }
    }
    printf("\n");
    {//convert double by strtod
        char *input = "1 11.1 1 3.2 3 44.1 4 5.4 5 7.4 6 1111.0";
        double array[10][2];
        double item;
        double *to = &array[0][0];
        char *p;
        int i, count=0, pairSize;
        for(p = input; *p != '\0';){
            item = strtod(p, &p);
            if(*p == ' ' || *p == '\0'){
                *to++ = item;
                ++count;
            } else {
                printf("invalid number\n");
                break;
            }
        }
        pairSize = count / 2;
        for(i = 0;i<pairSize;++i){
            printf("%g, %g\n", array[i][0], array[i][1]);
        }
        //Check the monotonic increase
        for(i = 0;i+1<pairSize;++i){
            if(array[i][0] >= array[i+1][0]){
                printf("invalid sequence at array[%d][0] = %g and array[%d][0] = %g\n", 
                    i, array[i][0], i+1, array[i+1][0]);
            }
        }
    }

    return 0;
}