Untitled
unknown
plain_text
a month ago
1.4 kB
21
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