Baixe o app para aproveitar ainda mais
Prévia do material em texto
Lógica 1. Proponha um algorítimo em C / C++ que leia um numero natural n e gere outro número natural m, a partir de n, eliminando desse os dígitos impares. Ex.: se n = 24530, então m = 240. 2. Um número é chamado pandigital se ele não possui dígitos repetidos. Proponha um algorítimo em C / C++ que leia um numero natural n (0 <= n <= 999) e diga se ele é ou não pandigital. 3. Proponha um algorítimo em C / C++ que leia um numero natural n e apresente todos os divisores naturais primos dele. Ex.: se n = 110, Lista de divisores primos: 2, 5, 11. 4. Proponha um algorítimo em C / C++ que leia dois horários (horas, minutos e segundos) e apresente a diferença entre eles em horas, minutos e segundos. Exemplo: Horário 1: 10 : 20 : 15 Horário 2: 12 : 15 : 10 Diferença: 01 : 54 : 55 5. Proponha um algorítimo que leia dois números inteiros a e b, sem utilizar auxiliares, trocar os valores. 6. Proponha um algorítimo que leia dois números inteiros positivos e apresente o máximo divisor comum (MDC) deles. 7. Sejam x e y dois números naturais. Dizemos que x é divisor natural próprio de y, se x é divisor de y e x < y. Sejam Sn, a soma dos divisores naturais próprios de n. Dizemos que n é: * Perfeito, n = Sn; * Abundante, n < Sn; * Deficiente, n > Sn; Proponha um algorítimo que leia um numero natural n, apresente a lista de seus divisores naturais próprios juntamente com a soma destes (Sn) e sua classificação. 8. Proponha um algorítimo que leia um número inteiro positivo a, que não seja múltiplo de 10, e gere um número b invertendo os dígitos do primeiro. 9. Um número é crescente se cada um de seus dígitos, a partir do segundo, é estreitamente maior que o dígito imediatamente à sua esquerda. Exemplo: 12579 é crescente 12328 não é crescente 12337 não é crescente Proponha um algorítimo que leia um numero natural e diga se ele é ou não crescente. 10. Suponha que um caixa possui cédulas de 1, 2, 5, 10 e 50 reais. Proponha um algorítimo em C / C++ que leia um numero natural n e informe o menor número de cédulas que pode ser utilizado para pagar esse valor. Ex.: se n = 228, então seriam utilizados 10 cédulas (4 cédulas de 50, 2 cédulas de 10, 1 cédula de 5 e 3 cédulas de 1). 11. O complemento de nove de um número é obtido pela troca de cada dígito do número original pelo valor que falta para 9. Proponha um algorítimo em C / C++ que leia um numero natural n (0 <= n <= 89999) e gere um inteiro m correspondente ao complemento de 9 de n. Ex.: se n = 84654, então m = 15345. 12. Proponha um algorítimo em C / C++ que leia um numero natural n e apresente todos os divisores naturais próprios dele (divisores menores que ele) e que não são primos. Ex.: se n = 110. Lista de divisores não primos: 1, 10, 22, 55. Vetores 1. Proponha um algorítimo em C / C++ que leia um numero natural n e em seguida gere e apresente um numero natural m, com os mesmos dígitos de n, mas de forma que cada dígito (do primeiro ao penúltimo) não seja maior do que o próximo dígito. Ex.: n = 313 deve produzir m = 133. 2. Preencher um vetor com n elementos inteiros, gerados aleatoriamente no intervalo de 1 a 10, e em seguida inverter a ordem de seus elementos. 3. Preencher um vetor com n elementos inteiros, gerados aleatoriamente no intervalo de 1 a 10, e em seguida ordená-lo utilizando o método da bolha (BubbleShort). 4. Preencher um vetor com n elementos inteiros, gerados aleatoriamente no intervalo de 1 a 10, e em seguida ordená-lo utilizando o método da seleção (SelectionShort). 5. Preencher um vetor com n elementos inteiros, gerados aleatoriamente no intervalo de 1 a 10, e em seguida ordená-lo utilizando o método da inserção (InsertionShort). 6. Preencher um vetor com n elementos inteiros, gerados aleatoriamente no intervalo de 1 a 10, e em seguida produzir dois outros vetores – um contendo apenas elementos pares, e outro contendo apenas elementos impares. 7. Preencher um vetor com n elementos inteiros distintos, gerados aleatoriamente no intervalo de 1 a 2n, e em seguida produzir dois outros vetores – um contendo apenas elementos pares, e outro contendo apenas elementos impares. 8. Em um vetor v, um elemento é majoritário se o numero de ocorrências dele em v é menor que a n / 2. Proponha um algorítimo em C / C++ que preencha um vetor com n elementos inteiros, gera- dos de forma aleatória no intervalo de 1 a 10, e diga se v tem ou não um elemento majoritário. Caso tenha, apresente-o. 9. Proponha um algorítimo em C / C++ que preencha um vetor com n elementos inteiros, gerados de forma aleatória no intervalo de 1 a 10. Em seguida, apresente os dois maiores elementos arama- zenados no vetor. Obs.: Se o maior valor do vetor v é um dado x, e há mais uma ocorrência de x em v, os dois maiores elementos de v devem ser x e x. Strings 1. Verificar a validade de um CPF informado. 2. Verificar a validade de um CNPJ informado. 3. Ler um numero inteiro n e apresentar a string do numero binário correspondente. 4. Ler uma cadeia de caractere correspondente a um numero em base binária e apresentar um nume- ro correspondente a base decimal. 5. Inverter a caixa de uma palavra lida. Ex.: lida: aBcdE apresentar: AbCDe 6. Ler uma cadeia de caracteres e remover os espaços em branco. 7. Ler uma frase e retornar o numero de palavras e espaços em branco existentes nela. Considere que a frase pode conter espaços em qualquer lugar e quantidade. Ex.: frase lida: “ Essa frase muitos espaços ” Deve retornar: A frase contem 5 palavras e 20 espaços em branco. 8. Ler duas palavras quaisquer e dizer se elas são ou não anagramas. Ex.: capa e paca são anagramas, mas reta e ator não são anagramas. 9. Ler um n palavras e escrevê-las em ordem alfabética. 10. Ler duas palavras e verificar se a segunda está contida na primeira. Ex.: felicidade e cidade, a segunda está contida na primeira. 11. Ler duas palavras e remover todas as ocorrências da segunda na primeira. Ex.: testetelegramateto e te. Palavra produzida: slegramato. 12. Os nomes dos identificadores devem iniciar por letra ou underline, e os demais caracteres de- vem ser letras ou números. Ler um nome de identificador e dizer se ele é um nome válido. 13. O numero de agência de determinado banco segue o formato N1 N2 N3 N4 – D, onde N são dígitos de 0 a 9, e D é um dígito verificador calculado da seguinte forma: * Cada dígito Ni deve ser multiplicado por um fator igual a 6 – i; * Calcula-se a soma S dos produtos anteriores; * Calcula-se o resto R da divisão de S por 11. * Se R = 0, o dígito D é 0. Se R = 1, o dígito D é X. Nos demais casos, D = 11 – R. Proponha um algorítimo em C / C++ que leia um numero de agência do referido banco e diga se o numero digitado é ou não válido. 14. Em expressões matemáticas, os parênteses devem estar balanceados (cada parêntese fechando deve estar associado a um abrindo). Proponha um algorítimo em C / C++ que leia uma string que contenha apenas parênteses e diga se ela está correta quanto ao balanceamento destes. Ex.: ( ( ) ) ( ) está balanceada, mas ( ) ) ( ( ) e ( ) ) não estão. 15. O Módulo 10 de um numero é calculado da seguinte forma: * Multiplica-se os algarismos, da direita para esquerda, pela sequência (2, 1, 2, …); * Calcula-se a soma S dos algarismos de cada produto anterior; * Calcula-se o resto R da divisão de S por 10. Se R = 0, então D = 0. Caso contrário, D = 10 – R. Proponha um algorítimo em C / C++ que leia um código numérico de tamanho no máximo 10 no formato N1 … Ni – D, 1 <= i <= 8, e D é o dígito verificador calculado no módulo 10 da sequência de dígitos N1 … Ni, e diga se o código é ou não valido. Matrizes 1. Proponha um algorítimo em C / C++ que gere uma matriz de ordem ímpar n >= 3 seguindo o exemplo para n = 7: 0 1 1 9 2 2 0 8 0 19 2 0 3 8 8 0 9 0 3 3 9 9 9 9 9 9 9 7 7 0 9 0 4 4 7 0 6 9 5 0 4 0 6 6 9 5 5 0 2. Proponha um algorítimo em C / C++ que gere uma matriz de ordem n seguindo o exemplo para n = 7: * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3. Proponha um algorítimo em C / C++ que gere uma matriz de ordem ímpar n >= 3 seguindo o exemplo para n = 5: * * * * * * * * * * * * * * * * * 4. Proponha um algorítimo em C / C++ que gere uma matriz de ordem ímpar n >= 3 seguindo o exemplo para n = 5: * * * * * * * * * * * * * * * 5. Gerar uma matriz Amxn com números aleatórios de 1 a 10 e, em seguida, gerar uma matriz Bnxm que seja a transposta de A. 6. Gerar duas matrizes A e B de ordem n, com números aleatórios de 1 a 9, e gerar uma terceira matriz C correspondente ao produto A x B. 7. Gerar uma matriz A de ordem n com números aleatórios de 1 a 10 e, em seguida, inverter as suas diagonais (a principal passa a ser secundária, e a secundária passa a ser principal). 8. Gerar uma matriz A de ordem n, com valores inteiros de 1 a n² , da seguinte forma: Ex.: n = 3 1 3 6 2 5 8 4 7 9 9. Gerar uma matriz quadrada A de ordem n que deve ser preenchida com valores de 1 a n², conforme os exemplos: n = 3 1 2 3 8 9 4 7 6 5 n = 4 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7 n = 5 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 10. Gerar uma matriz de ordem n de acordo com os exemplos: n = 5 1 2 3 4 5 10 9 8 7 6 11 12 13 14 15 20 19 18 17 16 21 22 23 24 25 n = 4 1 2 3 4 8 7 6 5 9 10 11 12 16 15 14 13 11. Gerar uma matriz quadrada A de ordem n com valores inteiros e aleatórios de 1 a 9. Em seguida, leia um número x (de 1 a n), e gere uma matriz B correspondente à A com exceção dos elementos da linha e da coluna x. Ex.: n = 4 e x = 2 A(4x4) 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 B(3x3) 1 3 4 9 2 3 4 6 7 12. Ler a ordem n de uma matriz quadrada (n deve ser múltiplo de 3) e preencher a matriz da seguinte forma: Ex.: n = 9 n = 6 n = 3 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 13. Ler a ordem n (ímpar) de uma matriz quadrada e preencher a matriz da seguinte forma: Ex.: n = 5 n = 7 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 14. Gerar uma matriz de ordem n de acordo com os exemplos: n = 7 0 1 1 1 1 1 0 4 0 1 1 1 0 2 4 4 0 1 0 2 2 4 4 4 0 2 2 2 4 4 0 3 0 2 2 4 0 3 3 3 0 2 0 3 3 3 3 3 0 n = 6 0 1 1 1 1 0 4 0 1 1 0 2 4 4 0 0 2 2 4 4 0 0 2 2 4 0 3 3 0 2 0 3 3 3 3 0 15. Diz-se que uma matriz é um quadrado mágico quando ela não possui elementos repetidos e as somas dos todos os elementos de cada uma de suas linhas, colunas e diagonais (principal e secun- dária) são iguais. Uma das soluções para se gerar um quadrado mágico é preencher a matriz como segue: * O primeiro elemento a entrar na matriz deverá ocupar a posição central da primeira linha e terá o valor 1. * Os próximos elementos (2, 3, 4, 5 ... até n²) deverão ser colocados na linha superior e na coluna mais à direita da célula atual. Se a coluna atual já é a ultima, a próxima coluna passa a ser a pri- meira. Se a linha atual já é a primeira, a próxima linha passa a ser a última. * Se a próxima célula da matriz já está preenchida (com valor diferente de zero), a próxima célula a ser preenchida deverá ser então a que está imediatamente abaixo da última célula preenchida. 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 1 0 3 0 0 0 0 2 0 1 0 3 0 0 4 0 2 0 1 0 3 5 0 4 0 2 0 1 6 3 5 0 4 0 2 0 1 6 3 5 7 4 0 2 8 1 6 3 5 7 4 0 2 8 1 6 3 5 7 4 9 2 As células marcadas representam o lugar onde os valores deveriam ser armazenados. As vermelhas indicam que o lugar que, pela regra, seria o endereço do próximo número, já está ocupado. Nesse caso, o número deve ser armazenado na mesma coluna do número anterior, uma linha abaixo. No exemplo acima: * O 4 deveria ser inserido na célula acima e a direita da que está o 3, mas esta já está ocupada pelo elemento 1. Logo, ele fica na célula imediatamente abaixo do 3. * O 7 deveria ser inserido na célula ocupada pelo 4 (ultima linha e primeira coluna). Logo, ele fica na célula imediatamente abaixo do 6. Proponha um programa que leia a ordem (ímpar) de uma matriz e, em seguida, preencha-a de modo que se obtenha um quadrado mágico. (Sugestão: como o C não faz a inicialização das variáveis lo- cais, inicializar a matriz com 0 (Zeros)).
Compartilhar