Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- int **array;
- void parse(char * equacao, int type, int index){
- //int i;
- char * i;
- char aux[20];
- char cToStr[2];
- cToStr[1] = '\0';
- char var[20];
- char operation[20];
- char res[20];
- memset(var, 0, sizeof(var));
- memset(aux, 0, sizeof(aux));
- memset(operation, 0, sizeof(aux));
- memset(res, 0, sizeof(aux));
- printf("equacao parse: %s\n",equacao);
- int flag=0;
- int flag2=0;
- printf("dentro\n\n");
- //while(strcmp(equacao[i],"\n"
- /*for(i=equacao; *i;i++){
- printf("i: %c\n",*i);
- }*/
- array[index] = calloc(47, sizeof(int));
- for(i=equacao; *i; i++){
- printf("entrou for\n");
- if(*i=='x'){
- flag=1;
- }else{
- printf("inside i:%c\n",*i);
- if(flag==1){
- //posso guardar aux
- //vou identificar o x
- if(*i=='-'||*i=='+'){
- printf("entrou if\n");
- array[index][atoi(var)] = atoi(aux);
- printf("aux: %s \t-> X%s\n",aux,var);
- memset(var, 0, sizeof(var));
- memset(aux, 0, sizeof(aux));
- flag=0;
- cToStr[0] = *i;
- strcat(aux,cToStr);
- memset(cToStr, 0, sizeof(cToStr));
- cToStr[1] = '\0';
- }else{
- if(*i == '<'||*i=='>'||*i=='='||flag2==1){
- flag2=1;
- if(operation[0] == '=' || operation[1]=='='){
- cToStr[0] = *i;
- strcat(res,cToStr);
- memset(cToStr, 0, sizeof(cToStr));
- cToStr[1] = '\0';
- }else{
- cToStr[0] = *i;
- strcat(operation,cToStr);
- memset(cToStr, 0, sizeof(cToStr));
- cToStr[1] = '\0';
- }
- }else{
- cToStr[0] = *i;
- strcat(var,cToStr);
- memset(cToStr, 0, sizeof(cToStr));
- cToStr[1] = '\0';
- }
- }
- }else{
- cToStr[0] = *i;
- strcat(aux,cToStr);
- memset(cToStr, 0, sizeof(cToStr));
- cToStr[1] = '\0';
- }
- }
- } if(type == 1){
- array[index][atoi(var)] = atoi(aux);
- if(strcmp(operation,"<=")==0){
- array[index][46] = 1;
- }else if(strcmp(operation,"=")==0){
- array[index][46] = 2;
- }else if(strcmp(operation,">=")==0){
- array[index][46] = 3;
- }
- array[index][47] = atoi(res);
- printf("aux: %s \t-> X%s \t -> %s \t ->%s\n",aux,var,operation, res);
- }
- else{
- array[index][atoi(var)] = atoi(aux);
- printf("aux: %s \t-> X%s\n",aux,var);
- }
- }
- int main()
- {
- char word[50];
- char equacao[150];
- char st[5];
- char statement[150];
- int flag=0;
- int i=0, j=0,k=0;
- array = calloc(47, sizeof(int*));
- while(scanf("%s",&word)!= EOF){
- if(strcmp(word,"maximize")==0){
- flag=1;
- }else{
- flag =0;
- }
- scanf("%s",&equacao);
- printf("word %s\n",word);
- printf("equacao %s\n", equacao);
- parse(equacao, 0,i);
- i++;
- scanf("%s", &st);
- if(strcmp(st,"st")==0){
- printf("\n------------STS----------\n");
- scanf("%s",&statement);
- while(strcmp(statement,"BINARY")!=0){
- printf("->Statement: %s\n", statement);
- parse(statement,1,i);
- i++;
- scanf("%s",&statement);
- }
- }
- /*if(flag == 1){
- maximize();
- }*/
- }
- for(j=0; j<i; j++){
- for(k=0; k<=47; k++){
- printf("%d ",array[j][k]);
- }
- printf("\n");
- }
- }
Add Comment
Please, Sign In to add comment