Listas

  1. Escreva uma função que lê uma matriz $m \times n$ do teclado e guarda-a como uma lista de listas.

  2. Escreva uma função que receba duas listas de mesmo tamanho e devolva 0 se são iguais, -1 se o primeiro vier antes lexicograficamente, e +1 caso contrário.

  3. Faça um algoritmo que leia uma lista N. A seguir, encontre o menor elemento de N e a sua posição dentro da lista, mostrando: “O menor elemento de N é”, M, “e sua posição dentro da lista é:”, P.

  4. Escreva um algoritmo que leia duas listas de 10 posições e faça a multiplicação dos elementos de mesmo índice, colocando o resultado em um terceira listas. Mostre a lista resultante.

  5. Faça um algoritmo que leia uma lista S e uma variável A. A seguir, mostre o produto da variável A pela lista.

  6. Faça um algoritmo que leia uma lista K. Troque a seguir, todos os elementos de ordem ímpar da lista com os elementos de ordem par imediatamente posteriores.

  7. Escreva um algoritmo que leia e mostre uma lista de 20 números. A seguir, conte quantos valores pares existem na lista.

  8. Escrever um algoritmo que lê 2 listas X e Y de mesmo tamanho. Crie, a seguir, um lista Z que seja

    a) a diferença entre X e Y;

    b) a soma entre X e Y;

    c) o produto entre X e Y;

    Escreva o lista Z a cada cálculo.

  9. Faça um algoritmo que leia uma lista G de 10 elementos caractere que representa o gabarito de uma prova. A seguir, para cada um dos 20 alunos da turma, leia a lista de respostas (R) do aluno e conte o número de acertos. Mostre o nº de acertos do aluno e uma mensagem APROVADO, se a nota for maior ou igual a 6; e mostre uma mensagem de REPROVADO, caso contrário.

  10. Codifique um programa que faça um deslocamento à esquerda de tamanho m vezes (m lido via teclado) em uma lista de inteiros de tamanho n (n lido via teclado). Por exemplo a seguinte figura apresenta uma lista de tamanho 5, no qual se realiza um deslocamento de tamanho 3.

  11. Dada uma lista de inteiros de tamanho n, imprima a maior sequencia (com maior quantidade de elementos) estritamente crescente. Por exemplo, na lista: 10 20 3 4 5 6 7 50 10 100 200 300 2 3.

    A maior sequencia é: 3 4 5 6 7 50 , pois possui 6 elementos.

  12. Crie uma função que recebe uma lista e seu tamanho por parâmetro além de dois números inteiros $i$ e $j$ que são índices da lista (ou seja $0 \le i,j \le n$). A função deve então trocar os elementos das posições $i$ e $j$ entre si.

  13. Faça um programa que lê uma lista de 30 inteiros e guarda a lista na ordem inversa que foi lido em um outra lista de saída.

  14. Faça uma função que recebe uma lista de inteiros como parâmetro e, ao final da execução da função, a lista esteja invertida. Utilize a seguinte idéia: troque os elementos da posição 0 e 29 entre si, depois da posição 1 e 28 etc. Pense bem no critério de parada.

  15. Escreva uma função que recebe uma lista de inteiros como parâmetro e devolve a soma dos números pares desta lista.

  16. Faça uma função que recebe uma lista de números reais por parâmetro e devolve o desvio padrão dos números do vetor usando a seguinte fórmula:

    $$ \sqrt{\frac{1}{n-1} (\sum_{i=1}^{n} x_i^2 - \frac{1}{n}(\sum_{i=1}^n x_i)^2 )} $$

    onde $n$ é o número de elementos.

  17. Modifique cada um dos seguintes algoritmos vistos em sala, para que estes ordenem um vetor em ordem decrescente de valor:

    • SelectionSort

    • InsertionSort

    • BubbleSort

  18. Use cada um dos algoritmos abaixo e mostre passo-a-passo, como visto em aula, os passos para ordenar a lista $(31,41,59,26,41,58,15,19)$:

    • SelectionSort

    • InsertionSort

    • BubbleSort

  19. Crie uma função para determinar o número total de inversões em uma lista vet. Uma inversão existe quando um elemento em uma posição $i < j$ é tal que $vet[i] > vet[j]$. Por exemplo, na lista $(10,4,6,1,2)$ existem 4 inversões para o número 10, 2 inversões para o número 4, 2 inversões para o número 6, nenhuma inversão para 1, e nenhuma para o 2. Portanto o total de inversões é 8. Modifique o algoritmo BubbleSort para computar o número de inversões em uma lista.

  20. Escreva um programa que lê duas strings do teclado com até 80 caracteres e informa se elas são iguais.

  21. Escreva uma função que lê uma palavra do teclado e informa se ela é palíndroma. (Exemplos de palíndromos: ARARA, RADAR, REVIVER)

  22. O histograma de um conjunto de dados é um gráfico da frequência com que cada valor aparece. Escreva um programa que leia uma lista de tamanho informado pelo usuário e com valores inteiros entre 1 e 9 e imprima o histograma na mesma forma que o exemplo: para uma lista de tamanho 20 com os valores 1, 1, 1, 1, 2, 2, 2, 3, 3, 4, 6, 7, 8, 8, 8, 9, 9, 9, 9, 9 deverá imprimir:

    +---------+
    |        *|
    |*       *|
    |**     **|
    |***    **|
    |**** ****|
    +---------+
     123456789
    
  23. Faça uma função que devolva a soma de uma sublista $A[i..j]$ de inteiros, isso é, retorne $A[i] + ... + A[j]$.

  24. Faça uma função que receba uma lista $A$ e devolva uma lista $A'$ tal que $A'[i] = A[0] + A[1] + ... + A[i]$.

  25. Faça uma função que receba uma lista $A$ em devolva uma lista $A'$ tal que $A'[i] = A[i - 10] + A[i - 9] + ... + A[i]$.

  26. Refaça as questões anteriores, mas agora a função deverá transformar a lista de entrada. Você não deve criar uma lista auxiliar e a lista passado por parâmetro de entrada é o mesmo para armazenar a saída.

  27. Uma lista $x$ de dimensão $n$ $(3 \le n \le 100)$ é dada. Queremos transformar a lista de forma a obter somas parciais de sublistas de tamanho $3$, tal que cada elemento contenha a soma dos três elementos imediatamente anteriores. Isso é, se $y$ é obtido após a transformação de $x$, então teremos

    $$ y[i] = x[i] + x[i - 1] + x[i - 2], $$

    quando $i \ge 2$. Quando $i < 2$, damos a volta na lista, isso é, definimos

    $$ y[0] = x[0] + x[n-1] + x[n-2] \qquad \mbox{e} \qquad y[1] = x[1] + x[0] + x[n-1]. $$

    Exemplo de entrada e saída:

    $$ x = [0, -2, 3, 2, 1, 2, 3, 1, 1, 1 ] \qquad \Longrightarrow\qquad x = [2, -1, 1, 3, 6, 5, 6, 6, 5, 3 ] $$

    a) Escreva um algoritmo em português ou pseudocódigo para o problema. Você não deve utilizar outro vetor além da lista de entrada $x$.

    b) Implemente o algoritmo anterior em Python.