Home arrow Conteúdo arrow Material Didático arrow Algoritmo e Estrutura de Dados arrow Exercício -- Soma Vetores
Exercício -- Soma Vetores PDF Imprimir E-mail
02 de June de 2008

Exercício: Soma Vetores

Enunciado 

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.

Proposta

No 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çado

Caso 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ção

Considerando 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...

 

 
< Anterior   Próximo >

Follow Plínio Vilela

FollowMe

Usuários Online

Nós temos 10 visitantes online

Login Form






Esqueceu sua senha?
Sem conta? Crie uma
EducacaoNaNet.com.br

Tennis Ranking

Pesquisar