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(); }
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; }
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; }
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]); }
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; }