4
Introdução à Lógica e Programação
UFABC
5
Introdução à Lógica e Programação
UFABC
43
Introdução à Lógica e Programação
UFABC
12
Introdução à Lógica e Programação
UFABC
23
Introdução à Lógica e Programação
UFABC
19
Introdução à Lógica e Programação
UFABC
24
Introdução à Lógica e Programação
UFABC
38
Introdução à Lógica e Programação
UFABC
5
Introdução à Lógica e Programação
UFABC
74
Introdução à Lógica e Programação
UFABC
Texto de pré-visualização
L55 Ordenação por seleção BÔNUSOPCIONAL Data de entrega sábado 23 Jul 2022 2359 Número máximo de arquivos 1 Tipo de trabalho Trabalho individual Desenvolva um programa com as seguintes funções a Uma função que recebe como argumento um vetor v de inteiros e um número inteiro i representando um índice da lista O método deve retornar a posição do menor elemento da lista a partir do índice dado Exemplo Se v2 30 22 9 14 e o índice dado for i2 então teremos que o menor elemento a partir do índice 2 está na posição 3 do vetor b Uma função que recebe como argumento um vetor v e dois índices inteiros i e j A função deve alterar a posição dos valores no vetor Exemplo Se v2 30 22 9 14 e os índices são i1 e j3 teremos que a lista será alterada para v2 9 22 30 14 após a chamada desta função Use as funções acima para ordenar a lista dica encontre o menor elemento da lista e troque com o elemento da primeira posição encontre o segundo menor elemento e troque pelo elemento da segunda posição e assim por diante Entrada A entrada para o seu programa será uma lista de 10 inteiros representando os elementos do vetor que devem ser ordenados Saída A saída deve conter os índices de todas as trocas feitas pela função do item b e ao final deve exibir o vetor ordenado Exemplos Entrada Saída 10 9 8 7 6 5 4 3 2 1 troca 9 0 troca 8 1 troca 7 2 troca 6 3 troca 5 4 1 2 3 4 5 6 7 8 9 10 921 1 2 23 34 213 345 21 2 11 troca 1 0 troca 2 1 troca 8 2 troca 9 3 troca 7 4 troca 9 5 troca 7 6 troca 9 7 troca 9 8 1 2 2 11 21 23 34 213 345 921 L54 Dobra vetor Data de entrega sábado 23 Jul 2022 2359 Número máximo de arquivos 1 Tipo de trabalho Trabalho individual Faça um programa que faz o seguinte a lê um número inteiro par N fornecido pelo usuário O programa deve continuar solicitando o número N enquanto o valor entrado não for par b preenche uma lista de tamanho N com números inteiros fornecidos pelo usuário c faz a dobra ao meio do vetor Ou seja você irá criar um vetor com a metade do número de elementos do vetor original cujas entradas são dadas pela soma dos valores que se encontram quando o vetor é dobrado ao meio Como no exemplo abaixo Se o vetor original é dado por v 4 5 8 9 3 7 6 1 o vetor resultante da dobra ao meio será v 5 11 15 12 em que 541 1156 1587 e 1293 Exemplos Entrada Saída 3 3 3 1 1 4 1 2 3 4 5 5 10 1 1 1 2 2 9 9 9 10 11 10 10 11 4 L51 Vizinhos iguais Data de entrega sábado 23 Jul 2022 2359 Número máximo de arquivos 1 Tipo de trabalho Trabalho individual Seu programa deve imprimir as posições de todos os vizinhos repetidos em um vetor veja os exemplos de entrada e saída Entrada Contém um número inteiro N positivo seguido de N valores inteiros Saída Índice do vetor com vizinhos contendo o mesmo valor Exemplos Entrada Saída 8 1 5 7 8 8 9 9 0 Pos 3 e 4 Pos 5 e 6 3 9 9 9 Pos 0 e 1 Pos 1 e 2 10 1 2 3 4 5 6 7 8 9 10 L52 Números repetidos Data de entrega sábado 23 Jul 2022 2359 Número máximo de arquivos 1 Tipo de trabalho Trabalho individual Escreva um programa que receba uma sequência de números e que liste todos os pares de posições da sequência nos quais um mesmo número aparece Por exemplo se a sequência fornecida for 5 8 10 5 9 2 8 5 1 então temos que o número 5 aparece nas posições 1 4 e 8 e que o número 8 aparece nas posições 2 e 7 Assim temos os seguintes pares de posições nos quais um número aparece 1 4 1 8 4 8 e 2 7 Entrada A primeira linha da entrada consiste de um inteiro positivo N N 1 indicando o total de números da sequência Cada uma das próximas N linhas consiste de um único número inteiro Saída Para cada par de posições da sequência contendo o mesmo número o seu programa deve imprimir uma linha no formato E N1 N2 em que E deve ser substituído pelo número repetido na sequência e N1 e N2 onde N1 N2 devem ser substituídos pela posição de cada ocorrência do número E Caso a sequência não apresente nenhum número repetido o seu programa deve imprimir a mensagem NAO HA NUMEROS REPETIDOS Obs A ordem de apresentação dos pares de posições deve manter a ordem da lista de entrada Exemplos Entrada Saída 9 5 8 10 5 9 2 8 5 1 5 1 4 5 1 8 8 2 7 10 1 2 3 1 2 3 5 6 9 9 1 1 4 2 2 5 3 3 6 9 9 10 5 1 1 2 L53 Semiparticionado Data de entrega sábado 23 Jul 2022 2359 Número máximo de arquivos 1 Tipo de trabalho Trabalho individual Dado um vetor V de n elementos suponha que n é ímpar e positivo o semiparticionado de V é obtido pelas seguintes operações se o primeiro elemento de V for maior do que o último elemento V trocar a posição desses dois elementos se o segundo elemento de V for maior do que penúltimo elemento V trocar a posição desses dois elementos se o terceiro elemento de V for maior do que o antepenúltimo elemento de V trocar a posição desses dois elementos assim por diante até que as posições dos elementos vizinhos do elemento mediano do meio sejam trocadas caso necessário Aqui uma representação esquemática das possíveis operações de troca que são realizadas para se obter o semiparticionado de um vetor Se V contém apenas um elemento o semiparticionado de V é o próprio V Faça um programa que leia um número inteiro n estritamente positivo ímpar não precisa fazer validação isto é suponha que n é fornecido corretamente cria um vetor V e lê n valores inteiros do usuário e armazenaos em V transforme V no semiparticionado de V imprima o semiparticionado de V Entrada A entrada é um número inteiro n estritamente positivo ímpar seguidos dos elementos do vetor V Saída Seu programa deve imprimir na tela o particionado do vetor V Exemplos Entrada Saída 1 5 5 5 5 4 3 2 1 1 2 3 4 5 3 1 1 2 3
4
Introdução à Lógica e Programação
UFABC
5
Introdução à Lógica e Programação
UFABC
43
Introdução à Lógica e Programação
UFABC
12
Introdução à Lógica e Programação
UFABC
23
Introdução à Lógica e Programação
UFABC
19
Introdução à Lógica e Programação
UFABC
24
Introdução à Lógica e Programação
UFABC
38
Introdução à Lógica e Programação
UFABC
5
Introdução à Lógica e Programação
UFABC
74
Introdução à Lógica e Programação
UFABC
Texto de pré-visualização
L55 Ordenação por seleção BÔNUSOPCIONAL Data de entrega sábado 23 Jul 2022 2359 Número máximo de arquivos 1 Tipo de trabalho Trabalho individual Desenvolva um programa com as seguintes funções a Uma função que recebe como argumento um vetor v de inteiros e um número inteiro i representando um índice da lista O método deve retornar a posição do menor elemento da lista a partir do índice dado Exemplo Se v2 30 22 9 14 e o índice dado for i2 então teremos que o menor elemento a partir do índice 2 está na posição 3 do vetor b Uma função que recebe como argumento um vetor v e dois índices inteiros i e j A função deve alterar a posição dos valores no vetor Exemplo Se v2 30 22 9 14 e os índices são i1 e j3 teremos que a lista será alterada para v2 9 22 30 14 após a chamada desta função Use as funções acima para ordenar a lista dica encontre o menor elemento da lista e troque com o elemento da primeira posição encontre o segundo menor elemento e troque pelo elemento da segunda posição e assim por diante Entrada A entrada para o seu programa será uma lista de 10 inteiros representando os elementos do vetor que devem ser ordenados Saída A saída deve conter os índices de todas as trocas feitas pela função do item b e ao final deve exibir o vetor ordenado Exemplos Entrada Saída 10 9 8 7 6 5 4 3 2 1 troca 9 0 troca 8 1 troca 7 2 troca 6 3 troca 5 4 1 2 3 4 5 6 7 8 9 10 921 1 2 23 34 213 345 21 2 11 troca 1 0 troca 2 1 troca 8 2 troca 9 3 troca 7 4 troca 9 5 troca 7 6 troca 9 7 troca 9 8 1 2 2 11 21 23 34 213 345 921 L54 Dobra vetor Data de entrega sábado 23 Jul 2022 2359 Número máximo de arquivos 1 Tipo de trabalho Trabalho individual Faça um programa que faz o seguinte a lê um número inteiro par N fornecido pelo usuário O programa deve continuar solicitando o número N enquanto o valor entrado não for par b preenche uma lista de tamanho N com números inteiros fornecidos pelo usuário c faz a dobra ao meio do vetor Ou seja você irá criar um vetor com a metade do número de elementos do vetor original cujas entradas são dadas pela soma dos valores que se encontram quando o vetor é dobrado ao meio Como no exemplo abaixo Se o vetor original é dado por v 4 5 8 9 3 7 6 1 o vetor resultante da dobra ao meio será v 5 11 15 12 em que 541 1156 1587 e 1293 Exemplos Entrada Saída 3 3 3 1 1 4 1 2 3 4 5 5 10 1 1 1 2 2 9 9 9 10 11 10 10 11 4 L51 Vizinhos iguais Data de entrega sábado 23 Jul 2022 2359 Número máximo de arquivos 1 Tipo de trabalho Trabalho individual Seu programa deve imprimir as posições de todos os vizinhos repetidos em um vetor veja os exemplos de entrada e saída Entrada Contém um número inteiro N positivo seguido de N valores inteiros Saída Índice do vetor com vizinhos contendo o mesmo valor Exemplos Entrada Saída 8 1 5 7 8 8 9 9 0 Pos 3 e 4 Pos 5 e 6 3 9 9 9 Pos 0 e 1 Pos 1 e 2 10 1 2 3 4 5 6 7 8 9 10 L52 Números repetidos Data de entrega sábado 23 Jul 2022 2359 Número máximo de arquivos 1 Tipo de trabalho Trabalho individual Escreva um programa que receba uma sequência de números e que liste todos os pares de posições da sequência nos quais um mesmo número aparece Por exemplo se a sequência fornecida for 5 8 10 5 9 2 8 5 1 então temos que o número 5 aparece nas posições 1 4 e 8 e que o número 8 aparece nas posições 2 e 7 Assim temos os seguintes pares de posições nos quais um número aparece 1 4 1 8 4 8 e 2 7 Entrada A primeira linha da entrada consiste de um inteiro positivo N N 1 indicando o total de números da sequência Cada uma das próximas N linhas consiste de um único número inteiro Saída Para cada par de posições da sequência contendo o mesmo número o seu programa deve imprimir uma linha no formato E N1 N2 em que E deve ser substituído pelo número repetido na sequência e N1 e N2 onde N1 N2 devem ser substituídos pela posição de cada ocorrência do número E Caso a sequência não apresente nenhum número repetido o seu programa deve imprimir a mensagem NAO HA NUMEROS REPETIDOS Obs A ordem de apresentação dos pares de posições deve manter a ordem da lista de entrada Exemplos Entrada Saída 9 5 8 10 5 9 2 8 5 1 5 1 4 5 1 8 8 2 7 10 1 2 3 1 2 3 5 6 9 9 1 1 4 2 2 5 3 3 6 9 9 10 5 1 1 2 L53 Semiparticionado Data de entrega sábado 23 Jul 2022 2359 Número máximo de arquivos 1 Tipo de trabalho Trabalho individual Dado um vetor V de n elementos suponha que n é ímpar e positivo o semiparticionado de V é obtido pelas seguintes operações se o primeiro elemento de V for maior do que o último elemento V trocar a posição desses dois elementos se o segundo elemento de V for maior do que penúltimo elemento V trocar a posição desses dois elementos se o terceiro elemento de V for maior do que o antepenúltimo elemento de V trocar a posição desses dois elementos assim por diante até que as posições dos elementos vizinhos do elemento mediano do meio sejam trocadas caso necessário Aqui uma representação esquemática das possíveis operações de troca que são realizadas para se obter o semiparticionado de um vetor Se V contém apenas um elemento o semiparticionado de V é o próprio V Faça um programa que leia um número inteiro n estritamente positivo ímpar não precisa fazer validação isto é suponha que n é fornecido corretamente cria um vetor V e lê n valores inteiros do usuário e armazenaos em V transforme V no semiparticionado de V imprima o semiparticionado de V Entrada A entrada é um número inteiro n estritamente positivo ímpar seguidos dos elementos do vetor V Saída Seu programa deve imprimir na tela o particionado do vetor V Exemplos Entrada Saída 1 5 5 5 5 4 3 2 1 1 2 3 4 5 3 1 1 2 3