Ejemplo n.º 1
0
Finestra::Finestra(QWidget *parent)
    : QWidget(parent)
{
//+1
  _seleccio = new QComboBox;
  _llista   = new QListWidget;
  _afegeix  = new QPushButton("Afegeix...");
  _esborra  = new QPushButton("Esborra");
  _executa  = new QPushButton("Executa");
//-1

//+2
  QGridLayout *L = new QGridLayout;
  L->addWidget(_seleccio, 0, 0);
  L->addWidget(_afegeix, 0, 1);
  L->addWidget(_esborra, 1, 1);
  L->addWidget(_llista, 1, 0, 4, 1);
  L->addWidget(_executa, 4, 1);
  setLayout(L);
//-2

//+3
  _seleccio->addItem("Inverteix");
  _seleccio->addItem("Gira");
//-3

//+7
  connect(_afegeix, SIGNAL(clicked()), this, SLOT(afegeix()));
  connect(_esborra, SIGNAL(clicked()), this, SLOT(esborra()));
  connect(_executa, SIGNAL(clicked()), this, SLOT(executa()));
//-7
}
Ejemplo n.º 2
0
/*
void Node::escutaTransmissao(){
  comando = rf.receive();
}
*/
void Node::loop(){
	// executa comando recebido

    if( rf.receive()){
		executa(rf.mensagem);
    }


	// se mensagem tem o destinatario deste node executa mensagem

}
Ejemplo n.º 3
0
/* Handle client request */
void * HandleRequest(void *args) {
  char str[BUFSIZE];
  TSocket cliSock;

  /* Extract socket file descriptor from argument */
  cliSock = ((struct TArgs *) args) -> cliSock;
  free(args);  /* deallocate memory for argument */

  for(;;) {
    /* Receive the request */
    if (ReadLine(cliSock, str, BUFSIZE-1) < 0) { 
      ExitWithError("ReadLine() failed"); 
    } else {
      executa(str);
    }
 
    /* Send the response */
    if (WriteN(cliSock, str, strlen(str)) <= 0)  
      { ExitWithError("WriteN() failed"); }  
  }
}
Ejemplo n.º 4
0
/*
 * Default:
 * argc = 1
 * argv[0] =  Nome do Programa
 */
int main(int argc, char** argv) {
    char * filename = NULL;
    int passoAPassoFlag = 0;
    int c;
    int maxMem = 256;
    int startIndex = 1;
    int startIndexPrint = 1;
    int endIndexPrint = 255;
    opterr = 0;

    while ((c = getopt(argc, argv, "i:f:m:n:ps:")) != -1)
        switch (c) {
            case 'i':
                startIndexPrint = atoi(optarg);
                break;
            case 'f':
                endIndexPrint = atoi(optarg);
                break;
            case 'm':
                maxMem = atoi(optarg);
                break;
            case 'n':
                filename = optarg;
                break;
            case 'p':
                passoAPassoFlag = 1;
                break;
            case 's':
                startIndex = atoi(optarg);
                break;
            case '?':
                switch (optopt) {
                    case 'i':
                    case 'f':
                    case 'm':
                    case 'n':
                    case 's':
                        fprintf(stderr, "Opção -%c necessita um argumento.\n", optopt);
                        break;
                    default:
                        if (isprint(optopt))
                            fprintf(stderr, "Opção desconhecida `-%c'.\n", optopt);
                        else
                            fprintf(stderr, "Caractere de opção desconhecido `\\x%x'.\n", optopt);
                        abort();
                }
        }

    if (filename == NULL) {
        fprintf(stderr, "Erro nome do arquivo HEX não especificado!\n");
        abort();
    }
    FILE * hex = fopen(filename, "r");
    if (!hex) {
        fprintf(stderr, "Erro ao abrir o arquivo %s!\n", filename);
        abort();
    }

    inicializaMem(startIndexPrint, endIndexPrint, maxMem);

    if (loadProgram(hex, startIndex)) {
        fprintf(stderr, "Erro ao carregar o %s para a memória!\n", filename);
        abort();
    }

    inicializaSimulador();

    do {
        busca();
        if (passoAPassoFlag) {
            printf("Precione 'r' para imprimir os registradores e seguir um passo na execução,\n"
                    "'c' para continuar a execução sem o passo a passo,\n"
                    "ou qualquer outra tecla para seguir um passo na execução: ");            
            char * str = malloc(2);
            scanf("%s", str);
            if (strcmp(str, "r")==0)
                printRegs();
            else if (strcmp(str, "c") == 0)
                passoAPassoFlag = 0;
            printf("\n");
        }
        executa();
    } while (1);
    return EXIT_SUCCESS;
}
Ejemplo n.º 5
0
int main() {
	/*
	caixas[i][j] eh a matriz de posicao das caixas
	programas[i][j] tem i programas com j comandos
	condicao guarda o valor da condicao de execucao (G, B, Y)
	segurando guarda a caixa que a garra segura
	colunas e linhas sao o valor X e Y referentes aos lados da matriz caixas
	numProgramas numComandos sao numeros P e C de programas e de comandos maximo
	maxExecucoes eh o valor E do maximo de execucoes
	i e j sao contadores
	capotou eh uma flag para dizer se houve um acidente
	altura[i] eh um vetor com as alturas de caixas
	posGarra eh o valor referente a posicao da garra
	execucoes eh o valor de quantas execucoes ja aconteceram
	*/
	char **caixas, **programas, condicao=0, segurando=0;
	int colunas, linhas, numProgramas, numComandos, maxExecucoes, i, j, capotou=0,
			*altura, posGarra=0, execucoes=0;

	/* Entrada dos valores de X, Y, P, C, E */
	scanf(" %d %d %d %d %d", &colunas, &linhas, &numProgramas, &numComandos,
													 &maxExecucoes);

	/* Alocacao de memoria para os vetores e matrizes */
	altura = malloc(colunas * sizeof(int));

	caixas = malloc(linhas * sizeof(char *));
	for(i=0;i<linhas;i++)
		caixas[i] = malloc(colunas * sizeof(char));
	
	programas = malloc(numProgramas * sizeof(char *));
	for(i=0;i<numProgramas;i++)
		programas[i] = malloc((numComandos+1) * sizeof(char));

	/* Entrada das posicoes das caixas e calculo das alturas */
	for(i=0;i<colunas;i++)
		altura[i] = linhas;
	for(i=0;i<linhas;i++){
		for(j=0;j<colunas;j++){
			scanf(" %c", &caixas[i][j]);
			if (caixas[i][j] != '.' && i < altura[j])
			altura[j] = i;
		}
	}

	/* Entrada dos programas */
	for(i=0;i<numProgramas;i++){
		j=0;
		do{
			scanf(" %c", &programas[i][j]);
		}while(programas[i][j++] != '*');
	}
	
	/* Executa os testes */
	for(i=0;i<numProgramas && !capotou && execucoes < maxExecucoes;i++){
		executa(caixas, linhas, colunas, programas, i, &posGarra, &segurando,
						&condicao, altura, &execucoes, maxExecucoes, &capotou);
	}

	/* Verifica se capotou */
	if(capotou){
		printf("Um acidente ocorreu\n");
	}else{
		/* Imprime a saida */
		for(i=0;i<linhas;i++){
			for(j=0;j<colunas;j++){
				printf("%c", caixas[i][j]);
			}
			printf("\n");
		}
	}

	/* Desalocando espacos */
	for(i=0;i<linhas;i++)
		free(caixas[i]);
	free(caixas);

	for(i=0;i<numProgramas;i++)
		free(programas[i]);

	free(programas);
	free(altura);

	return 0;
}
Ejemplo n.º 6
0
void executa(char **caixas, int linhas, int colunas, char **programas, int i,
						 int *posGarra, char *segurando, char *condicao, int *altura,
						 int *execucoes, int maxExecucoes, int *capotou){
	int j=0;
	(*execucoes)++;
	/* Executa o comando enquanto nao encontrar um asterico */
	do
	{
		/* Verifica se capotou */
		if(*capotou)
			return;
		/* Caso tenha alguma condicao para o proximo comando, guarda na variavel 
			condicao */
		if(programas[i][j] == 'B' || programas[i][j] == 'Y' ||
			 programas[i][j] == 'G' || programas[i][j] == 'N' ||
			 programas[i][j] == 'A'){

			*condicao = programas[i][j];

		}else{
			/* Caso esteja na condicao, executa o comando*/
			if((*condicao == 0) || (*condicao == *segurando) || (*condicao == 'A' &&
					*segurando != 0) || (*condicao == 'N' && *segurando == 0)){

				/* Comando de movimento para a direita */
				if(programas[i][j] == 'R' && *posGarra < colunas-1){
					if(caixas[0][*posGarra + 1] != '.' && *segurando != 0)
						*capotou = 1;
					(*posGarra)++;
				}

				/* Comando de movimento para a esquerda */
				else if(programas[i][j] == 'L' && *posGarra > 0){
					if(caixas[0][*posGarra-1] != '.' && *segurando != 0)
						*capotou = 1;
					(*posGarra)--;
				}

				/* Comando para a abaixar a garra */
				else if (programas[i][j] == 'D' && altura[*posGarra] < linhas && 
								 *segurando == 0){
					*segurando = caixas[altura[*posGarra]][*posGarra];
					caixas[altura[*posGarra]][*posGarra] = '.';
					altura[*posGarra]++;
				}else if (programas[i][j] == 'D' && altura[*posGarra] > 0 &&
									*segurando != 0){
					caixas[(altura[*posGarra])-1][*posGarra] = *segurando;
					*segurando = 0;
					altura[*posGarra]--;
				}

				/* Comando de chamar outro programa */
				else if(programas[i][j] >= '1' && programas[i][j] <= '9' &&
								*execucoes < maxExecucoes){
					executa(caixas, linhas, colunas, programas, programas[i][j] - '1',
									posGarra, segurando, condicao, altura, execucoes,
									maxExecucoes, capotou);
				}
			}
			/* Apos executar o comando, reseta a condicao */
			*condicao = 0;
		}
	}while(programas[i][++j] != '*');
}