Baixe o app para aproveitar ainda mais
Prévia do material em texto
INTEIRORODUÇÃO À CIÊNCIA DA COMPUTAÇÃO – LINGUAGEM C 1 1 EXEMPLOS DE APLICAÇÕES DE SUBPROGRAMAÇÃO 1. Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos de cada coluna e a soma dos elementos das diagonais principal e secundária são todas iguais. Exemplo: A matriz 2103 654 708 é um quadrado mágico. Dada uma matriz quadrada nn A × , verificar se A é um quadrado mágico. - um subprograma para ler a matriz -um subprograma para imprimir a matriz - um subprograma para somar os valores das linhas - um subprograma para somar os valores das colunas - um suprograma pra somar a diagonal principal e outro para a diagonal secundária. Algoritmo quadrado_magico inteiro n,A[10][10],L[10],C[10] inteiro chave=0 inteiro DP,DS,k; Escreva " Digite as dimensoes do quadrado" Leia n leia_matriz(A,n,n) imprima_matriz(A,n,n) todas_linhas(a,n,L) imprima_vetor(L,n) todas_colunas(A,n,C) imprima_vetor(C,n) DP=diagonal_principal(A,n) Escreva DP DS=diagonal_secundaria(A,n) Escreva DS Para k=2,n,1 Se (L[1]≠L[k] ou C[1] ≠C[k] ou L[1] ≠DP ou L[1] ≠DS ou L[1] ≠C[1]) então chave=1 Fim se fim para Se (chave=0) então Escreva "EH um quadrado magico “ Senão Escreva "Nao EH um quadrado magico " Fim %%%%%%%%%%%%%%%%%%%%%% todas_linhas( X, m, Y) Inteiro m,X[10][10],Y[10],soma,i,j; Para i=1;m;1 soma=0 Para j=1;m;1 soma=soma+X[i][j] Fim_para Y[i]=soma Fim para Fim subrotina todas_colunas( X,m, Y) inteiro soma,i,j,m,X[10][10],Y[10] Para j=1;m;1 soma=0; Para i=1;m;1 soma=soma+X[i][j] Fim_para Y[j]=soma Fim para Fim subrotina Função inteira diagonal_principal(X, m) inteiro soma,i, m,X[10][10] soma=0 Para i=1;m;1 soma=soma+X[i][i] Fim para retorne(soma) Fim função Função inteira diagonal_secundaria(X, m) Inteiro soma,i,j, m,X[10][10] soma=0 Para i=1;m;1 Para j=1;m;1 Se (i+j=m+1) soma=soma+X[i][j] Fim se Fim para Fim para retorne(soma) Fim função INTEIRORODUÇÃO À CIÊNCIA DA COMPUTAÇÃO – LINGUAGEM C 2 2 2. Exercício: Faça um algoritmo que calcula a média das notas de N alunos e determine - a média de todos os alunos. - o número de alunos que tiveram nota superior a média calculada; - o aluno que teve a maior nota e o aluno que teve a menor nota. - Imprima uma lista com o nome dos alunos e a nota na ordem decrescente de notas. - Digite um nome e verifique se o nome consta na lista e imprima o nome e a nota correspondente. OBSERVAR: - atribuição de valores strings (caracteres) a uma variável; - comparação entre duas variáveis caracteres; Algoritmo ORDENAR_NOTAS Caracter nome[100][15],nomep[15] Real n inteiro nn, resposta, quantidade real nota[100], media Escreva "Digite a quantidade de alunos" Leia n nn=n Escreva " Digite o nome e a nota dos alunos" leia_vetores_nome_nota(n,nome,nota) /* TIPO SUBROTINA- retorna mais de um valor*/ media=tmedia(n,nota) /* TIPO FUNÇÃO- retorna um valor*/ Escreva " Media : ", media Escreva “ Relacao de todos os alunos em ordem decrescente de nota" ordem_decrescente(n,nome,nota) /*TIPO SUBROTINA- retorna mais de um valor*/ imprima_vetores(n,nome,nota) /*TIPO SUBROTINA- não retorna nada*/ quantidade=superior(n,nota,media) /* TIPO FUNÇÃO- retorna um valor*/ Escreva “ Numero de alunos com nota acima da media ", quantidade Escreva “ Aluno com maior nota:”, nome[1], “nota: ", nota[1] Escreva “ Aluno com menor nota:”, nome[nn], “nota: ", nota[nn] Escreva “ Digite o nome que deseja procurar " Leia nomep resposta=busca(n,nome,nomep) /* TIPO FUNÇÃO- retorna um valor*/ se (resposta≠0) Escreva “ Aluno procurado”, nome[resposta], “ tirou a nota: ", nota[resposta] senão Escreva “ Aluno nao encontrado" Fim se Fim algoritmo INTEIRORODUÇÃO À CIÊNCIA DA COMPUTAÇÃO – LINGUAGEM C 3 3 ordem_decrescente (real vn,caracter vnome[100][15],real vnota[100]) real aux,n inteiro i,j caracter aux2[15] Para i=1,vn,1 Para(j=ij<=vnj++) Se (vnota[i] < vnota[j]) {aux=vnota[i] vnota[i]=vnota[j] vnota[j]=aux aux2=vnome[i]) vnome[i]=vnome[j] vnome[j]=aux2 fim se fim para fim para fim subrotina /***********************************************************************************************/ leia_vetores_nome_nota(real vn,caracter vnome[100][15], real vnota[100]) inteiro i Para i=1,vn,1 Leia vnome[i],&vnota[i] Fim para Fim funcao /******************************/ imprima_vetores(real vn, caracter vnome[100][15], real vnota[100]) inteiro i Para i=1,vn,1 Escreva vnome[i],vnota[i])} Fim para /***********************************/ real tmedia(real vn, real vnota[100]) inteiro i real soma,m soma=0 Para i=1,vn,1 soma=soma+vnota[i] m=soma/vn return(m) fim subprograma /******************************************/ inteiro busca(real vn,caracter vnome[100][15],caracter vnomep[15]) inteiro resul,i resul=0 Para i=1,vn,1 Se (vnome[i]==vnomep) resul=i }Fim se Fim para retorne (resul) fim funcao /******************************************/ Função inteiro superior(real vn,real vnota[100],real smedia) inteiro i,cont cont=0 Para i=1,vn,1 se (vnota[i]>smedia) entao cont=cont+1 fim se fim para retorne cont fim funcao INTEIRORODUÇÃO À CIÊNCIA DA COMPUTAÇÃO – LINGUAGEM C Departamento de Matemática Prof. Erica 44 LISTAS DE EXERCÍCIOS: O PROGRAMA PRINCIPAL DEVE CONTER APENAS AS INSTRUÇÕES DE CHAMADAS DE SUBPROGRAMAS E APENAS OS CÁLCULOS ESTRITAMENTE NECESSÁRIOS. SEMPRE QUE POSSÍVEL UTILIZE SUBALGORITMO TIPO FUNÇÃO 1. Refaça a lista 5 utilizando subalgoritmos para: a. Ler matriz b. Imprimir matriz c. Ler vetor d. Imprimir vetor e. Transportar elementos da matriz para um vetor e vice-versa f. Determinar se um número é primo – tipo função g. Calcular o fatorial de um número – tipo função h. Em todos os cálculos que resultarem em um resultado utilizar o subalgoritmo tipo função 2. Dado um vetor X com n elementos, fazer um algoritmo que calcule os n-1 elementos do vetor Y pela fórmula 1n,....2,1i XXY i1ii −=−= + a)faça uma subprograma para ler o vetor X b)faça uma subprograma para imprimir o vetor X e o vetor Y c) faça uma subprograma para calcular o vetor Y Todos os argumentos com passagem por referência, exceto a dimensão do vetor (n) que deve ser passada por valor. 3. Escrever uma programa que determina o valor de Y, utilizando um subprograma para ler o vetor X e uma funçãopara computar Y >+− = <++ = 0X seX11 0X se0 0X seX11 )X(Y 2 2 ordem_decrescente (float vn,char vnome[100][15],float vnota[100]) {float aux,n; int i,j; char aux2[15]; for (i=1;i<=vn-1;i++) for (j=i;j<=vn;j++) if (vnota[i] < vnota[j]) {aux=vnota[i]; vnota[i]=vnota[j]; vnota[j]=aux; /*FUNCAO STRCPY UTILIZADA PARA ARMAZENAR UM VALOR STRING EM UMA VARIAVEL*/ strcpy(aux2,vnome[i]); /* atribui o valor de vnome[i] para a variável aux2 */ strcpy(vnome[i],vnome[j]); /* atribui o valor de vnome[j] para a variável vnome[i] */ strcpy(vnome[j],aux2) ; /* atribui o valor de aux2 para a variável vnome[j] */ } } INTEIRORODUÇÃO À CIÊNCIA DA COMPUTAÇÃO – LINGUAGEM C Departamento de Matemática Prof. Erica 55 4. Fazer um programa, utilizando Subprogramas, para resolver o seguinte problema: Dois conjuntos A e B de mesma dimensão contêm 10 elementos cada. Uma variável P é igual a um dos elementos de A. Localizar a posição PP do elemento de A que é igual a P e imprimir o valor do elemento correspondente situado no vetor B. - um subprograma para ler os vetores -função para localizar o elemento de A que é igual a P -função para determinar o valor de B na posição PP 5. Fazer um algoritmo, utilizando subprogramas, para obter e imprimir a soma dos termos de um vetor de n posições cujos elementos são números reais 6. Fazer um subalgoritmo, tipo Subprograma, para retornar um valor numérico do polinômio x4-3x2+4x2-x+1 - subalgoritmo para ler o vetor X - subalgoritmo tipo função para calcular o polinômio 7. Dada uma matriz quadrada A, de dimensão n, escrever um programa , para trocar a diagonal principal pela diagonal secundária. Utilize subprogramas para ler e imprimir a matriz A e para realizar a troca. Por exemplo, se a dimensão fosse 8, teríamos A11 é trocado com A18 A22 é trocado com A27 ......................................... A88 é trocado com A81 -Subalgoritmo para ler a matriz -subalgoritmo para imprimir a matriz (original e alterada, um de cada vez) -subalgoritmo para trocar as diagonais 8. Escreva um algoritmo que leia uma matriz Anxm e determine o maior elemento, em módulo. subprograma de leitura, subprograma de impressão subprograma tipo função para determinar o maior valor de A, em módulo 9. Repita o exercício anterior utilizando no item c) uma subprograma que determina o maior valor e A e também as coordenadas i (linha) e j (coluna) onde este valor ocorrer. 10. Escrever um programa que calcula o determinante de uma matriz A3x3. Utilizar subprogramas para ler e imprimir a matriz e um subprograma tipo função para determinar o valor do determinante da matriz. 11. Dados uma matriz Anxm e um vetor X de dimensão mx1, escrever um programa para calcular o vetor B, dado por 1,2,....ni XAB m 1j jiji ==∑ = Utilizar subprogramas - um ler a matriz A - imprimir a matriz A, - ler o vetor -imprimir o vetor X e B (um de cada vez) - determinar o vetor X 12. Fazer um algoritmo, utilizando subprogramas para obter e imprimir o fatorial de diferentes números inteiros, positivos, situados no intervalo entre 4 e 30. Utilizar função para calcular o fatorial 13. Elabore um algoritmo para ler um vetor de 10 valores inteiros positivos e imprimir apenas os elementos do vetor cujo valor seja igual a posição que o elemento ocupa no vetor. Imprimir também o vetor lido. Utilize subprogramas para ler e imprimir. Utilize subprograma para fazer a verificação. 14. Elabore um algoritmo para ler um vetor VET de 16 valores inteiros positivos e gerar uma matriz Mat(4,4) por linha, em que os 4 primeiros elementos do vetor devem formar a 1a linha da matriz, os 4 elementos seguintes a 2 coluna INTEIRORODUÇÃO À CIÊNCIA DA COMPUTAÇÃO – LINGUAGEM C Departamento de Matemática Prof. Erica 66 da matriz e assim por diante. Imprimir o vetor e matriz Mat por linha. Utilize subprogramas para ler, formar a matriz e imprimir. 15. Dada uma matriz Mnxn, transportar para um vetor D apenas os elementos da diagonal da matriz M. Imprimir a matriz e o vetor. Utilize subprogramas para ler, formar o vetor e imprimir. 16. Elabore um algoritmo que leia dois vetores inteiros V1 e V2, de 8 elementos cada. Gerar uma matriz M por linha, tal que: Os elementos do vetor V1 devem formar as linhas ímpares da matriz e elementos de V2 devem formar as linhas pares da matriz. Imprimir os vetores e a matriz gerada. Utilize subprogramas para ler, formar a matriz e imprimir. 17. Dada uma matriz M(5,5), transportar para um vetor P apenas os elementos primos da matriz M. Imprimir a matriz e o vetor. Utilize subprogramas para ler, formar o vetor e imprimir. 18. Dizemos que uma matriz inteira Anxn é uma matriz de permutação se em cada linha e em cada coluna houver 1−n elementos nulos e um único elemento igual a 1. Exemplo: A matriz abaixo é de permutação: A= 1000 0001 0100 0010 Observe que A= − − 100 021 012 não é de permutação. Faça um subalgoritmo tipo função que determina se uma dada matriz é de permutação 19. Deseja-se publicar o número de acertos de cada aluno em uma prova em forma de testes. A prova consta de 5 questões, cada uma com cinco alternativas identificadas por A, B,C, D e E. Para isso são dados: o cartão gabarito, o cartão respostas para cada aluno, contendo o seu número e as respostas. Faça um algoritmo que resolva o problema e imprima os resultados. Faça o teste de mesa. - Faça um subalgoritmo para ler um vetor (ler o cartão gabarito e o cartão resposta, um de cada vez) - Faça um subalgoritmo tipo função para calcular o número de acertos. Elabore um algoritmo para ler um vetor V de 20 valores inteiros positivos, construir um vetor com o fatorial dos elementos pares de V. Construir um vetor com a potência de 5 de todos os valores ímpares do vetor V. - subalgoritmo para ler um vetor -subalgoritmo para imprimir um vetor - subalgoritmo para construir os vetores 20. Ler uma variável de 100 elementos numéricos e verificar se existem elementos iguais a 25. Se existirem, escrever as posições em que estão armazenados. - subalgoritmo para ler um vetor -subalgoritmo para imprimir um vetor - subalgoritmo para gerar as posições 21. Fazer um algoritmo que leia um vetor e imprima soma de todos os elementos do vetor - subalgoritmo tipo função para determinar a soma 22. Fazer um algoritmo que leia um vetor e imprima soma de todos os elementos primos do vetor - subalgoritmo para ler um vetor -subalgoritmo para imprimir um vetor - subalgoritmo tipo função para determinar a soma INTEIRORODUÇÃO À CIÊNCIA DA COMPUTAÇÃO – LINGUAGEM C Departamento de Matemática Prof. Erica 77 23. Fazer um algoritmo que leia uma matriz e imprima soma de todos os elementos da matriz - subalgoritmo para ler uma matriz -subalgoritmo para imprimir uma matriz - subalgoritmo tipo função para determinar a soma 24. Fazer um algoritmo que leia uma matriz inteira A LAxCA . Transporte para um vetor V1 os elementos primos as matriz, para um vetor V2 os elementos abundantes da matriz e para um vetor V3 os elementos defectivos da matriz. Imprimir a matriz e os vetores. Primos� dois divisores Abundantes� soma dos divisores próprios é maior que o número Defectivo� soma dos divisores próprios é menor que o número.Utilize um subalgoritmo para transportar os elementos para os vetores. O subalgoritmo deve retornar os vetores e os contadores. 25. Fazer um algoritmo que leia três matrizes ALAxCA, BLBxCB, CLCxCC e realize a operação abaixo, se possível: R= (A * B) * C Utilize um subalgorimto para ler as matrizes uma de cada vez, um subalgoritmo para imprimir as matrizes, uma de cada vez. Um subalgoritmo para multiplicar duas matrizes. O subalgoritmo deve verificar as dimensões. 26. Fazer os demais exercícios da lista de vetores e matrizes seguindo os modelos de utilização de subalgoritmos acima. Sempre que possível, utilize o subalgoritmo tipo função (que retorna apenas um valor).
Compartilhar