• Lunes 16 de Diciembre de 2024, 00:49

Autor Tema:  Validacion De Un Numero  (Leído 6931 veces)

Fulgore

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Validacion De Un Numero
« en: Sábado 30 de Abril de 2005, 22:03 »
0
Hola soy estudiante de informatica de primer año, y estoy dando mis primeros pasos en programacion en c++. Y tengo la siguiente duda necesito validar un numero de rut(cedula de identidad), hice el programa y arroja un resultado correcto pero necesito ke ingrese solo 8 numeros y no letras..... he intentado poner un vector de 8 y rellenarlo con un ciclo iterativo pero al final me arroja resultados erroneos. Aqui mando el codigo del programa, si alguien me puede  guiar en mi problema de ante mano gracias.

#include<stdio.h>
#include<conio.h>
int oper,incre,fac,k,total_suma;
int dig,resto,resto2,aux,y;
long int rut;

main()
{
      printf("***VALIDACION DEL DIGITO VERIFICADOR***");
      printf("\n\nIngrese el Numero de Rut sin Digito Verificador...:");
      scanf("%8ld",&rut);

      incre=0;
      fac=2;
      total_suma=0;

      while(incre<8)
     {
            resto=rut%10;
            rut=rut/10;
            aux=resto*fac;
            total_suma=total_suma+aux;
            fac++;

           if(fac>7)
          {
          fac=2;
          }
          incre++;
          aux=0;
     }
     /*Operacion para encontrar el digito verificador*/

     y=11;
     resto2=total_suma%y;
     dig=y-resto2;
     /*condicion utilizada para saber si el digito es k o un numero*/
     if(dig==10)
     /*Muestra por pantalla el digito verificad*/
     printf("\nEl digito verificador es...: %d",k);
     else
     /*Muestra por pantalla el digito verificador*/
     printf("\nEl digito verificador es...: %d",dig);
}

fuhrer

  • Miembro MUY activo
  • ***
  • Mensajes: 329
  • Nacionalidad: mx
    • Ver Perfil
    • http://admin.busquenoseninternet.com
Re: Validacion De Un Numero
« Respuesta #1 en: Sábado 30 de Abril de 2005, 23:09 »
0
Hola que tal.

No entiendo muy bien que es lo que tratas de hacer, ya corri tu programa y me da ciertos resultados, los cuales no se si estan bien.

Asi que si deseas que se te ayude, podrias proporcionar tus datos de entrada y lo que deseas obtener, y también cual es tu mayor duda, es decir, que es lo que no puedes hacer o no sale como tu quieres.

Hasta luego.

Fulgore

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Validacion De Un Numero
« Respuesta #2 en: Domingo 1 de Mayo de 2005, 18:13 »
0
Hola FUHRER......
Te explico mejor el problema. Lo ke hace el programa es encontrar el digito verificador de la cedula de identidad de una persona por ejemplo el
CI de una persona es (15905824-7).
el numero 7 seria el digito verificador de este numero, ese es el resultado que arroja el programa. Lo que no me resulta es que el usuario ingrese solo numeros y no leltras y que a su vez ingrese solo 8 numeros, por ejemplo tomando el caso anterior solo debe ingresar el numero (15905824).
ahora me exprese mejor......gracias.

fuhrer

  • Miembro MUY activo
  • ***
  • Mensajes: 329
  • Nacionalidad: mx
    • Ver Perfil
    • http://admin.busquenoseninternet.com
Re: Validacion De Un Numero
« Respuesta #3 en: Domingo 1 de Mayo de 2005, 19:20 »
0
Bueno, lo que creo que puedes hacer es declarar un areglo de caracteres, entonces tu número lo lees y lo almacenas en ese areglo como una cadena, puedes leerlo como lo hacer:
Código: Text
  1.  
  2. char cadena[10];
  3. printf(&#34;&#092;n&#092;nIngrese el Numero de Rut sin Digito Verificador...:&#34;);
  4. scanf(&#34;%8s&#34;,&s);
  5.  
  6.  
de esta forma lo que el usuario escriba desues de lo 8 caracteres iniciales, no los tomas en cuenta. Ahora que si quieres que exactamente sean 8 caracteres, entonces declara un arreglo de mayor longitud, lees todo lo que te den y una vez que tengas la cadena obtienes la longitud con la función strlen(); y si es mayor o menor que 8 entonces vuelves a pedir el número:
Código: Text
  1.  
  2. char cadena[100];
  3. do{
  4.     printf(&#34;&#092;n&#092;nIngrese el Numero de Rut sin Digito Verificador...:&#34;);
  5.     scanf(&#34;%s&#34;,&s);
  6.     }while(strlen(cadena) != 8);
  7.  
  8.  
Una vez que ya esas seguro que solo tienes 8 caracteres, los cuales no sabes que son, entonces usa la función atoi() para convertir tu cadena a número, finalmente compara si tu número contiene 8 digitos, esto lo puedes hacer volviendo a convertir tu número a cadena y si la longitud de esta con la anterior es igual, entonces ya tienes lo que querias y si no pues vuelves a pedir tu número.

Espero te sirva.

Hasta luego.

carmamezo

  • Miembro MUY activo
  • ***
  • Mensajes: 232
    • Ver Perfil
Re: Validacion De Un Numero
« Respuesta #4 en: Martes 3 de Mayo de 2005, 12:35 »
0
Puedes hacer lo siguiente:
Código: Text
  1.  
  2. #include&#60;stdio.h&#62;
  3. #include&#60;conio.h&#62;
  4.  
  5. int oper,incre,fac,k,total_suma;
  6. int dig,resto,resto2,aux,y;
  7. long int rut;
  8.  
  9. main()
  10. {
  11. printf(&#34;***VALIDACION DEL DIGITO VERIFICADOR***&#34;);
  12. do
  13. {
  14. printf(&#34;&#092;n&#092;nIngrese el Numero de Rut sin Digito Verificador...:&#34;);
  15. scanf(&#34;%ld&#34;,&rut);
  16. fflush(stdin);
  17. if(rut&#60;9999999 || rut&#62;100000000)
  18.   printf(&#34;&#092;n&#092;t&#092;aERROR: el numero debe contener 8 cifras!!&#34;);
  19.  
  20. }while(rut&#60;9999999 || rut&#62;100000000);
  21.  
  22. incre=0;
  23. fac=2;
  24. total_suma=0;
  25.  
  26. while(incre&#60;8)
  27. {
  28. resto=rut%10;
  29. rut=rut/10;
  30. aux=resto*fac;
  31. total_suma=total_suma+aux;
  32. fac++;
  33.  
  34. if(fac&#62;7)
  35. {
  36. fac=2;
  37. }
  38. incre++;
  39. aux=0;
  40. }
  41. /*Operacion para encontrar el digito verificador*/
  42.  
  43. y=11;
  44. resto2=total_suma%y;
  45. dig=y-resto2;
  46. /*condicion utilizada para saber si el digito es k o un numero*/
  47. if(dig==10)
  48. /*Muestra por pantalla el digito verificad*/
  49. printf(&#34;&#092;nEl digito verificador es...: %d&#34;,k);
  50. else
  51. /*Muestra por pantalla el digito verificador*/
  52. printf(&#34;&#092;nEl digito verificador es...: %d&#34;,dig);
  53. }
  54.  
  55.  
Espero que te sirva de ayuda.
Un saludo. :lightsabre:
No hay tonto más molesto que el ingenioso.

Fulgore

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Validacion De Un Numero
« Respuesta #5 en: Martes 3 de Mayo de 2005, 23:36 »
0
FUHRER y CARMAMEZO gracias por su ayuda..... :comp:
 :lightsabre: ke la fuerza los acompañe.......