Baixe o app para aproveitar ainda mais
Prévia do material em texto
SISTEMA DE INFORMAÇÃO -UFGD LISTAS ALGORITMOS E ESTRUTURA DE DADOS I ALUNA: MARLENE SEDANO LISTA – VETORES EX 2- Dado um conjunto A de valores numéricos (n < 200), escrever um algoritmo que imprima seus valores em ordem crescente. programa { funcao inicio() { const inteiro TAM = 4 inteiro vet[TAM], i, j, k, aux = 0 para(i = 0; i < TAM; i++){ leia(vet[i]) } para( i = 0; i < TAM; i++){ para( j = 0 ; j < TAM ; j++){ se(vet[i] < vet[j]){ aux = vet[i] vet[i] = vet[j] vet[j] = aux } } } para(i = 0; i < TAM; i++){ escreva(" ",vet[i]) } } } EXER 4 Faça um algoritmo que leia dois vetores A e B de n inteiros cada, construa e imprima um terceiro vetor C, onde cada elemento de C é formado pela soma dos elementos correspondentes de A e B. programa { funcao inicio() { const inteiro TAM = 3 inteiro a[TAM], b[TAM], c [TAM] inteiro i, j escreva("\nInforme o primeiro vetor a de tamanho n.\n") para(i=0; i < TAM; i++){ leia(a[i]) } escreva("\nInforme o segundo vetor a de tamanho n.\n") para(j=0; j<TAM; j++){ leia(b[j]) } para(i=0; i< TAM; i++){ c[i] = a[i] + b[i] } para(i=0; i < TAM; i++){ escreva("\n", c[i]) } } } EXER 5- Faça um algoritmo que leia um vetor A de 10 números reais, construa e imprima um outro vetor B formado da seguinte maneira: Os elementos de índice par são os correspondentes de A dividido por 2. Os elementos de índice ímpar são os correspondentes de A multiplicados por 3. programa { funcao inicio() { const inteiro TAM = 5 // para adicionar um tamanho a um vetor tem que ser inteiro real a[TAM], b[TAM] inteiro i escreva("Informe 10 numeros reais:\n") para(i = 0; i < TAM; i++){ leia(a[i]) } para(i=0; i < TAM; i++){ se( i % 2 ==0) b[i] = a[i] / 2 senao b[i] = a[i] * 3 } para(i=0; i < TAM; i++){ escreva("\n",b[i]) } } } EXER 6 Uma loja trabalha com 10 produtos diferentes identificados pelos números inteiros de 0 a 9. O dono da loja anota a quantidade de cada produto vendida durante o mês. Ele tem uma tabela que indica para cada produto o preço de venda. Faça um algoritmo para calcular o faturamento mensal da loja, isto é: Faturamento = Σ(quantidade * preço) A tabela de preços e a quantidade vendida de cada produto são fornecidas pelo usuário. programa { funcao inicio() { const inteiro TAM = 3 real p[TAM], fatu = 0 inteiro q[TAM] inteiro i, j escreva("Insira os preços dos produtos:\n") para(i = 0; i < TAM; i++){ leia(p[i]) } escreva("\nInsira a quantidade dos produtos:\n") para(j = 0 ; j < TAM; j++){ leia(q[j]) } para(i=0; i < TAM; i++){ fatu += (q[i] * p[i]) } escreva("\nO faturamento eh: ", fatu) } } EXER7 Faça um algoritmo que leia dois vetores, A e B, contendo cada um n elementos inteiros, intercale os elementos desses dois vetores formando um novo vetor C; imprima o vetor obtido. Exemplo: Entrada: A = {5, 7, 10, 1} B = {9, 8, 5, 3} Saída: C = {5, 9, 7, 8, 10, 5, 1, 3} programa { funcao inicio() { const inteiro TAM = 2 const inteiro TAM2 = 4 inteiro a[TAM], b[TAM], c[TAM2] inteiro i, j para(i =0; i < TAM; i++){ leia(a[i]) } para(j= 0; j < TAM; j++){ leia(b[j]) } j=0 para(i =0; i < TAM2; i++){ se(i % 2 ==0){ c[i] = a[j] } senao{ c[i] = b[j] j++ //variavel que indica o indice, que só é incrementado depois que pega o valor de b. } } para(i =0; i < TAM2; i++){ escreva("{",c[i],"}",",") } } } LISTA DE EXERCICIO MATRIZES EXER 1 Faça um algoritmo que leia uma matriz bidimensional A 4x4 de reais, divida cada elemento de uma linha da matriz pelo elemento da diagonal principal desta linha. Imprima a matriz modificada.*/ programa { funcao inicio() { inteiro l, c, div inteiro mat[2][2], matA[2][2] para (l = 0; l < 2; l++){ para(c = 0; c < 2; c++){ leia(mat[l][c]) //vai apenas ler } } para (l = 0; l < 2; l++){ para(c = 0; c < 2; c++){ matA[l][c] = mat[l][c] / mat[l][l] } } para (l = 0; l < 2; l++){ para(c = 0; c < 2; c++){ escreva(matA[l][c]," ") } } } } EXER2 Faça um algoritmo que leia uma matriz bidimensional M 4x4 de inteiros, calcule e imprima a soma dos elementos situados abaixo da diagonal principal da matriz, incluindo os elementos da própria diagonal principal programa { funcao inicio() { const inteiro TAM = 4 inteiro l, c, soma = 0 inteiro mat[TAM][TAM] para(l = 0; l < TAM; l++){ para( c = 0 ; c < TAM; c++){ leia(mat[l][c]) } } para(l = 0; l < TAM; l++){ para( c = 0 ; c <=l; c++){ soma = soma + mat[l][c] } } escreva("\nA soma total eh: ",soma) } } EXER 3 Se A e B são duas matrizes de dimensões m x n, sua soma é definida como segue: Se A ij e B ij são os elementos da i-ésima linha e j-ésima coluna de A e B, respectivamente, então A ij + B ij é o elemento da i-ésima linha e j-ésima coluna da sua soma, que também é m x n. Faça um algoritmo para ler duas matrizes de dimensões m x n, imprimi-las, calcular e imprimir a matriz resultante de sua soma. programa { funcao inicio() { const inteiro TAM = 3 const inteiro TAM2 = 2 inteiro l, c inteiro a[TAM][TAM2], b[TAM][TAM2], result[TAM][TAM2] escreva(" Informe a primeira matrix:\n") para(l=0; l < TAM; l++){ para(c=0; c < TAM2; c++){ leia(a[l][c]) } } escreva(" Informe a segunda matrix:\n") para(l=0; l < TAM; l++){ para(c=0; c < TAM2; c++){ leia(b[l][c]) } } escreva("\nMatriz A:\n") para(l=0; l < TAM; l++){ // Imprimir a matrix a para(c=0; c < TAM2; c++){ escreva(a[l][c]," ") } escreva("\n") } escreva("\nMatriz B:\n") para(l=0; l < TAM; l++){ //imprimir a mtriz b para(c=0; c < TAM2; c++){ escreva(b[l][c]," ") } escreva("\n") } para(l=0; l < TAM; l++){ //somar a matriz e atribuir a uma soma para(c=0; c < TAM2; c++){ result[l][c] = a[l][c] + b[l][c] } } escreva("O resultado da matrix eh:\n") para(l=0; l < TAM; l++){ //imprimir o resultado da matrix result para(c=0; c < TAM2; c++){ escreva(result[l][c]," ") } escreva("\n") } } } EXER4 Dada uma matriz Mat 4x5 , faça um algoritmo para somar os elementos de cada linha gerando um vetor SomaLinha. Em seguida, somar os elementos do vetor SomaLinha e armazenar na variável Total, que deve ser impressa junto com o vetor. programa { funcao inicio() { const inteiro TAM = 3 const inteiro TAM1 = 2 inteiro l, c, SomaLinha[TAM], total inteiro mat[TAM][TAM1] escreva("Informe uma matrix MxN:\n") para (l=0; l < TAM; l++){ para(c=0; c< TAM1; c++){leia(mat[l][c]) } } para (l=0; l < TAM; l++){ SomaLinha[l] = 0 // é necessario inicializar para não pegar valor aleatorio para(c=0; c< TAM1; c++){ SomaLinha[l] += mat[l][c] } } total = 0 para (l=0; l < TAM; l++){ total += SomaLinha[l] } escreva("\n") escreva("o total eh: ",total) escreva("\n") para(l=0; l <TAM; l++){ escreva("\nO valor do vetor soma linha eh:", SomaLinha[l]) } } } EXER 5 Faça um algoritmo que leia os elementos de uma matriz A nxn e imprima os elementos da diagonal secundária e a soma desses elementos. programa { funcao inicio() { const inteiro TAM =2 inteiro l, c, mat[TAM][TAM], soma = 0 escreva("Informe os elementos da matriz:\n") para(l=0; l < TAM; l++){ para(c=0; c < TAM; c++){ leia(mat[l][c]) } } escreva("\nDiagonal secundaria: ") para(l =0 ; l < TAM; l++){ // linha para(c= 0; c < TAM; c++){ //coluna se(l == (TAM-1)-c){ // se l == tam -1 ( o tamanho total da matrix - 1) (- menos) a quantidade da coluna no indice soma += mat[l][c] // soma vai receber soma mais o valor dos elementos escreva(mat[l][c]," ") } } } escreva("\n\nSoma: ",soma) } } EXER7 Faça um algoritmo que leia uma matriz A mxn e determine a matriz transposta de A. O algoritmo deve imprimir a matriz A e a sua transposta. programa { funcao inicio() { const inteiro TAM = 3 const inteiro TAM1 = 2 inteiro matA[TAM][TAM1], matt[TAM1][TAM] inteiro l, c escreva("Informe a matriz A: \n") para (l = 0; l< TAM; l++){ //leu matriz a para(c=0; c < TAM1; c++){ leia(matA[l][c]) } } escreva("\n\n") para (l = 0; l< TAM1; l++){ // conversão para transposta para(c=0; c < TAM; c++){ matt[l][c]= matA[c][l] } } escreva("\n\n") escreva("\n--A matriz A--\n") para (l = 0; l< TAM; l++){ //leu matriz A para(c=0; c < TAM1; c++){ escreva(matA[l][c]," ") } escreva("\n") } escreva("\n") escreva("\n--A matriz transposta de A--\n") para (l = 0; l< TAM1; l++){ //fez a conversão alterando as linhas e colunas para(c=0; c < TAM; c++){ escreva(matt[l][c]," ") } escreva("\n") } } } LISTA DE FUNÇÕES E PROCEDIMENTOS EXER1 Escreva um algoritmo que leia dois números e exiba o menor entre eles. A verificação de qual deles é o menor deve ser realizada por uma função.*/ programa { funcao valormenor(){ inteiro n1, n2 escreva("Informe um numero: ") leia(n1) escreva("Informe o segundo numero: ") leia(n2) se(n1 < n2){ escreva("O numero menor inserido eh o primeiro:",n1) } senao{ escreva("O numero menor inserido eh o Segundo: ",n2) } } funcao inicio() { escreva("Algoritmo para verificar o menor numero!!\n") valormenor() } } EXER2 Crie uma função que realize a conversão para radianos a partir de graus, onde o valor em graus é passado como parâmetro e o valor em radianos deve ser retornado. Sabe-se que 180º (graus) está para ? radianos. Crie também um algoritmo para testar tal função. programa { funcao real converter( inteiro grau){ //sempre lembrar de colocar na funcao o tipo do retorno const real PI = 3.14 real rad rad = (grau * PI) /180 retorne rad } funcao inicio() { inteiro grau real verifica escreva("Informe a quantidade de graus:\n") leia(grau) verifica = converter(grau) escreva("\nA quantidade em Radianos eh: ", verifica) } } EXER3 Escreva um módulo chamado Troca que troca os valores de duas variáveis do tipo inteiro. programa { funcao troca(){ inteiro n1,n2, aux escreva("Informe um numero: ") leia(n1) escreva("Informe o segundo numero: ") leia(n2) aux = n1 n1 = n2 n2 = aux escreva("apos a troca o valor de n1 e:",n1) escreva("\n") escreva("apos a troca o valor de n2 e:",n2) } funcao inicio() { troca() } } EXER4 Escreva uma função que retorne 1 se um número for abundante e 0 caso contrário. Um número é abundante se a soma de seus divisores, exceto ele mesmo, for maior que o próprio número. Construa um algoritmo para testar a sua função. programa { funcao inteiro abundante (inteiro num){ inteiro soma =0, i, dobro para( i = 1; i <= num; i++){ se(num % i == 0){ soma += i } } dobro = num * 2 se(soma > dobro){ retorne 1 }senao retorne 0 } funcao inicio() { inteiro num, ret escreva("Informe um numero: ") leia(num) ret = abundante(num) escreva("\n") se(ret == 1){ escreva("Numero Abundante") }senao escreva("Numero nao abundante") } } EXER5 Faça uma função que calcule quantas vezes um número x é divisível por um número y. Construa um algoritmo para testar a sua função. programa { funcao inteiro calcular(inteiro n1, inteiro n2){ inteiro div, result result = n1 / n2 retorne result } funcao inicio() { inteiro n1, n2 inteiro verifica = 0 escreva("Informe um numero: ") leia(n1) escreva("Informe o segundo numero: ") leia(n2) verifica = calcular(n1,n2) escreva("\nO N1 é divisivel por N2 ",verifica," vezes") } } EXER6 Escreva uma função que calcule o fatorial de um número. Seu cabeçalho deve ser: inteiro fat(inteiro num) programa { funcao inteiro fat(inteiro num){ inteiro result= 1 para(; num >= 1; num--){ result = result * num } retorne result } funcao inicio() { inteiro num, fatorial = 0 escreva("Informe um numero: ") leia(num) fatorial = fat(num) escreva("\n") escreva("O numero fatorial eh: ",fatorial) } }
Compartilhar