Exemple #1
0
void executa_d(produto tabela[], material vetor[], int orca[]){
    char subcomando;
    int i;

    getchar(); /* le o espaco */
    subcomando = getchar(); /* le o sub-comando */

    switch (subcomando) {
    case 'i':
        for(i = 0; i < 5; i++)
            le_nome(tabela[i].nome, SIZE_NOME);
        for(i = 0; i < 4; i++)
            printf("%s ", tabela[i].nome);
        printf("%s\n", tabela[4].nome);
        break;
    case 'j':
        le_nome(vetor[0].nome, SIZE_NOME);
        le_nome(vetor[1].nome, SIZE_NOME);
        le_nome(vetor[2].nome, SIZE_NOME);
        printf("%s ", vetor[0].nome);
        printf("%s ", vetor[1].nome);
        printf("%s\n", vetor[2].nome);
        break;
    case 'y':
        for(i = 0; i < 3; i++)
            scanf("%lf", &vetor[i].custo);
        getchar(); /* le o \n no final do input do utilizador */
        break;
    case 'v':
        for(i = 0; i < 5; i++)
            scanf("%d", &tabela[i].vendas);
        getchar(); /* le o \n no final do input do utilizador */
        break;
    case 'z':
        for(i = 0; i < 5; i++)
            scanf("%d", &tabela[i].pvenda);
        getchar(); /* le o \n no final do input do utilizador */
        break;
    case 'p':
        for(i = 0; i < 5; i++)
            scanf("%d", &tabela[i].perdas);
        getchar(); /* le o \n no final do input do utilizador */
        break;
    case 'm':
        for(i = 0; i < 5; i++)
            scanf("%d", &tabela[i].k_mo);
        getchar(); /* le o \n no final do input do utilizador */
        break;
    case 'n':
        for(i = 0; i < 5; i++)
            scanf("%d", &tabela[i].k_en);
        getchar(); /* le o \n no final do input do utilizador */
        break;
    case 'q':
        for(i = 0; i < 5; i++)
            scanf("%d", &tabela[i].k_eq);
        getchar(); /* le o \n no final do input do utilizador */
        break;
    case 'o':
        for(i = 0; i < 5; i++)
            scanf("%d", &orca[i]);
        getchar(); /* le o \n no final do input do utilizador */
        break;
    case 'c':
        for(i = 0; i < 5; i++){
            scanf("%d", &tabela[i].m1);
            scanf("%d", &tabela[i].m2);
            scanf("%d", &tabela[i].m3);
        }
        getchar(); /* le o \n no final do input do utilizador */
        break;
    default:
        printf("ERRO: Comando l [%c] desconhecido\n",subcomando);
    }
}
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 */