Programação Imperativa
Aula Prática 7

Sumário

1.
Escreve um programa que atribuí números aleatórios a um array de duas dimensões de 5 por 4 elementos e que apresenta esses números no ecrã por colunas.


2.
Altera o programa anterior de forma a que apresente também o maior e o menor dos números aleatórios.


3.
Escreve um programa que ordena uma lista de N números. N pode ir no máximo até 100.


4.
Escreve um programa que registe o sexo e a idade de um grupo de dez pessoas. Em seguida o programa deve apresentar a média das idades de cada sexo.


5.
O programa a seguir usa a técnica de passagem por valor. Muda o programa de forma a usar a técnica de passagem por referência.
Qual será o output do programa antes e após esta mudançã?
código original:

#include <stdio.h>
int twotimesx(int x)
{
  x = 2*x;
  return(x);
}

void main()
{
  int a, b;
  a = 10.0;
  b = twotimesx(a);
  printf("%a", a);
}

                  código modificado:
(aula relevante: 15)

6.
Escreve uma função que recebe como parâmetros a largura e comprimento de um rectângulo. A função deve calcular e devolver os seguintes pontos
   1: a área do rectângulo (lado vezes lado).
   2: o perímetro (somar os quatro lados).
A função não pode usar variáveis globais!
(Nota: porque a informação a retornar são dois valores, temos de usar ponteiros (passagem por referência). Veja aulas 15 e 14.)


7.
  void double10(double *dp)
  {
    *dp = 10.0;
  }

  void main()
  {
    float y=10.0;
    float x=10.0;

    double10((double *) &x);
    printf("%f %f\n", x, y);
  }
O programa acima não corre bem (o output não será 10.0 10.0). Experimente e elimine o erro.
(aula relevante: 15)



8.
Na aula prática 3, o exercicío 8 consistia no seguinte: Faz um programa que receba 10 valores inteiros e que indique: Quantos são pares, quantos são ímpares, quantos são positivos e quantos são negativos. Volta a escrever o programa, utilizando arrays.


9.
Volta a fazer o exercício de contar 0s e 1s de um byte binário, com arrays.


10.
Volta a fazer o exercício de converter um número decimal para binário, com arrays.


11.
Faz um programa que apresente uma tabela de conversão de decimal para binário:
           0       0
           1       1
           2      01
           3      11
           4     100
           ...   ...


12.
Now safe your work and crash the computer with the following program:
#include <stdlib.h>
void main()
{
  int i;
  int *p;

  for (i=0; i<=10000; i++)
   {
     p = (int *) rand();
     *p = 0;
   }
}
(Running this program is at your own risk. It will crash the computer and in some cases it can destroy the operating system and in extreme cases even the hardware)