RESPOSTAS

PROGRAMAÇÃO IMPERATIVA TP3


2.

#include <stdio.h>

void main()
{
  char caracter;
  int inteiro;
  float flutuante;
  double duplo;
  long int inteiro_comprido;
  char array1[10];

  printf("\n Tamanho dum caracter‚: %i", sizeof(caracter));
  printf("\n Tamanho dum caracter‚: %i", sizeof(char));
  printf("\n Tamanho dum inteiro‚: %i", sizeof(inteiro));
  printf("\n Tamanho dum inteiro‚: %i", sizeof(int));
  printf("\n Tamanho dum real flutuante ‚: %i", sizeof(flutuante));
  printf("\n Tamanho dum real flutuante ‚: %i", sizeof(float));
  printf("\n Tamanho dum duplo‚: %i", sizeof(duplo));
  printf("\n Tam. dum inteiro comprido‚%i", sizeof(inteiro_comprido));
  printf("\n Tam. de arranjo com 1o pos.‚: %i", sizeof(array1));
}


3.

#include <stdio.h>

void main()
{
  char caracter = 'z';
  int inteiro = 100;
  float flutuante = 12.345;
  double duplo = 345678.32345;
  long int inteiro_comprido = 12345678;
  char array1[10] = "quebonito";

  printf("\n O valor da variável caracter‚: %c",caracter);
  printf("\n O valor da variável inteiro‚: %i",inteiro);
  printf("\n O valor da variável flutuante‚: %f",flutuante);
  printf("\n O valor da variável duplo‚: %f",duplo);
  printf("\n O valor da var. inteiro_comprido‚%li",inteiro_comprido);
  printf("\n O conteúdo da variável array1‚: %s\n", array1);
}


4.

#include <stdio.h>

void main()
{
  float i, j;/*correção */

  i = 16385.0;
  j = 2.0 * i;
  printf("\n2 * %.0f = %.0f\n", i, j);/*correção */
}


5.

#include <stdio.h>

void main()
{
  float n1, n2;

  printf("\nEste programa calcula o maior de dois números reais \n");
  printf("\nFaz favor de entrar o primeiro número: ");
  scanf("%f", &n1);
  printf("\nFaz favor de entrar o segundo número: ");
  scanf("%f", &n2);

  /*-------agora determinamos qual número entrado ‚ maior ----------*/
  if (n1 > n2)
    printf("\n\nO %.2f ‚ maior do que o: %.2f", n1, n2);
  else
   {
    if (n1 < n2)
      printf("\n\nO %.2f ‚ maior do que o: %.2f", n2, n1);
    else
      printf("\n\nO número %.2f ‚ igual ao número %.2f", n1, n2);
   }
}


6.

#include <stdio.h>

void main()
{
  float teste, trabalho, frequencia;
  float peso_teste = 0.75, peso_trab = 0.25;

  teste = 0.0; trabalho = 0.0;

  printf("\nEste programa calcula a nota de frequência numa cadeira \n");
  printf("\nA nota do teste tem peso 75% e do trabalho ‚ 25%\n");
  printf("\nFaz favor de entrar a nota do teste: ");
  scanf("%f", &teste);
  printf("\nFaz favor de entrar a nota do trabalho: ");
  scanf("%f", &trabalho);

  /*-------agora determinamos a nota de frequência: */

  frequencia = (teste * peso_teste) + (trabalho * peso_trab);

  /*agora testamos se a nota obtida de frequência dá para passar: */

  if (frequencia >= 9.5)
    printf("\n\ Aprovaste com %.2f valores", frequencia);
  else
    printf("\n\n A sua nota ‚: %.2f; tem que ir a exame", frequencia);
}

o que teria acontecido se no primeiro 'if' escrevíamos:
“if (frequencia > 9.5)”?
(resp.: alunos bater a porta do prof.)


7.

#include <stdio.h>

void main()
{
  int n1, n2, n3;

  printf("\nEste programa recebe três inteiros DISTINTOS e vai escrever-lhes na\
   ordem crescente. \n");
  printf("\nFaz favor de entrar o primeiro número: "); scanf("%d", &n1);
  printf("\nFaz favor de entrar o segundo número:"); scanf("%d", &n2);
  printf("\nFaz favor de entrar o terceiro número: "); scanf("%d", &n3);

  /*-------agora temos que comparar para escrever correctamente:
    Quais são todas as hipóteses possíveis?.
    Calcular primeiro aquilo com papel e lápis.
    Como quase sempre, á  muitas maneiras de escrever um programa.
    Esta que vai a seguir ‚ é só uma delas.
    Aqui não vamos utilizar a conjunção AND (e) que em C escreve-se '&&'
    o número de ordem serve para saber qual opção utiliza o pgm. */

  if (n1 < n2)
   {
    if (n2 < n3)
      printf("\n\ ordem crescente(1): %d%d%d",n1,n2,n3);
    else
      if (n1 < n3)
        printf("\n\ ordem crescente(2): %d%d%d",n1,n3,n2);
      else
        printf("\n\ ordem crescente(3): %d%d%d",n3,n1,n2);
   }
  else
   {
    if (n3 > n1)
      printf("\n\ ordem crescente(4): %d%d%d",n2,n1,n3);
    else
      if (n3 < n2)
        printf("\n\ ordem crescente(5): %d%d%d",n3,n2,n1);
      else
        if (n3 < n1)
          if (n3 > n2)
            printf("\n\ ordem crescente(6): %d%d%d", n2,n3,n1);
   }
}


8.

#include <stdio.h>

void main()
{
  int n;

  printf("\n Esta rotina calcula o valor absoluto de x -> |x|. \n");
  printf("\n Faz favor de entrar o número: "); scanf("%d", &n);

  // Como se calcula o valor absoluto dum número?
 
  if (n < 0)
    printf("\n |%d| = %d", n, (n * -1));
  else
    printf("\n |%d| = %d", n, n);
}


9.

#include <stdio.h>

void main()
{
  float largura, comprimento;

  clrscr();
  printf("\n Este programa, dados largura e comprimento numa figura geométrica\
         , determina se a dita figura é um quadrado ou um rectângulo. \n");
  printf("\n Indicar a largura: "); scanf("%f", &largura);
  printf("\n Indicar o comprimento : "); scanf("%f", &comprimento);

  if (comprimento == largura)
    printf("\n A sua figura é um quadrado de lado = %.2f", comprimento);
  else
    printf("\n A sua figura é um rectângulo de %.2f x %.2f",
           largura, comprimento);
}


10.

#include <stdio.h>

void main()
{
  float horas, horas_extra, salario, total;

  clrscr();
  printf("\nEste programa calcula o salário dum operário, baseado no número\
          de horas trabalhadas por semana e o valor horário do salário. As horas\
          extraordinárias (> 40 hrs/semana) são pagas no dobro do salário normal.\
          Todos estes valores são em Euros (€). \n");

  printf("\n Indicar o salário normal por hora: ");
  scanf("%f", &salario);
  printf("\n Indicar o número de horas trabalhadas na semana: ");
  scanf("%f", &horas);

  /* fazer sempre primeiro com papel e lápis o algoritmo do problema:
     1) Determinar se existirem horas extraordinárias
     2) Se houver, as horas normais ficam reduzidas a 40. As horas extra a diferença.
     3) Calcular o salário total = salário das 40 horas + salário das extra.*/

  if (horas > 40)
   {
    horas_extra = horas - 40;
    horas = 40;
   }
  else
    horas_extra = 0.0;

  /*agora calculamos o total ganho durante uma semana */

  total = (horas * salario) + (horas_extra * (salario * 2));

  printf("\n Salário 40 horas  : %8.2f euros",(horas * salario));
  printf("\n Salário Horas Extra: %8.2f euros",(horas_extra * salario) * 2);
  printf("\n-----------");
  printf("\n total%8.2f euros\n", total);
}