next up previous
Next: About this document ...

Gabarito da Prova Substitutiva
MAC115 - Física, segundo semestre de 2000

1.
Tabelas:

#====================================================================#
# função f1 #      função f2         #     função f3                 #
#===========#========================#===============================#
# a | b | c #  a |  b  |*pmin |*pmax # v[0] v[1] v[2] v[3] min max n #
#---|---|---#----|-----|------|------#-------------------------------#
# 4 | 7 | 5 #  4 |  7  |   5  |   ?  #   3    7    1    5   3   3  4 #
#   |   |   #    |     |   4  |   7  #   1              7   1   7    #
#   |   |   #    |     |      |      #                               #
#   |   |   #    |     |      |      #                               #
#   |   |   #    |     |      |      #                               #
#====================================================================#


#========================#
#   função main()        #
#========================#
#  x  |  y  |  z  |  w   #
#-----|-----|-----|------#
#  4  |  7  |  5  |  ?   #
#     |     |  4  |  7   #
#     |     |     |      #
#     |     |     |      #
#========================#
A saída é como segue:

Funcao f1:
x = 4  y = 7 z = 5 
f1(4, 7, 5) = 1 

Funcao f2:
Dentro da funcao f2: maior = 7, menor = 4.
x = 4  y = 7  z = 4  w = 7

Funcao f3:
 a[0] = 3  a[3] = 5
 a[0] = 1  a[3] = 7

2.
(a)

void leia_vetor(int v[], int n)
{
  int i;

  for (i=0; i<n; i++)
    scanf("%d", &v[i]);
}

void imprima_vetor(int v[], int n)
{
  int i;

  for (i=n-1; i>=0; i--)
    printf("%d", v[i]);
  printf("\n");
}

(b)

int some(int s[], int a[], int n_a, int b[], int n_b)
{
  int i, n_max, vai_1=0, t;

  /* Colocamos zeros no vetor menor para que possamos considerar
   * os dois numeros como tendo o mesmo numero de digitos
   */
  if (n_a>n_b) {
    n_max=n_a;
    for (i=n_b; i<n_a; i++)
      b[i]=0;
  } else if (n_b>n_a) {
    n_max=n_b;
    for (i=n_a; i<n_b; i++)
      a[i]=0;
  } else
    n_max=n_a;

  /* Soma dos digitos */
  for (i=0; i<n_max; i++) {
    t=a[i]+b[i]+vai_1;
    s[i]=t%10;
    vai_1=t/10;
  }

  if (t>0) {
    s[n_max]=t;
    n_max++;
  }

  return n_max;
}

(c)

#include <stdio.h>

#define NMAX 1000

void leia_vetor(int v[], int n);
void imprima_vetor(int v[], int n);
int some(int s[], int a[], int n_a, int b[], int n_b);

int main()
{
  int a[NMAX], b[NMAX], s[NMAX];
  int n_a, n_b, n_s;

  scanf("%d", &n_a);
  leia_vetor(a, n_a);
  scanf("%d", &n_b);
  leia_vetor(b, n_b);

  n_s=some(s, a, n_a, b, n_b);

  imprima_vetor(a, n_a);
  printf("+\n");
  imprima_vetor(b, n_b);
  printf("=\n");
  imprima_vetor(s, n_s);

  return 0;
}

3.
(a)

void leia_matriz(int a[][NMAX], int m, int n)
{
  int i, j;

  for (i=0; i<m; i++)
    for (j=0; j<n; j++)
      scanf("%d", &a[i][j]);
}

void imprima_matriz(int a[][NMAX], int m, int n)
{
  int i, j;

  for (i=0; i<m; i++) {
    for (j=0; j<n; j++)
      printf("%4d", a[i][j]);
    printf("\n");
  }
}
(b)

void menor_maior(int v[], int comp, int *pmin, int *pmax)
{
  int i; 

  *pmin=*pmax=v[0];
  for (i=1; i<comp; i++) {
    if (v[i]>*pmax)
      *pmax=v[i];
    if (v[i]<*pmin)
      *pmin=v[i];
  }
}
(c)

int processe_matriz(int a[][NMAX], int m, int n)
{
  int i, peso_max, i_max, l_max, l_min;

  menor_maior(a[0], n, &l_min, &l_max);
  peso_max=l_min+l_max;
  i_max=0;
  printf("Pesos:\n");
  printf("0: %3d %3d  peso = %d\n", l_min, l_max, l_min+l_max);

  for (i=1; i<m; i++) {
    menor_maior(a[i], n, &l_min, &l_max);
    printf("%d: %3d %3d  peso = %d\n", i, l_min, l_max, l_min+l_max); 
    if (l_min+l_max>peso_max) {
      peso_max=l_min+l_max;
      i_max=i;
    }
  }

  printf("Linha de maior peso: %d\n", i_max);
  printf("Peso maximo: %d\n", peso_max);

  return i_max;
}
(d)

#include <stdio.h>

#define MMAX 100
#define NMAX 100

void leia_matriz(int a[][NMAX], int m, int n);
void imprima_matriz(int a[][NMAX], int m, int n);
void menor_maior(int v[], int comp, int *pmin, int *pmax);
int processe_matriz(int a[][NMAX], int m, int n);

int main()
{
  int m, n, a[MMAX][NMAX], l, j;

  scanf("%d %d", &m, &n);
  leia_matriz(a, m, n);

  printf("Matriz lida:\n");
  imprima_matriz(a, m, n);

  l=processe_matriz(a, m, n);

  printf("Elementos da linha de peso maximo:\n");
  for (j=0; j<n; j++)
    printf("%d ", a[l][j]);
  printf("\n");
  
  return 0;
}





Yoshiharu Kohayakawa
2000-12-18