int main() { int n, in, i; bool flag = true; list *stack,*back; scanf("%d",&n); init_stack(&stack); back = NULL; while(n) { for(i=0 ; i<n ; i++) { scanf("%d",&in); /*caso nao seja uma matrioskha, eh possivel que tenha sobrado conteudo na entrada padrao*/ if(flag) { /*caso seja o brinquedo que fecha o q esta no topo da pilha*/ if(back && back->n < 0 && back->n == -in) { pop_back(&stack); if(!stack_empty(stack)) { back = check_back(&stack); back->tam+=in;/*incrementa o tamanho acumulado naquele brinquedo*/ /*caso nao atenda a condicao do tamanho, pare de considerar a leitura*/ if(back->tam >= -back->n) flag = false; } } else push_back(in,&stack); back = check_back(&stack); } } printf("%s\n",(stack_empty(stack))?(":-) Matrioshka!"):(":-( Tente novamente.")); /*reinicializa as variaveis para nova operacao*/ free_stack(&stack); flag = true; back = NULL; scanf("%d",&n); } return 0; }
int main(int argc, char *argv[]) { int i, flag; char *cP; for(i = 0, flag = 0; i < argc; i++) { if (strcmp(argv[i], "--") == 0) { printf("\n"); return (0); } if (argv[i][0] == '-' && argv[i][1] == '-') { if (check_back(i, argv, &(argv[i][2]))) { if (flag) { printf(", "); } printf("%s", &(argv[i][2])); flag = 1; } } else if (argv[i][0] == '-') { cP = &argv[i][1]; while(*cP) { if (check_back(i, argv, cP)) { if (flag) { printf(", "); } printf("%c", *cP); flag = 1; } cP++; } } } printf("\n"); return (0); }