#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int db_char_malloc(int x, int y)
{
int i;
i = 0;
char **db_char
= (char **)malloc(y
* sizeof(char *)); while (i<y)
{
db_char
[i
] = (char *)malloc(x
* sizeof(char)); i++;
}
return (db_char);
}
int db_int_malloc(int y)
{
int *db_int
= (int *)malloc(y
* sizeof(int)); return (db_int);
}
int count_elems(char *str)
{
int count;
int i;
count = 0;
i = 0;
while(str[i] != '\0')
{
if (str[i] <= '9' && str[i] >= '0')
{
while (str[i] <= '9' && str[i] >= '0')
i++;
count++;
}
else if (str[i] == ' ')
i++;
else
{
count++;
i++;
}
}
return (count);
}
#include <unistd.h>
char main()
{
int i;
int j;
int count_elem;
int i_v_str;
char str[] = "1 + 2 * ((34 - 4 * 3))";
i = 0;
j = 0;
i_v_str = 0;
count_elem = count_elems(str);
char **db_char = db_char_malloc(10, count_elem);
int *db_int = db_int_malloc(count_elem);
while (str[i_v_str] != '\0')
{
i = 0;
if (str[i_v_str] <= '9' && str[i_v_str] >= '0')
{
while (str[i_v_str] <= '9' && str[i_v_str] >= '0')
{
db_char[j][i] = str[i_v_str];
i++;
i_v_str++;
}
db_char[j][i] = '\0';
j++;
}
else if (str[i_v_str] == ' ')
i_v_str++;
else
{
db_char[j][i] = str[i_v_str];
i++;
db_char[j][i] = '\0';
i_v_str++;
j++;
}
}
j = 0;
return(db_char);
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHVuaXN0ZC5oPgoKCmludCBkYl9jaGFyX21hbGxvYyhpbnQgeCwgaW50IHkpIAp7IAogICAgaW50IGk7CiAgICAKICAgIGkgPSAwOwogICAgY2hhciAqKmRiX2NoYXIgPSAoY2hhciAqKiltYWxsb2MoeSAqIHNpemVvZihjaGFyICopKTsgCiAgICB3aGlsZSAoaTx5KQogICAgewogICAgICBkYl9jaGFyW2ldID0gKGNoYXIgKiltYWxsb2MoeCAqIHNpemVvZihjaGFyKSk7IAogICAgICBpKys7CiAgICB9CiAgIHJldHVybiAoZGJfY2hhcik7Cn0gCgppbnQgZGJfaW50X21hbGxvYyhpbnQgeSkgCnsgCiAgaW50ICpkYl9pbnQgPSAoaW50ICopbWFsbG9jKHkgKiBzaXplb2YoaW50KSk7ICAgCiAgcmV0dXJuIChkYl9pbnQpOyAKfQoKaW50IGNvdW50X2VsZW1zKGNoYXIgKnN0cikKewogICAgIGludCBjb3VudDsKICAgIGludCBpOwoKICAgIGNvdW50ID0gMDsKICAgIGkgPSAwOwogICAgd2hpbGUoc3RyW2ldICE9ICdcMCcpCiAgICB7CiAgICAgICAgaWYgKHN0cltpXSA8PSAnOScgJiYgc3RyW2ldID49ICcwJykKICAgICAgICB7CiAgICAgICAgICAgIHdoaWxlIChzdHJbaV0gPD0gJzknICYmIHN0cltpXSA+PSAnMCcpCiAgICAgICAgICAgICAgICBpKys7CiAgICAgICAgICAgIGNvdW50Kys7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKHN0cltpXSA9PSAnICcpCiAgICAgICAgICAgIGkrKzsKICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICBjb3VudCsrOwogICAgICAgICAgICBpKys7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIChjb3VudCk7Cn0KCiNpbmNsdWRlIDx1bmlzdGQuaD4KCgpjaGFyIG1haW4oKQp7CiAgICBpbnQgaTsKICAgIGludCBqOwogICAgaW50IGNvdW50X2VsZW07CiAgICBpbnQgaV92X3N0cjsKICAgIGNoYXIgc3RyW10gPSAiMSArIDIgKiAoKDM0IC0gNCAqIDMpKSI7CiAgICBpID0gMDsKICAgIGogPSAwOwogICAgaV92X3N0ciA9IDA7CiAgICBjb3VudF9lbGVtID0gY291bnRfZWxlbXMoc3RyKTsKICAgIGNoYXIgKipkYl9jaGFyID0gZGJfY2hhcl9tYWxsb2MoMTAsIGNvdW50X2VsZW0pOwogICAgaW50ICpkYl9pbnQgPSBkYl9pbnRfbWFsbG9jKGNvdW50X2VsZW0pOwogICAgd2hpbGUgKHN0cltpX3Zfc3RyXSAhPSAnXDAnKQogICAgewogICAgICAgIGkgPSAwOwogICAgICAgIGlmIChzdHJbaV92X3N0cl0gPD0gJzknICYmIHN0cltpX3Zfc3RyXSA+PSAnMCcpCiAgICAgICAgeyAgICAgICAgICAgIAogICAgICAgICAgICB3aGlsZSAoc3RyW2lfdl9zdHJdIDw9ICc5JyAmJiBzdHJbaV92X3N0cl0gPj0gJzAnKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBkYl9jaGFyW2pdW2ldID0gc3RyW2lfdl9zdHJdOwogICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAgICAgICAgaV92X3N0cisrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGRiX2NoYXJbal1baV0gPSAnXDAnOwogICAgICAgICAgICBqKys7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKHN0cltpX3Zfc3RyXSA9PSAnICcpCiAgICAgICAgICAgIGlfdl9zdHIrKzsKICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICBkYl9jaGFyW2pdW2ldID0gc3RyW2lfdl9zdHJdOwogICAgICAgICAgICBpKys7CiAgICAgICAgICAgIGRiX2NoYXJbal1baV0gPSAnXDAnOwogICAgICAgICAgICBpX3Zfc3RyKys7CiAgICAgICAgICAgIGorKzsKICAgICAgICB9CiAgICB9CiAgICBqID0gMDsKCiAgICAKICAgIAogICAgCiAgICAKICAgIAogICAgcmV0dXJuKGRiX2NoYXIpOwp9