static inline void parse_input() { /* i["h"] = 122.0 i["a"] = 1.0 i["d"] = 2.0 i["alpha"] = 2.0 i["delta"] = 1.0 i["t_0"] = 0.0 i["t_inicial"] = 0 i["theta_crit"] = 1050 #? i["theta_0"] = 1000.0 i["pos"] = (1.0, 1.0, 1.0) i["vel"] = (1.0, 1.0, 1.0) i["steps"] = 20 */ FILE *arq; arq = fopen("entrada.txt","rt"); /* Arquivo ASCII, para leitura */ capsule.h = prox_linha(arq); capsule.a = prox_linha(arq); capsule.d = prox_linha(arq); capsule.alpha = prox_linha(arq); capsule.delta = prox_linha(arq); capsule.t_0 = prox_linha(arq); capsule.t_inicial = prox_linha(arq); capsule.theta_crit = prox_linha(arq); capsule.theta_0 = prox_linha(arq); float x, y, z; fscanf(arq, "%f %f %f\n", &x, &y, &z); v3d_set(&capsule.pos, x, y, z); fscanf(arq, "%f %f %f\n", &x, &y, &z); v3d_set(&capsule.vel, x, y, z); capsule.steps = prox_linha(arq); fclose(arq); }
int main() { char acao; num_matriz k, k1, k2, k3; int m, n, i, j; float x; matriz a[num_nomes]; while (true) { scanf("%c", &acao); printf("ação: %c", acao); switch (acao) { case 'r': le_nome(&k); prox_linha(); printf(" %c\n", min_nome+k); le_matriz(&a[k]); break; case 'z': le_nome(&k); scanf("%d %d", &m, &n); prox_linha(); printf(" %c %d %d\n", min_nome+k, m, n); inicializa(&a[k], m, n); break; case 'v': le_nome(&k); scanf("%d %d", &i, &j); prox_linha(); printf(" %c %d %d\n", min_nome+k, i, j); printf(" %c[%d,%d] = %8.2f\n", min_nome+k, i, j, valor(&(a[k]), i, j)); break; case 'a': le_nome(&k); scanf("%d %d %f", &i, &j, &x); prox_linha(); printf(" %c %2d %2d %8.2f\n", min_nome+k, i, j, x); atribui(&a[k], i, j, x); break; case 's': le_nome(&k1); le_nome(&k2); le_nome(&k3); prox_linha(); printf(" %c %c %c\n", min_nome+k1, min_nome+k2, min_nome+k3); soma(&a[k1], &a[k2], &a[k3]); break; case 'm': le_nome(&k1); le_nome(&k2); le_nome(&k3); prox_linha(); printf(" %c %c %c\n", min_nome+k1, min_nome+k2, min_nome+k3); multiplica(&a[k1], &a[k2], &a[k3]); break; case 't': le_nome(&k1); le_nome(&k2); prox_linha(); printf(" %c %c\n", min_nome+k1, min_nome+k2); transpoe(&a[k1], &a[k2]); break; case 'w': le_nome(&k); prox_linha(); printf(" %c\n", min_nome+k); imprime_matriz(&a[k]); break; case 'x': printf("\n"); bapply(bprint); printf("fim da execução.\n"); exit(0); break; case '#': { int c; do { c = getchar(); putchar(c); } while ((c != '\n') && (c != EOF)); } break; case 'l': le_nome(&k); prox_linha(); printf(" %c\n", min_nome+k); libera(&a[k]); break; default: { erro("ação inválida"); } } /* switch */ } /* while */ bapply(bprint); return 0; } /* main */