Baixe o projeto da lista, que está preparado para funcionar tanto com o SBT quanto
com o eclipse, e implemente as funções correspondentes a cada questão do exercício. Depois envie
apenas o arquivo package.scala
com os fontes da sua implementação, usando o formulário no final
dessa página.
O triângulo de Pascal é uma representação gráfica dos coeficientes dos binômios (x+y)^n
.
Cada linha do triângulo lista os coeficientes do seu respectivo binônio (contado a partir de 0).
Os números nos lados do triângulo são sempre 1, e cada número do interior do triângulo é a soma dos dois números acima dele. Implemente uma função em Scala que calcula coeficientes do triângulo de Pascal, dada sua posição no triângulo, contada a partir de 0:
def pascal(col: Int, lin: Int): Int = ???
Escreva uma função que verifica se os parênteses presentes em uma lista de caracteres estão balanceados. Note que
não basta contar o número de (
e )
, pois listas como List(')','(')
e List('(',')',')','(')
não são
balanceadas.
def balanceado(l: List[Char]): Boolean = ???
Para facilitar o teste use a função toList
de Scala, que converte uma string em uma lista de caracteres:
> balanceado("so (um (teste) (da funcao) ) ".toList)
res0: Boolean = true
Use recursão final na sua resposta.
A ideia do algoritmo de ordenação quicksort é bem simples: escolhemos um elemento pivô de uma lista (o primeiro elemento, por exemplo), e particionamos a lista usando esse pivô em duas listas. A primeira lista tem todos os elementos menores ou iguais ao pivô, e a segunda lista todos os elementos maiores que o pivô. Então basta ordenar essas duas listas e concatenar o resultado.
Escreva a função particao
que particiona uma lista dado um elemento pivô:
def particao(l: List[Int], pivo: Int): (List[Int], List[Int]) = ???
Escreva a função quicksort
para ordenar uma lista, usando a função de partição que você escreveu:
def quicksort(l: List[Int]): List[Int] = ???
Podemos representar as notas de um aluno da UFRJ em dado semestre como uma lista de pares (nota,creditos):
> val sem1 = List((9.5,3),(7.3,4),(5.0,3),(4.0,4))
sem1: List[(Double, Int)] = List((9.5,3), (7.3,4), (5.0,3), (4.0,4))
O coeficiente de rendimento (CR) de um aluno em determinado semestre é a média ponderada de suas notas, com o peso de cada uma sendo o número de créditos da matéria.
Escreva a função crSemestre
que recebe as notas do aluno no semestre e retorna seu
CR para aquele semestre e o número de créditos que o aluno cursou:
def crSemestre(notas: List[(Double, Int)]): (Double, Int) = ???
As notas do aluno durante o curso podem ser representadas como uma lista de listas de notas para cada semestre. O CR acumulado de um aluno em determinado momento do curso é uma média ponderada dos CRs de cada semestre, com o peso sendo o número de créditos cursado naquele semestre.
Escreva a função crsAcumulados
que recebe a lista de listas de notas para cada semestre e
retorna uma lista com o CR acumulado para o aluno após cada semestre (o CR acumulado
após o primero semestre é o CR do primeiro semestre), assim como o total de créditos cursados
até aquele momento.
def crsAcumulados(semestres: List[List[(Double, Int)]]): (List[Double], Int) = ???
Use o formulário abaixo para enviar a sua lista. Lembre de enviar apenas o arquivo package.scala
que
você modificou. O prazo para envio é sexta-feira, dia 26/04/2013.
Última Atualização: 2016-05-18 10:58