Exercícios FARMA-ALG

Conversão de temperaturas

Enunciado

Fazer um programa em Pascal que lê um número representando uma temperatura na escala Celsius e imprime a
correspondente temperatura na escala Farenheit. Observação: C = 5*(F-32)/9.
Entrada: 100
Saída: 212.00 graus Farenheit

Solução em Pascal

Solução em C

Conversão de velocidades

Enunciado

Fazer um programa em Pascal que lê um número representando uma velocidade em km/h e imprime correspondente
velocidade em ml/h (milhas por hora). Observação: 1 milha = 1.609344 km.

Entrada: 100
Saída: 62.14 ml/h

Solução em Pascal
Solução em C
Hidden content

Graus, minutos e segundos

Enunciado

Dado um número inteiro que representa uma quantidade de segundos (unidade de medida de ângulo geométrico), determinar o seu valor equivalente em graus, minutos e segundos. Se a quantidade de segundos for insuficiente para dar o valor 1 (um) em graus, o valor em graus deve ser 0 (zero). A mesma observação vale em relação aos minutos e
segundos.

Exemplo: 3.500 segundos = 0 graus, 58 minutos e 20 segundos.
Entrada: 3500
Saída: 0 graus, 58 minutos e 20 segundos

Solução em Pascal
Solução em C
Hidden content

Frações

Enunciado

Dadas duas frações ordinárias a/b e c/d, determinar a sua soma e o seu produto, também no formato de frações. A entrada de dados deve ser constituída de duas linhas, cada uma contendo dois inteiros, uma para a e b e outra para c e d. A saída deverá ser também de duas linhas cada uma contendo um par que representa o numerador e o denominador
tanto da soma como do produto calculados.

Entrada:
1 2
3 4

Saída:
A soma = 10 / 8
O produto = 3 / 8

Solução em Pascal
Solução em C
Hidden content

Sistemas de equações

Enunciado

Fazer um programa em Pascal que lê seis números, a11, a12, b1, a21, a22 e b2 e imprime uma solução do sistema de equações
lineares abaixo:

a11x + a12y = b1
a21x + a22y = b2

Entrada:
1 2 3
3 2 1

Saída:
x = -1.00
y = 2.00

Solução em Pascal
Solução em C
Hidden content

Fatores primos

Enunciado

Fazer um programa em Pascal capaz de ler apenas um número inteiro positivo do teclado, de calcular a decomposição em fatores primos desse número e de imprimir os fatores calculados. Exemplos de entrada e saída são:

./fatores\_primos
12 <ENTER>
2 2 3

./fatores\_primos
150 <ENTER>
2 3 5 5

Solução em Pascal

Solução em C
Hidden content

Co-seno de um radiano

Enunciado
Considere a soma S dos termo da série infinita apresentada abaixo, a qual é responsável pelo cálculo do valor do co-seno de 1 (um) radiano:

Fazer um programa em linguagem Pascal que seja capaz de calcular o valor aproximado da soma (S) dos termos da série até o momento em que a diferença das normas (módulo) de 2 termos consecutivos for menor que 0,000001 (i.e., norma da diferença das normas de dois termos consecutivos).
Este programa não possui nenhuma entrada.

Solução em Pascal
Solução em C
Hidden content

É palíndromo

Enunciado

Fazer um programa em Pascal capaz de ler apenas um número inteiro positivo do teclado e de verificar se a sua sequência de dígitos é exatamente a mesma, tanto se for visto da esquerda para a direita quanto da direita para a esquerda. Caso seja, imprimir “Sim eh palindromo”. Caso não seja, imprimir “Nao eh palindromo” (sem acento). Dica: aplique divisões sucessivas por 10. Exemplos de entrada e saída são:

./eh\_palindromo
12321 <ENTER>
Sim eh palindromo

./eh\_palindromo
31527 <ENTER>
Nao eh palindromo

Solução em Pascal
Solução em C
Hidden content

É k-alternante

Enunciado

Dizemos que uma sequência de inteiros é k-alternante se for composta alternadamente por segmentos de números pares de tamanho k e segmentos de números ímpares de tamanho k. Exemplos:

A sequência 1 3 6 8 9 11 2 4 1 7 6 8 é 2-alternante.
A sequência 2 1 4 7 8 9 é 1-alternante.
A sequência 4 2 3 1 6 4 2 9 não é alternante.
A sequência 1 3 5 é 3-alternante.

Fazer um programa em Pascal capaz de ler os seguintes valores de entrada:

a) um número inteiro k positivo que representa o tamanho do segmento alternante que será usado para testar a sequência;
b) uma sequência de números inteiros positivos terminada por zero (o zero não faz parte da sequência).

O programa deve determinar se a sequência de números lidos ée k-alternante. Se for, o programa deve imprimir “Sim eh k-alternante”. Caso contrário, deve ser impressa a mensagem “Nao eh k-alternante” (sem acento). Exemplos de entrada e saída são:

./eh_k_alternante
2 <ENTER>
1 3 6 8 9 11 2 4 1 7 6 8 0 <ENTER>
Sim eh k-alternante

./eh_k_alternante
3 <ENTER>
4 2 8 3 1 7 6 4 6 2 9 7 0 <ENTER>
Nao eh k-alternante

Solução em Pascal
 

Solução em C
Hidden content

23º número primo

Enunciado

Fazer um programa em linguagem Pascal que seja capaz de calcular e imprimir o vigésimo terceiro número primo.

Solução em Pascal
 

Solução em C
Hidden content

Multiplicação

Enunciado

Fazer um programa em PASCAL para simular o processo de multiplicação ensinado por uma professora primária aos seus alunos. O programa deve funcionar para multiplicandos e multiplicadores que são números inteiros com qualquer quantidade de algarismos, mesmo que o programa inevitavelmente seja testado apenas com entradas e saídas que estão dentro da faixa de valores permitidos para variáveis do tipo Integer do Pascal padrão ou do tipo Longint do dialeto Free Pascal Compiler. Os dois números, multiplicando e multiplicador, são fornecidos por meio de leitura do teclado do computador. Veja um exemplo de entrada e saída:

./multiplica
2187 <ENTER>
14 <ENTER>
30618

OBSERVAÇÃO: Aplique divisões sucessivas por 10.

Solução em Pascal
 

Solução em C
Hidden content

MDC

Enunciado

Fazer um programa em linguagem Pascal para ler uma quantidade arbitrária de números inteiros positivos do teclado e calcular o MDC (máximo divisor comum) de todos eles pelo método Euclidiano. Ao final, imprimir o valor do MDC calculado. O número zero é o último lido e não deve ser levado em conta no cálculo do MDC. Veja um exemplo do método Euclidiano aplicado a dois números: 720 e 520. Veja um exemplo de entrada e saída:

./mdc
480 120 96 4800 48 108 0 <ENTER>
12

OBSERVAÇÃO: NÃO utilize nem VETORES (ARRAYS) nem STRINGS.

Solução em Pascal
 

Solução em C
Hidden content

Quadrado mágico

Enunciado

Um “Quadrado Mágico” de 9 (nove) elementos (3 linhas por 3 colunas) pode ser definido como a combinação dos números de 1 até 9, sem repetição, organizados de forma bidimensional tal que a soma dos elementos de quaisquer das linhas, colunas ou diagonais resulta sempre no valor 15 (quinze). Abaixo, é apresentada uma das possíveis combinações de “Quadrado Mágico”.

Fazer um programa em linguagem PASCAL para gerar e imprimir apenas o primeiro “Quadrado Mágico” encontrado. OBSERVAÇÃO 1: Cuidado! Das 387.420.489 (99) variações de quadrados compostos com repetição de números de 1 a 9, somente 362.880 (9!) não apresentam nenhuma repetição, dos quais menos de 10 são “Quadrados Mágicos”. Mas prepare-se para esperar na frente do computador!
OBSERVAÇÃO 2: Não utilize nem VETORES (ARRAYS) nem STRINGS.

Solução em Pascal
 

Solução em C
Hidden content

Números repetidos

Enunciado

Fazer um programa em linguagem Pascal para ler uma quantidade arbitrária de números inteiros positivos do teclado e determinar os números repetidos fornecidos na entrada de dados. O programa deve imprimir apenas uma ocorrência de cada número repetido, mesmo que sejam fornecidas várias duplicatas do mesmo número no momento da entrada. O número zero é o último lido e não deve ser levado em conta na determinação de repetidos. Um exemplo de entrada e saída é:

./repetidos
3 4 5 5 6 7 8 8 9 10 5 5 5 7 7 3 0 <ENTER>
Os repetidos sao: 5 8 7 3

Solução em Pascal
Solução em C
Hidden content

União

Enunciado

Escreva um programa em linguagem Pascal para ler, a partir do teclado, duas sequências com quantidades arbitrárias de valores inteiros positivos, as quais denotam dois conjuntos da matemática. Os valores de uma sequência nunca conterão duplicatas mas podem vir fora de ordem. Cada sequência termina com o valor 0 (que não é elemento de nenhum dos conjuntos). Depois da leitura dos dados, o programa deve determinar e imprimir o conjunto união. Por exemplo, considere a entrada e a saída de dados abaixo:

./uniao
11 7 1 18 6 5 9 0 <ENTER>
9 22 4 5 6 18 0 <ENTER>
Conjunto Uniao = 11 7 1 18 6 5 9 22 4

Solução em Pascal
 

Solução em C
Hidden content

Triângulo de Pascal

Enunciado

O “Triângulo de Pascal” é formado por uma composição específica de números inteiros. Cada um dos números do triângulo é formado pela soma de dois números da linha anterior: um imediatamente acima e o outro, acima e à esquerda. Fazer um programa em Pascal para ler um número inteiro positivo que representa a altura de um Triângulo de Pascal, gerar e imprimir os valores desse Triângulo no monitor de vídeo do computador. Veja uma exemplo de execução do programa:

./triangulo
7 <ENTER>
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1

Solução em Pascal
 

Solução em C
Hidden content

Aniversário

Enunciado

Fazer um programa em linguagem Pascal capaz de calcular de forma numérica (não analítica) e imprimir a probabilidade de, em um grupo de 27 pessoas aleatoriamente escolhidas, ao menos 2 dessas fazerem aniversário no mesmo dia do ano. O programa deve conter ao menos um procedimento e uma função. O procedimento (“preenche”) deverá receber como parâmetro, por referência, um vetor de 27 posições de inteiros.

Para cada posição do vetor, o procedimento deverá preenchê-la, aleatoriamente, com um valor inteiro entre 1 e 365 (OBS: utilizar a função interna do dialeto de Pascal para a geração de números aleatórios que estiver disponível em seu compilador). A função (“tem coincidencia”), cujo parâmetro de entrada é um vetor com 27 posições preenchidas com números inteiros entre 1 e 365, retornará “true” se houver ao menos 2 posições do vetor com o mesmo valor e “false” no caso contrário.

Solução em Pascal
 

Solução em C
Hidden content

Intercala

Enunciado

Escreva um programa completo na linguagem Pascal capaz de realizar a intercalação de duas listas de valores reais lidos do
teclado. O programa deve conter um procedimento chamado intercala. Seus parâmetros são três vetores (e seus tamanhos):
Va, Vb e Vc. Todos são vetores de valores Reais, sendo que Va e Vb possuem uma quantidade arbitrária de valores lidos do
teclado (o zero é o último valor de cada lista de entrada). O procedimento deve intercalar os valores de Va com os de Vb e
colocar o resultado em Vc. A intercalação é uma operação de montagem de uma lista com elementos que foram escolhidos
alternadamente de duas outras listas. Por exemplo, suponha que os valores do vetor Va recebidos como parâmetro sejam
os seguintes:
1.0 2.0 3.0 4.0 5.0 6.0 7.0 0 <ENTER>
Suponha também que os valores do vetor Vb sejam os seguintes:
11.0 12.0 13.0 8.0 0 <ENTER>
O procedimento intercala deve retornar os seguintes valores por meio do vetor Vc a quem o ativar:
1.0 11.0 2.0 12.0 3.0 13.0 4.0 8.0 5.0 6.0 7.0
Atenção: O procedimento intercala deve ser projetado para imprimir nenhum valor na saída padrão. Realize a impressão
por meio de outro módulo.

Solução em Pascal
Hidden content
Solução em C
Hidden content

Ocorrências

Enunciado

Escreva um programa completo na linguagem Pascal para ler uma sequência de inteiros positivos e imprimir quantas vezes cada valor aparece na sequência. A sequência contém no máximo 100 inteiros e termina quando o valor 0 é digitado. Veja um exemplo de execução:

104 8 9 12 8 73 104 9 8 1001 0 <ENTER>
A sequencia contem:
104: 2 ocorrencias
8: 3 ocorrencias
9: 2 ocorrencias
12: 1 ocorrencia
73: 1 ocorrencia
1001: 1 ocorrencia

Sugestão: escreva a função abstrata busca( vet, tam, num ) que retorna o índice onde se encontra o valor num no vetor vet de tam elementos. Caso num não exista, a função retorna um código de erro (por exemplo, -1).

Solução em Pascal
 

Solução em C
Hidden content

Matriz de Vandermonde

Enunciado

Fazer um programa em Pascal para ler dois números inteiros que representam, respectivamente, a quantidade m de linhas e n de colunas de uma matriz. Em seguida, devem ser lidos os m x n elementos da matriz, os quais são números reais, entrados pela ordem das linhas da matriz. Depois da leitura, o programa deve decidir e imprimir se ela é ou não uma Matriz de Vandermonde. Se for, imprimir Sim. Se não for, imprimir Nao.

Pesquise sobre Matriz de Vandermonde em:
http://pt.wikipedia.org/wiki/Matriz_de_Vandermonde

De forma resumida, uma Matriz de Vandermonde é aquela que segue a forma geral abaixo:

Veja um exemplo de execução do programa abaixo:

5 4 <ENTER>
1 2 4 16 <ENTER>
1 3 9 81 <ENTER>
1 4 16 256 <ENTER>
1 5 25 625 <ENTER>
1 6 36 1296 <ENTER>
Nao

Veja outro exemplo:

5 4 <ENTER>
1 2 4 8 <ENTER>
1 3 9 27 <ENTER>
1 4 16 64 <ENTER>
1 5 25 125 <ENTER>
1 6 36 216 <ENTER>
Sim

Solução em Pascal
 

Solução em C
Hidden content

Gera imagem

Enunciado
Hidden content
Solução em Pascal
Hidden content
Solução em C
Hidden content

Deslocamento de imagem

Enunciado

“Esta lista possui um único exercício, o qual foi projetado para ser resolvido durante o período de uma semana. Ele adiciona caraterísticas ao Exercício 3 da Lista 5 e, por isso, sua solução pode ser facilitada se for uma modificação da solução anteriormente elaborada:

http://www.inf.ufpr.br/alexander/ci055/lista_5.pdf

Tais características adicionais são muito semelhantes ao que consta no enunciado de problema no link abaixo, porém apenas um deslocamento horizontal e um vertical será permitido agora:

http://br.spoj.com/problems/TV/

Fazer um programa em Pascal para ler, da entrada padrão (i.e., teclado), os dados de uma imagem de formato padrão PGM (Portable Gray Map). A leitura dos elementos da matriz deverá ser feita linha-a-linha (não por coluna).

O formato da impressão do programa, sempre na saída padrão (i.e., monitor de vídeo), deverá ser exatamente o mesmo de uma imagem codificada no padrão PGM (Portable Gray Map), o qual terá m+3 linhas. A primeira linha só deverá possuir dois caracteres: P2. A segunda linha deverá ter dois inteiros: a quantidade de colunas da matriz seguido da quantidade de linhas. A terceira linha possui apenas o valor da constante max, a qual representa o valor da máxima intensidade de luz em uma análoga escala de cinza cujos valores variam de 0 a max. Veja um exemplo de arquivo PGM comn = 4 colunas, m = 7 linhas e max = 12.

cat texto\_imagem\_1.pgm
P2
4 3
12
6 7 8 5
10 11 12 9
2 3 4 1

Os deslocamentos horizontal e vertical da imagem devem ser lidos também da entrada padrão por meio de dois números inteiros. O primeiro valor representa o deslocamento na direção horizontal (valor positivo representa deslocamento para a direita e valor negativo para a esquerda). O segundo valor representa o deslocamento da direção vertical (valor positivo
para cima e valor negativo para baixo). Esses dois valores constituem o final da leitura de dados do programa. Veja um exemplo de arquivo com dados de deslocamento horizontal de 3 pontos para a esquerda e vertical de 2 pontos para cima.

cat desloc_h_-3_v_2.txt
-3 2

Após a leitura, o programa deve efetuar ambos os deslocamentos sobre a matriz da imagem e, em seguida, imprimir a imagem completa na saída padrão no formato PGM. Por exemplo, se considerarmos os dois arquivos acima, o programa deverá imprimir os seguintes dados na tela.

cat texto_imagem_1.pgm desloc_h_-3_v_2.txt | ./sol_q1_lista6 | less

P2
4 3
12
1 2 3 4
5 6 7 8
9 10 11 12

Tal como já foi explicado anteriormente, também é possível visualizar a imagem PGM gerada pelo programa usando o
utilitário display. Tente copiar a imagem PGM que está no link:

http://www.inf.ufpr.br/cursos/ci055/imagem_Algoritmos.pgm

Execute o utilitário display para mostrar a imagem graficamente, assim:

display imagem\_Algoritmos.pgm &

Veja na Figura 1 como a imagem aparece na sua tela:

Figura 1: Imagem sem deslocamento apresentada com o utilitário display.

Crie também um exemplo de arquivo com dados de deslocamento horizontal de 48 pontos para a direita e vertical de 23 pontos para baixo. Veja como ele fica ao ser listado:

cat desloc_h_48_v_-23.txt
48 -23

Agora, provoque a entrada de dados por meio do utilitário cat aplicado, na ordem de entrada, aos dois arquivos. Canalise a saída do cat como entrada para o programa construído e, em seguida, canalise a saída para a execução do utilitário display por último para mostrar a imagem, assim:

cat imagem_Algoritmos.pgm desloc_h_48_v_-23.txt | ./sol_q1_lista6 | display &

Veja na Figura 2 como a imagem aparece na sua tela:

Figura 2: Imagem sem deslocamento apresentada com o utilitário display.

Os arquivos citados nos exemplos acima podem ser obtidos nos links abaixo:

http://www.inf.ufpr.br/cursos/ci055/imagem_Algoritmos.pgm
http://www.inf.ufpr.br/cursos/ci055/desloc_h_48_v_-23.txt
http://www.inf.ufpr.br/cursos/ci055/texto_imagem_1.pgm
http://www.inf.ufpr.br/cursos/ci055/desloc_h_-3_v_2.txt

Uma possível composição do corpo de comandos do Programa Principal poderia ser o seguinte (note que a execução dos dois comandos write foi inibida por meio de comentário de código):

Finalmente, como sugestão, tente usar o software gimp para criar imagens e salvar em formato PGM para testar seu programa. Atenção ao salvar o arquivo para que a opção ASCII seja adotada (não utilize a opção raw).”

Solução em Pascal
 

Solução em C
Hidden content

Sinuca

Enunciado

“Esta lista possui um único exercício, o qual foi projetado para ser resolvido durante o período de uma semana. Ele
adiciona caraterísticas aos exercícios já resolvidos em sala de aula que adotam reduções do tamanho da memória da
estrutura de dados quando o objeto principal é uma matriz espersa. Veja o exemplo de código que decide se nenhuma
das n Torres de um tabuleiro de xadrez de n por n ataca a outra. Nesse programa fonte, o tabuleiro que tem n X n casas
é uma matriz esparsa, a qual foi representada na forma de um vetor de inteiros onde a dezenda de cada inteiro guarda a
linha onde há uma Torre e a unidade guarda a coluna.
http://www.inf.ufpr.br/cursos/ci055/ntorres.pas
Agora, neste exercício, além de lidar com o mesmo conceito de matrizes esparsas, os primeiros passos de simulação
computacional serão dados por meio da animação aproximada do movimento da bola branca em uma mesa de sinuca.
Para tanto, vamos precisar de alguns conceitos da Geometria, da Trigonometria e, claro, da Física. Todavia, atenção:
nesta simulação, a noção de tempo não é fundamentalmente o da Física mas, sim, o tempo discreto de um ciclo de
re-cálculo da posição da bola branca. Isso tem implicações sobre o retrato da mesa em cada um dos quadros da simulação,
os quais não são função do tempo Físico.
Adicionalmente, neste mundo ideal, não há colisão entre bolas na primeira versão do programa. Além disso, apenas a
bola branca se movimenta e colide contra as laterais da mesa, seguindo então uma trajetória de um ângulo reflexivo de
acordo com as leis de Física.
Fazer um programa em Pascal para ler, da entrada padrão (i.e., teclado), os dados de dimensões de uma mesa de
sinuca, a quantidade de bolas (incluindo a bola branca) e a localização linha e coluna de cada bola (iniciando com a da
bola branca).
O formato da impressão do programa, sempre na saída padrão (i.e., monitor de vídeo), deverá ser semelhante ao
de uma mesa de sinuca disposta com a Largura na orientação vertical e o Comprimento na horizontal. Incluindo as
bordas, tanto para a leitura como para a impressão, a Largura (em Linhas) e o Comprimento (em Colunas) são limitadas
a 40 unidades da tela (chamadas aqui de pixels). A máxima quantidade de bolas é de 9.
Além desses dados, mais dois são lidos ainda: a norma do vetor velocidade inicial (em pixels por segundo) e o
ângulo de movimento da bola branca (em graus). As medidas de ângulo são de valores reais maiores ou iguais a 0 (zero)
ou menores do que 360. A orientação positiva do ângulo é no sentido anti horário (da Trigonometria) e com seu vértice
de medição centrado na bola.

Veja uma forma aproximada da saída padrão para o exemplo acima, em que a mesa de sinuca tem Largura = 10 pixels,
Comprimento = 40 pixels e a quantidade de 7 bolas.
Após a leitura, o programa deve dar início ao procedimento de simulação. Tente executar uma solução já implementada
para ver um comportamento aproximado do seu programa. Primeiro, baixe os seguintes arquivos para o seu diretório de
trabalho:
http://www.inf.ufpr.br/cursos/ci055/mesasinuca
http://www.inf.ufpr.br/cursos/ci055/dadossinuca.txt
O arquivo mesasinuca não é um programa fonte mas apenas um código executável em Linux. Por isso, mude a
permissão do arquivo mesasinuca para ele ficar executável e, em seguida, basta executar assim:
chmod u+rx mesasinuca
./mesasinuca < dadossinuca.txt
O arquivo dadossinuca.txt tem todos os dados de entrada. Para o exemplo anterior, veja que ele contém:
cat dadossinuca.txt
10 40 7 5 7 3 30 4 31 5 32 6 33 7 31 8 27 2 325
Se o programa mesasinuca for executado sem a entrada do arquivo, o aspecto da saída/entrada padrão será:
./mesasinuca
Entre com a Largura da mesa em pixels (no maximo 40): 10
Entre com o Comprimento da mesa em pixels (no maximo 40): 40
Entre com a quantidade de Bolas da mesa (no maximo 9): 7
Entre com a posicao da Largura da Bola Branca: 5
Entre com a posicao do Comprimento da Bola Branca: 7
Entre com a posicao da Largura da Bola 2: 3
Entre com a posicao do Comprimento da Bola 2: 30
Entre com a posicao da Largura da Bola 3: 4
Entre com a posicao do Comprimento da Bola 3: 31
Entre com a posicao da Largura da Bola 4: 5
Entre com a posicao do Comprimento da Bola 4: 32
Entre com a posicao da Largura da Bola 5: 6
Entre com a posicao do Comprimento da Bola 5: 33
Entre com a posicao da Largura da Bola 6: 7
Entre com a posicao do Comprimento da Bola 6: 31
Entre com a posicao da Largura da Bola 7: 8
Entre com a posicao do Comprimento da Bola 7: 27
Entre com a Velocidade Inicial da Bola Branca em pixels/s (de 0.01 a 3.0): 2
Entre com o Angulo Inicial da Bola Branca em graus (de 0 a 359): 325
Crie outros exemplos de entrada para inspecionar o comportamento aproximado do programa. Nesta primeira versão,
não se preocupe tanto com as leis da Física para dar realismo à queda de velocidade da bola branca ao longo do tempo.
Qualquer tipo de frenagem será boa. Para facilitar a sua solução, use os seguintes recursos:
Os procedimentos de leitura e impressão aproximados do problema das n-Torres;
As funções trigonométricas sin (seno) e cos (coseno), mas cuidado pois os argumentos precisam ser passados em radianos
quando a entrada de dados deste programa deve ser fornecida em graus;
Use a biblioteca do fpc chamada de crt pois com ela você poderá usar as funções clrscr (limpa a tela), delay (que retarda
o processamento em um certo tempo oassado em milisegundos).

Uma possível composição do corpo de comandos do Programa Principal poderia ser o seguinte:
[language=Pascal] program mesa_de_sinuca;
uses crt;
const
maxbolas = 9;
PI = 3.14159265;
type
vetor = array[1..maxbolas] of real;
var
L, C, B: integer;
Vel, Ang: real;
mesa: vetor;


begin
write(’Entre com a Largura da mesa em pixels (no maximo 40): ’);
read(L);
write(’Entre com o Comprimento da mesa em pixels (no maximo 40): ’);
read(C);
write(’Entre com a quantidade de Bolas da mesa (no maximo 9): ’);
read(B);
le_posicao_das_bolas(mesa, L, C, B);
write(’Entre com a Velocidade Inicial da Bola Branca em pixels/s (de 0.01 a 3.0): ’);
read(Vel);
write(’Entre com o Angulo Inicial da Bola Branca em graus (de 0 a 359): ’);
read(Ang);
clrscr;
imprime_mesa(mesa, L, C, B);
simula(mesa, L, C, B, Vel, Ang);
end.
Finalmente, se houver tempo, como sugestão, tente inventar uma forma de colisão entre bolas para que mais de uma delas
esteja em movimento em um dado instante. Talvez seja bom usar a função random para gerar algum tipo de impressão
de dispersão das bolas nas colisões. Tente também alterar a representação da matriz esparsa para receber mais do que 9
bolas na mesa.”

Solução em Pascal
Hidden content
Solução em C
Hidden content