Exemple #1
0
void test_operacao()
{
    t.open("operacao", 1);
    t.add(operacao(4) == 20);
    t.add(operacao(-3) == -6);
    t.add(operacao(3) == 15);
    t.add(operacao(-15) == -18);
    t.add(operacao(-5) == -8);
    t.close();
}
Exemple #2
0
int main(){
  int a,b;
  char op;
  printf("Insira o primeiro numero:\n" );
  scanf("%d",&a );
  printf("Insira o segundo numero:\n" );
  scanf("%d",&b );
  printf("Insira a operacao\n");
  fflush(stdin);//No windows
  getchar();//No linux
  scanf("%c",&op );
  printf("O resultado de %d %c %d = %d\n",a,op,b,operacao(a,b,op) );
  return 0;
}
Exemple #3
0
int main(){
	persistR0();
	cleanR();
	int i =0, j;
	long wholeWord[1000];
	FILE *hexa;
	hexa = fopen("1_factorial.hex", "r");
	if (hexa == NULL)  // Se houve erro na abertura
	  {
		 printf("Problemas na abertura do arquivo\n");
		 return;
	  }
	while(!feof(hexa)){
		fscanf(hexa, "%x", &wholeWord[i]);  // o 'fgets' lê até 99 caracteres ou até o '\n'
		i++;
	}
	long *instruction;
	instruction =malloc(i*sizeof(long));
	fclose(hexa);
	j=i;
	for (i=0; i<j; i++){
		instruction[i]=instrucao(wholeWord[i]);
	}
	char* parse;
	long* U;
	long* F;
	long S;
	for (i=0; i<j; i++){
		parse=operacao(instruction[i]);
		//printf("%d %c\n", parse[4], parse[4]);
		if(parse[4] == 85){ //U
				U=opU(instruction[i], wholeWord[i]);	
				printf("%s E: %d Rz: %d Rx: %d Ry: %d \n", parse, U[0],U[1],U[2],U[3]);
		}
		else if(parse[4] == 70){ //F{
				F=opF(wholeWord[i]);
				printf("%s IM16: %d Rx: %d Ry: %d \n", parse, F[0],F[1],F[2]);
		}
		else if(parse[4] == 83){ //S
				S=opS(wholeWord[i]);
				printf("%s IM16: %d \n", parse, S);
		}
		else{	
				printf("ERRO \n");
		break;
		}
	}
}
int main(int argc, char *argv[]) {
	
	float A=0, B=0;
	int opcao=0;
	
	
	
	
	printf("[1] - Somar dois numeros. \n ");
	printf("[2] - Subtrair dois numeros. \n ");
	printf("[3] - Multiplicar dois numeros. \n ");
	printf("[4] - Dividir dois numeros. \n ");
	printf("[5] - Raiz quadrada de um numero. \n ");
	
	
	printf("Digite a opcao: 1 ou 2 ou 3");
	scanf("%d", &opcao);
	
	if(opcao != 5){
	
	
		printf("Digite o numero 1: ");
    	scanf("%f", &A);   	    
    
		printf("Digite o numero 2: ");
    	scanf("%f", &B);  
    
    	operacao(A,B,opcao);
	
    }else{
    	printf("Digite o numero: ");
    	scanf("%f", &A);   	
    	raizQuadrada(A);
	}
	    
   	
	
    
	
	
	return 0; 
}
Exemple #5
0
	int main(){
	

	scanf("%s",str);
	
	for(j=0;str[j]!='\0';j++){
		if(str[j]=='|' || str[j]==',' || str[j]=='+' || (str[j]=='-' && (j>0 && str[j-1]!='|' && str[j-1]!=',' && str[j-1]!='+' && str[j-1]!='*' && str[j-1]!='/' && str[j-1]!='-')) || str[j]=='*' || str[j]=='/'){
			
			if(str[j]=='+'){
				op[opnum]='+';
				opnum++;
}
			else if(str[j]=='-'){
				op[opnum]='-';
				opnum++;
}

			else if(str[j]=='*'){
				op[opnum]='*';
				opnum++;
}
			else if(str[j]=='/'){
				op[opnum]='/';
				opnum++;
}
			
			if(str[j]=='|')
				var[1][z][0]=0;
			else if(str[j]==',')
				var[1][z][0]=1;			

			for(;i<j;i++){
				var[0][z][w]=str[i];
				w++;	
			}
				var[0][z][w]='\0';
				z++;
				w=0;
				i++;
		}

}

	for(;i<j;i++){
		var[0][z][w]=str[i];
		w++;
	}
		var[0][z][w]='\0';
		z++;

	
	for(j=0;j<z;j++){
		if(j%2==0)	i=0;
		else		i=1;	
			
		fasor[0][j/2][i]=atof(var[0][j]);
		fasor[1][j/2][0]=var[1][2*(j/2)][0];

}
/*
	for(j=0;j<z;j++){
		if(j%2==0)
		printf("%lf|",fasor[0][j/2][0]);
		else
		printf("%lf\n%lf\n\n",fasor[0][j/2][1],fasor[1][j/2][0]);

}
*/

		if(fasor[1][0][0]==0)
			a='|';
		else
			a=',';		
		
		var1[1]=fasor[0][0][0];
		var1[2]=fasor[0][0][1];

	for(i=0;i<opnum;i++){
		switch(op[i]){
			case '+':
				b='+';
			break;
			
			case '-':
				b='-';
			break;
			
			case '*':
				b='*';
			break;

			case '/':
				b='/';
			break;			

			default:
				printf("Escolha errada de operações!!!\n");
			break;
}
		if(fasor[1][i+1][0]==0)
			c='|';
		else
			c=',';
		var2[1]=fasor[0][i+1][0];
		var2[2]=fasor[0][i+1][1];	
		operacao();
		a='|';
					
}
	printf("%lf/%lf°\n",var1[1],var1[2]);

	}
Exemple #6
0
void gera(FILE *f, void **code, funcp *entry){
    int linha = 1, // controle de leitura das linhas
        pos = 0, // controle da posição do vetor com código de entrada
        numFuncoes = 0; //controle da posição do vetor de endereço das funções
    unsigned int funcoes[10]; // *funções é um vetor com os endereços de cada função no código de entrada
    unsigned char *codigo; // *codigo é um vetor com os códigos de máquina
    char c;
    
    // Separar espaço para o código
    codigo = (unsigned char *)malloc(MAXT);
    
    // Enquanto não chegamos ao fim do arquivo, ler cada caracter e interpretar
    while ((c = fgetc(f)) != EOF) {
        switch (c) {
            case 'f': {  /* function */
                char c0;
                if (fscanf(f, "unction%c", &c0) != 1) 
                    error("comando invalido", linha);
                else
                    prologo(codigo, &pos, funcoes, &numFuncoes);
                break;
            }
            case 'e': {  /* end */
                char c0[3];
                if (fscanf(f, "%3c", c0) != 1)
                    error("comando invalido", linha);
                else
                    finalizacao(codigo, &pos);
                break;
            }
            case 'v': case 'p': {  /* atribuicao */
                int i0;
                char v0 = c, c0;
        
                if (fscanf(f, "%d = %c", &i0, &c0) != 2)
                    error("comando invalido", linha);
        
                if (c0 == 'c') { /* call */
                    int n, i1;
                    char v1;
                    if (fscanf(f, "all %d %c%d", &n, &v1, &i1) != 3) 
                        error("comando invalido", linha);
                    else
                        call(n, v0, i0, v1, i1, funcoes, codigo, &pos);
                }
                else { /* operacao aritmetica */
                    int i1, i2;
                    char v2, op;
                    if (fscanf(f, "%d %c %c%d", &i1, &op, &v2, &i2) != 4)
                        error("comando invalido", linha);
                    else
                        operacao(v0, i0, c0, i1, op, v2, i2, codigo, &pos);
                }
                break;
            }
            
            case 'r': {  /* ret */
                int i0, i1;
                char v0, v1;
                if (fscanf(f, "et? %c%d %c%d", &v0, &i0, &v1, &i1) != 4)
                   error("comando invalido", linha);
                else
                    retorno(v0, i0, v1, i1, codigo, &pos); 
                break;
            }
            default: error("comando desconhecido", linha);
        }
        linha++;
        fscanf(f, " ");
        
    } 

    *entry = (funcp) funcoes[numFuncoes-1];
    *code = (void*) codigo;
}