#include <iostream>
#include <string>
bool validarRUT(const std::string& rut) {
// Verificar que el RUT tenga el formato correcto
if (rut.length() < 2 || rut.length() > 10) {
return false; // Longitud inválida
}
// Separar el número y el dígito verificador
std::string numero = rut.substr(0, rut.length() - 2);
char digitoVerificador = rut[rut.length() - 1];
// Calcular el dígito verificador esperado
int suma = 0;
int multiplicador = 2;
// Recorrer el RUT de derecha a izquierda
for (int i = numero.length() - 1; i >= 0; --i) {
suma += (numero[i] - '0') * multiplicador;
multiplicador++;
if (multiplicador > 7) {
multiplicador = 2; // Reiniciar el multiplicador
}
}
int resto = suma % 11;
char digitoEsperado;
if (resto == 0) {
digitoEsperado = '0';
} else if (resto == 1) {
digitoEsperado = 'K';
} else {
digitoEsperado = '0' + (11 - resto); // Convertir a carácter
}
// Comparar el dígito verificador calculado con el ingresado
return digitoVerificador == digitoEsperado;
}
int main() {
std::string rut;
std::cout << "Ingrese el RUT (formato 12345678-9): ";
std::cin >> rut;
if (validarRUT(rut)) {
std::cout << "El RUT es válido." << std::endl;
} else {
std::cout << "El RUT es inválido." << std::endl;
}
return 0;
}