Você está na página 1de 4

Lista de Exercícios 2

Prof: Luidi Simonetti

VETORES
1) Faça um programa em Fortran que leia um conjunto de 100 elementos
numéricos e os armazene em um vetor. Em seguida, o programa deverá
verificar se existem no vetor elementos iguais a um dado valor também
informado pelo usuário e imprimir o índice das posições em que estes são
encontrados.

2) Uma locadora de vídeos tem guardada, em um vetor de 500 posições, a


quantidade de filmes retirados por seus clientes durante o ano passado (i.e.
Clientes[i] = X -> o cliente “i” retirou X filmes no ano passado). Agora esta
locadora está fazendo uma promoção e, para cada 10 filmes retirados no
ano passado, o cliente tem direito a uma locação grátis. Faça um programa
em Fortran que crie um outro vetor contendo a quantidade de locações
gratuitas a que cada cliente tem direito.

3) Faça um programa em Fortran que receba um vetor A de dimensão n e


(a) Inverta os valores de A, troque o primeiro pelo ultimo, o segundo
pelo penúltimo e assim por diante.
(b) Após este procedimento, criar um vetor B de dimensão n com o
fatorial de cada valor de A, respeitando as posições, caso o valor for positivo
ou nulo. Deixe os valores negativos intactos.
(c) Imprima o vetor B.

4) Faça um programa em Fortran onde o usuário informe os valores e você


deverá inserir estes valores de forma ordenada (crescente) num vetor. O
usuário deve ser capaz de inserir até 100 valores do tipo real. Após acabar a
inserção, apresente os valores inseridos que estão ordenados. Obs.: o vetor
tem que estar sempre ordenado, não basta criar o vetor e depois ordenar o
vetor.

MATRIZES
5) Faça uma função em Fortran que recebe como parâmetro uma matriz A
(nxn) de números reais. Essa função deve informar
(a) a soma dos elementos da coluna “n”
(b) a soma dos elementos da diagonal principal da matriz e
(c) a soma dos elementos acima da diagonal principal
(d) o número de células da matriz que têm valor menor que a média
dos valores das células da matriz,

6) Faça um programa em Fortran que receba uma matriz A (nx m) e diga se


esta matriz é simétrica

7) Faça um programa em Fortran que receba uma matriz A (nx m) e divida


cada um dos “n” elementos de cada uma das “m” colunas pelo maior
elemento em módulo daquela linha. Imprima a matriz modificada
8) Faça um programa em Fortran que receba duas matrizes A (nx n) e B
(nxn) e
(a) imprime as matrizes A e B,
(b) imprima a soma das matrizes (A+B),
(c) imprime a diferença das matrizes (A-B)
(d) imprima a multiplicação das matrizes (AxB)
(e) imprima a transposta de A

9) Faça um programa em Fortran que receba uma matriz A (nxn) e calcule e


escreva a média dos elementos da sua área hachurada. A Figura b) fornece
um exemplo de uma matriz A (12x12)

10) Faça um programa em Fortran que receba uma matriz A (nxm) e ordene
os elementos de cada linha da matriz. Imprimir o resultado

Subrotinas e Funções
11) Faça um programa em FORTRAN que receba um número “n” inteiro e
positivo e retorne o valor de S. Use uma função para este procedimento.

S= 1+ 12+13+…+1n

12) Faça um programa em FORTRAN que receba um número inteiro e


positivo e diga se ele é perfeito ou não. Um valor é dito perfeito quando ele
é igual a soma de seus divisores excetuando ele próprio. (Ex: 6 é perfeito, 6
= 1 + 2 + 3, que são seus divisores). O programa deve utilizar uma função
para esta operação que deve retornar um valor “1” caso ele seja perfeito e
“0” caso contrário.
13) Faça um programa que receba um vetor “A” de “n” elementos e depois
realize a sua ordenação ( crescente ). Após esta operação ( subrotina ),
perguntar ao usuário um número ( num ) que ele deseja buscar no vetor
ordenado, realizar a busca de “num” em “A” e responder se o número existe
no vetor. A busca ( função) no vetor deve ser realizada da seguinte forma:

Se o elemento do meio do vetor for igual a “num”, a busca termina com


sucesso. Caso contrário, se o elemento do meio for menor que “num”, então
a busca continua na metade posterior do vetor. E finalmente, se o elemento
do meio for maior que “num”, a busca continua na metade anterior do vetor.
O processo é repetido, sempre analisando porções menores do vetor, até o
número ser encontrado ou ser mostrado que ele não está presente no vetor.

14) Faça um programa em FORTRAN que implemente uma estrutura de


dados pilha. O programa deve conter um menu da seguinte forma:

Operações da pilha
1) Empilhar “X”
2) Desempilhar topo
3) Desempilhar “X”
4) Imprimir pilha
5) Sair

Onde na operação Desempilhar “X”, o método deve buscar o elemento “X”


na pilha, caso o encontre, desempilhar “X” ( o que implica desempilhar
todos acima dele ). Para cada uma das operações da pilha utilize uma
subrotina.

15) Jogo de Tabuleiro

Um jogo divertido consiste de um tabuleiro contendo uma trilha de


quadrados e um conjunto de peças coloridas. No início do jogo cada jogador
recebe uma peça; todas as peças são inicialmente posicionadas
imediatamente antes do primeiro quadrado da trilha. O jogo progride em
turnos. Em cada turno, jogadores jogam um par de dados, e movem suas
peças para frente. As peças são movidas sempre para frente pelo número
de quadrados correspondente à soma dos pontos obtidos nos dados. A
maioria dos quadrados da trilha é normal, mais alguns são armadilhas. Se a
peça de um jogador, ao final de um movimento, cai em uma armadilha, ele
perde a vez de jogar no próximo turno. Ou seja, ele não joga os dados e sua
peça fica um turno sem ser movimentada. Há sempre três armadilhas na
trilha do tabuleiro conforme mostra a Figura 1. A ordem em que os
jogadores jogam os dados, nos turnos, é sempre a mesma (jogador 1,
depois jogador 2 etc.), a menos que algum jogador tenha caído em uma
armadilha.
Figura 1: Exemplo de um tabuleiro do jogo.

O vencedor do jogo é o jogador cuja peça alcança primeiro o final da trilha.


O final é após o último quadrado da trilha. Considere, por exemplo, o
tabuleiro mostrado na Figura 1, cujos quadrados são numerados de 1 a 48.
No início do jogo, as peças são posicionadas no local marcado "Início" na
Figura, ou seja, antes do quadrado número 1. Portanto, se um jogador
obtém um resultado 7 na soma dos valores dos dados, sua peça é
posicionada no quadrado número 7 ao final do primeiro turno do jogo. Além
do mais, se a peça de um jogador está posicionada no número 41, o jogador
necessita de um resultado pelo menos igual a 8 nos dados para alcançar o
final da trilha e vencer o jogo. Note que não há empates no jogo.

Tarefa

Considere que o número de jogadores é fixo e igual a 3. São fornecidos o


número de quadrados da trilha, as posições das três armadilhas, o número
de vezes que os dados foram jogados e uma lista de resultados dos dados.
Você deve escrever um programa em FORTRAN que determine o vencedor
do jogo.

Entrada

Seu programa deve processar um caso de teste (arquivo teste.txt ou se


preferir pode substituir o arquivo pela entrada do teclado), isto é um jogo. A
primeira linha de um conjunto de teste contém um inteiro Q representando
o número de quadrados na trilha (3 <= Q <= 10000). A segunda linha de
um conjunto de teste diz onde estão as três armadilhas, representadas por
três números distintos (1 <= T1; T2; T3 <= Q). A seguir é fornecido o
conjunto de resultados dos dados. Cada resultado é descrito em uma linha
separada, cada linha contendo inteiros D1 e D2 (1 <= D1;D2 <=· 6). O
número de resultados fornecidos para os dados em um conjunto de testes
será sempre um número maior ou igual ao necessário para que um jogador
vença o jogo.

Exemplo de Entrada
7
457
12
22
21
11
12
11
11
Para informar o resultado o jogador vencendor deve ser identificado por um
inteiro de 1 até 3.
Exemplo de Saída
Jogador 3