Instituto de Computação - UNICAMP

MC102# - Prova 1 - Gabarito

Islene Calciolari Garcia


Questão 1 (2 pontos) - Escreva um programa que leia o comprimento dos lados a, b e c de um triângulo, calcule o seu perímetro e verifique se este triângulo é ou não eqüilátero. Exemplo:
a: 10 
b: 8  
c: 10 
Perimetro: 28 
O triangulo nao é equilatero.
Solução:
#include <stdio.h>

int main() {
  float a, b, c;
  
  printf("a: ");
  scanf("%f", &a);
  printf("b: ");
  scanf("%f", &b);
  printf("c: ");
  scanf("%f", &c);

  printf("Perimetro: %.2f\n", a+b+c);

  if (a == b && b == c)
    printf("O triângulo é equilatero\n");
  else
    printf("O triângulo nao é equilatero\n");
  return 0;
}

Questão 2 Analise o seguinte programa:
#include <stdio.h>                        

int main() {
  int i, j;
  
  for (i = 0; i < 5; i++) {
    for (j = 0; j < i; j++)
      printf("-");
    for (j = 0; j < 5 - i; j++)
      printf("+");
    printf("\n");
  }
  return 0;
}
(a) (2.0 pontos) Escreva a saída deste programa. Solução:
+++++
-++++
--+++
---++
----+
(b) (2.0 pontos) Reescreva este programa substituindo os comandos do tipo for por comandos do tipo while. Solução:
#include <stdio.h>

int main() {
  int i, j;
  
  i = 0;
  while (i < 5) {
    j = 0;
    while (j < i) {
      printf("-");
      j++;
    }
    j = 0;
    while (j < 5 - i) {
      printf("+");
      j++;
    }
    printf("\n");
    i++;
  }
  return 0;
}


Questão 3 - (2.0 pontos) Escreva um programa para calcular o valor de
  x = 1 - 1/2 + 1/4 + ... + 1/40

Observação: você pode estruturar o seu programa utilizando o comando for ou o comando while.

Solução:

#include <stdio.h>

int main() {
  float x;
  float i;

  x = 1 - 0.5;

  for (i = 4; i <= 40; i = i+2) 
    x += 1/i;

  printf ("x = 1 - 1/2 + 1/4 + ... + 1/40\n");
  printf ("x = %f\n", x);

  return 0;
}


Questão 4 - (2 pontos) Escreva um programa que leia uma seqüência de N valores inteiros fornecidos pelo usuário e imprima o número de valores positivos, de valores negativos e de zeros. O valor N deve ser especificado pelo usuário.
N: 10
1 6 -5 6 8 -7 0 0 -2 -6
4 valores positivos, 4 valores negativos e 2 zeros.
Solução:
#include <stdio.h>

int main() {
  int n, i, x;
  int pos, neg, z;

  pos = 0;
  neg = 0;
  z = 0;

  printf ("N: ");
  scanf("%d", &n);

  for (i = 0; i < n; i++) {
    scanf("%d", &x);
    if (x > 0)
      pos++;
    else if (x == 0)
      z++;
    else
      neg++;
  }
  printf("%d valores positivos, %d valores negativos e %d zeros",
	 pos, neg, z);

  return 0;
}