char* exp2post(char* exp) { Stack* stack = createStack(tamanhoaux); char top, str; char* convertedExp = (char*) malloc(tamanhoaux*sizeof(char)); int i=0, p=-1, j=0; while(exp[i]!='\0') { if (!peek(stack,&top)) p=-1; else p=prioridade(top); str = exp[i]; if(((str >= 'A')&&(str <= 'z')) || (((str>='0')&&(str<='9')))) { convertedExp[j] = str; j++; } else if(str=='(') { push(stack,str); } else if(str==')') { push(stack,str); top=')'; while(top!='(') { pop(stack,&top); if(top!='('&&top!=')') { convertedExp[j]=top; j++; } } } else if (prioridade(str)<=p) { pop(stack,&top); convertedExp[j]=top; j++; push(stack,str); } else if(prioridade(str)>p) { push(stack,str); } i++; } while(!isEmptyStack(stack)) { pop(stack,&top); convertedExp[j]=top; j++; } convertedExp[j] = '\0'; return convertedExp; }
void foi_comer(ArgumentoT *personagem){ pthread_mutex_lock(&monitor); printf("%s foi comer\n", nome((*personagem).id)); forno = 0; /* abre o forno */ prioridade(personagem); if (flag == 0){ pthread_cond_signal(&(cond[per])); vetor_fila[per] = 0; fila--; /* decrementa o contador de pessoas na fila */ } pthread_mutex_unlock(&monitor); }