Soma de vetores
Olá, boa tarde a todos.
Estou fazendo um trabalho na linguagem C, o enunciado pede várias funções... To travado em uma delas. Um breve resumo...
É um programa usado pra fazer operações com numeros "grandes" (que não cabem num int), primeiro li um vetor de caracteres e transformei ele num vetor de inteiros. O numero é armazenado de trás pra frente no vetor, começando pela casa da unidade na posição x[1] e assim por diante, pra facilitar as operações. Na primeira posição do vetor é armazenado o numero de algarismos do "grande" (que eu contei antes na função)
Agora o enunciado pede que se faça uma função que some dois "grandes". O que eu fiz:
void somaGrande (int x[], int y[], int s[]) {
int n, j, vai = 0;
leia (x);
leia (y);
if (x[0] > y[0])
n = x[0];
else
n = y[0];
for (j = 1; j < n + 1; j = j + 1) {
s[j] = (x[j] + y[j] + vai) % 10;
vai = (x[j] + y[j] + vai) / 10;
}
for (j = n; j > 0; j = j - 1) {
printf ("%d", s[j]);
}
printf ("\n");
}
Essa variavel vai serve pra quando a soma de x[j] + y[j] for maior ou igual a 10. Só que meu problema é quando após a soma o numero ganha um algarismo a mais.
Tipo se for 999 + 999 = 1998, na saída ele devolve 998, pois o n aumenta e eu não consigo prever qual vai ser o tamanho a após a soma e onde armazenar caso for.
Acho que ficou meio confuso como eu expliquei, mais se alguém puder ajudar posso melhorar aos poucos, postar o resto do codigo...
Obrigado!
Discussão (6)
Carregando comentários...