Untitled
unknown
plain_text
7 months ago
1.4 kB
22
Indexable
void multString(char s1[], char s2[], char resultado[]) {
int l1 = strlen(s1);
int l2 = strlen(s2);
int lengthFinal = l1 + l2;
int carry;
int multiplicacaoAtual;
int digito;
for (int i = 0; i < lengthFinal; i++) {
resultado[i] = '0';
}
resultado[lengthFinal] = '\0';
for (int i = l1 - 1; i >= 0; i--) {
carry = 0;
for (int j = l2 - 1; j >= 0; j--) {
// Converte os caracteres para inteiros e multiplica
multiplicacaoAtual = (s1[i] - '0') * (s2[j] - '0') + (resultado[i + j + 1] - '0') + carry;
carry = multiplicacaoAtual / 10;
digito = multiplicacaoAtual % 10;
resultado[i + j + 1] = digito + '0';
}
resultado[i] += carry;
}
// Formatar a string para começar no indice 0 com os valores que interessam
int k = 0;
while (k < lengthFinal && resultado[k] == '0') {
k++;
}
if (k != lengthFinal) {
for (int i = k; i < lengthFinal; i++) {
resultado[i - k] = resultado[i];
}
resultado[lengthFinal - k] = '\0'; // na posição lengthFinal teriamos o '\0', como fizemos a translação dos k '0's então retiramos o valor.
}
else { // se só tiver 0 na string corresponde ao próprio número 0
resultado[0] = '0';
resultado[1] = '\0';
}
}Editor is loading...
Leave a Comment