Estoy recuperando algunos post de mi blog anterior, preparandonme para el proximo semestre para que sirva de ayuda a los mechones de informática que entraron este año, lo único que alcanze a recuperar es este clasico programa, que es el calculo verificador, en mi entonces lo hice con lo que sabia o conocía.

Luego de un día y un poco mas de pensar, y gracias a la ayuda de mi compañero Pablo Gonzalez, puse entender que las variables de tipo char tiene otro ascci y al trabajar a numeros enteros, hay dos opciones para poder trabajarlas:

1. A su numero en char, almacena en un vector restarle -48.
2. Es ocupar la libreria stdlib, la función atoi();

Sin mas comentarios al respecto, menos mal que me salió, pero ahora viene las struct, asi que nos vamos a hacer una agendita en C++.

//Validación del rut
//Alumno: Jonathan Ramírez
//Fecha: 23 Octubre 2007
//UTFSM Informatica
#include <stdio .h>
#include <string .h>
int main()
    {
    //declaracion de variables
    char rut[7];
    char rutvalidado[7];
    int total=0;
    int a,b,c;
    int contador=3;
    int acumulador=0;
    int resto=0;
    int digito=0;
    int opcion=0;
    //fin declaracion de variables
          printf("*** CALCULO DEL DIGITO VERIFICADOR RUT (CHILE) ***");
          printf("\n\n");
          printf("Ingrese el rut que ejecutar: ");
          gets(rut);
          total=strlen(rut);
                            if(total< =7) {
                                         for(a=0;a<=7;a++) {
                                                           if(rut[0]==rut[a]) {
                                                           rutvalidado[0]='0';
                                                           rutvalidado[a+1]=rut[0];                                   
                                                           }
                                                           else {
                                                           rutvalidado[a+1]=rut[a];
                                                           }
                                                           }
                                         }
                            else {
                                         for(b=0;b<=7;b++) {
                                         rutvalidado[b]=rut[b];
                                         }
                            }
                                         for(c=0;c<=7;c++) {
                                                           if(contador==2) {
                                                           acumulador=acumulador+((rutvalidado[c]-48)*contador);
                                                           contador=8;
                                                           }
                                                           else {
                                                           acumulador=acumulador+((rutvalidado[c]-48)*contador);
                                                           }
                                                           contador=contador-1;
                                         }
                                         digito=(11-(acumulador%11));
                                         if(digito>=10) {
                                                        if(digito==10) {
                                                        printf("\nEl digito verificador de su rut es: K"); }
                                                        else {
                                                        printf("\nEl digito verificador de su rut es: 0");
                                                        }
                                                        }
                                         else {
                                         printf("\nEl digito verificador de su rut es: %d", digito);
                                         }
          getchar();
          getchar();
          }
</string></stdio>

Tau.

pda: tal vez actualize el codigo, ocupando la función atoi(); y asi automatizar el programa.