Exercício: Soma VetoresEnunciado Uma limitação da maioria das linguagens de programação é o maior número inteiro que ela pode manipular. Por exemplo, em alguns compiladores Pascal o número inteiro é representado por 2 bytes, portanto variando de [-32768, 32767]. Essa é uma grande limitação, pois não poderiamos representar usando números inteiros a população de uma cidade, por exemplo. PropostaNo exercício de hoje vocês devem desenvolver um programa, em C ou Pascal, para fazer a soma de dois números inteiros. O detalhe é que esses números podem ter até 20 dígitos cada um. Utilize vetores para armazenar os números, sendo que cada elemento de cada vetor deve armazenar um número inteiro positivo de apenas 1 dígito [0, 9]. Exemplo 932821 + 1241002 = 2173823 Vocês devem entregar o código fonte do programa em si, além das explicações pertinentes para que eu entenda a solução adotada. AvançadoCaso você cumpra com facilidade a primeira parte do exercício, implemente também a divisão do primeiro número pelo segundo, mostrando apenas a parte inteira do resultado. SoluçãoConsiderando que você carregou os dois vetores com um dígito por posição, corretamente posicionados da direita para a esquerda nos vetores. O seguinte trecho de código faz a soma desses dois números: void soma(int v1[], int v2[]){ int vaium = 0; for(i=19;i>=0;i--){ som[i] = (v1[i]+v2[i]+vaium) % 10; vaium = (int)((v1[i]+v2[i]+vaium) / 10); } }
A função soma recebe dois vetores de até 20 elementos e carrega o vetor global "som" com a soma dos dois primeiros vetores. O loop for vai de 19 a 0, fazendo a soma dos elementos da direita para a esquerda. Em cada interação som recebe o resto da divisão inteira da soma dos dígitos correspondentes àquela posição mais a variável vaium, que pode valer 0 ou 1. A variável vaium recebe o quociente dessa divisão inteira. Por exemplo, se estou somando os números 199 com 25, teríamos na primeira interação a soma 9 + 5 + 0 = 14. Nessa interação o vetor som[19] receberia 4, que é o resto da divisão inteira de 14 por 10. A variável vaium receberia 1, que é o quociente dessa divisão inteira. Na próxima iteração teríamos a soma 9 + 2 + 1 = 12, som[18] receberia 2 e vaium receberia 1. Na iteração seguinte teríamos 1 + 0 + 1 = 2, som[17] = 2 e vaium = 0. Todas as outras iteração seriam 0 + 0 + 0 = 0. Assim a soma seria 224. Veja a solução completa...
|