C/Visual C - Ayuda lenguaje C / valida rut

 
Vista:

Ayuda lenguaje C / valida rut

Publicado por Jorge Ceballos (1 intervención) el 28/11/2002 16:10:41
Hola a todos!!

soy nuevo en este foro, me gustaria tener informacion de alguna rutina para validar rut en turbo C, la verdad, yo se como realizar el programa, pero no tengo idea de las instrucciones para el manejo de cadenas si alguien me orientase con algunos ejemplos, estaria eternamente agradecido, y felicitaciones por esta pagina, que nos ayuda en este mundo tan frio como es la programacion.

Saludos.

Jorge.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Validación de RUT en Turbo C

Publicado por Alejandro (913 intervenciones) el 10/04/2025 20:18:30
Hola Jorge,

¡Bienvenido al foro! Para validar un RUT (Rol Único Tributario) en Turbo C, puedes utilizar funciones para manejar cadenas de caracteres. A continuación, te muestro un ejemplo de cómo podrías implementar una rutina para validar un RUT:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <stdio.h>
#include <string.h>
#include <ctype.h>
 
int validarRUT(char *rut) {
    int longitud = strlen(rut);
    int suma = 0, factor = 2;
 
    // Verificar que el RUT tenga el formato correcto
    if (longitud < 2 || longitud > 10) {
        return 0; // RUT inválido
    }
 
    // Procesar el RUT sin el dígito verificador
    for (int i = longitud - 2; i >= 0; i--) {
        if (isdigit(rut[i])) {
            suma += (rut[i] - '0') * factor;
            factor = (factor == 7) ? 2 : factor + 1; // Cambiar el factor
        } else {
            return 0; // Contiene caracteres no válidos
        }
    }
 
    // Calcular el dígito verificador
    int dv = 11 - (suma % 11);
    char dvEsperado = (dv == 10) ? 'K' : (dv == 11) ? '0' : dv + '0';
 
    // Comparar el dígito verificador
    if (toupper(rut[longitud - 1]) == dvEsperado) {
        return 1; // RUT válido
    } else {
        return 0; // RUT inválido
    }
}
 
int main() {
    char rut[11];
    printf("Ingrese el RUT (formato 12345678-9): ");
    scanf("%s", rut);
 
    if (validarRUT(rut)) {
        printf("El RUT es válido.\n");
    } else {
        printf("El RUT es inválido.\n");
    }
 
    return 0;
}

Explicación del código:


1. Validación de longitud: Se verifica que el RUT tenga entre 2 y 10 caracteres.
2. Cálculo del dígito verificador: Se utiliza un algoritmo que multiplica cada dígito del RUT por un factor que va de 2 a 7, sumando los resultados.
3. Comparación del dígito verificador: Se calcula el dígito verificador esperado y se compara con el ingresado por el usuario.

Espero que este ejemplo te sea útil.

¡Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar