elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ¿Cómo determinar que sólo acepte 8 dígitos?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Cómo determinar que sólo acepte 8 dígitos?  (Leído 17,770 veces)
Juancho25

Desconectado Desconectado

Mensajes: 28


Ver Perfil
Re: ¿Cómo determinar que sólo acepte 8 dígitos?
« Respuesta #10 en: 23 Octubre 2012, 03:38 am »

Estas usando una función para char propiamente, y tu variable "Datos[c].CodigoBarras" es un numero entero. Lo que podrías hacer es calcular previamente los dígitos de dicho número y luego aplicar la condición a la variable contador si es 8 o no..
Para contar los dígitos de "VDatos[c].CodigoBarras" te valdría el siguiente código, cambiando "n" por "Datos[c].CodigoBarras":

Código:
#include<iostream>
using namespace std;

int main() {
    int n,contador=0;
    cin>>n;
    while(n>0){
        contador++;
        n=n/10;}
    cout<<contador<<endl;
    return 0;
}


Muchas gracias leosansan, me funcionó perfecto ya que si convertía el int a char me traería problemas con otras cosas en mi código y sin convertirlo de int a otro tipo me pareció perfecto, sólo una pregunta, ¿para qué se usa el n=n/10;? Todo lo entendí pero eso no muy bien, necesito comprenderlo bien ya que soy algo nuevo en el c++.


En línea

BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: ¿Cómo determinar que sólo acepte 8 dígitos?
« Respuesta #11 en: 23 Octubre 2012, 04:49 am »

es muy simple... de hecho no hay que convertir a nada solo aplicar lógica PARA ESTE CASO QUE ya tiene establecido una longitud de 8...

Código
  1.  
  2. if (abs(Datos[c].CodigoBarras) <= 99999999) {
  3.    puts("Existen 8 o menos dígitos");
  4. } else {
  5.    puts("Hay mas de 8 dígitos");
  6. }
  7.  
  8.  

Dulces Lunas!¡.


« Última modificación: 23 Octubre 2012, 04:53 am por BlackZeroX (Astaroth) » En línea

The Dark Shadow is my passion.
leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: ¿Cómo determinar que sólo acepte 8 dígitos?
« Respuesta #12 en: 23 Octubre 2012, 06:19 am »

Muchas gracias leosansan, me funcionó perfecto ya que si convertía el int a char me traería problemas con otras cosas en mi código y sin convertirlo de int a otro tipo me pareció perfecto, sólo una pregunta, ¿para qué se usa el n=n/10;? Todo lo entendí pero eso no muy bien, necesito comprenderlo bien ya que soy algo nuevo en el c++.
Cada vez que haces n/10 divides entre 10 de forma entera, con lo que te "comes" un dígito del número inicial, al tiempo que "contador" se incrementa contando así los dígitos.
Saludos!.
En línea

Juancho25

Desconectado Desconectado

Mensajes: 28


Ver Perfil
Re: ¿Cómo determinar que sólo acepte 8 dígitos?
« Respuesta #13 en: 2 Noviembre 2012, 06:23 am »

Si gracias a todos por sus respuestas, ya solucioné ese problema, sólo que tengo otro, aparte de aceptar sólo 8 dígitos, necesito que sólo sean números y no letras, ¿saben como le puedo hacer con eso?.
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: ¿Cómo determinar que sólo acepte 8 dígitos?
« Respuesta #14 en: 2 Noviembre 2012, 13:15 pm »

Citar
En línea

BatchianoISpyxolo

Desconectado Desconectado

Mensajes: 166


Ver Perfil
Re: ¿Cómo determinar que sólo acepte 8 dígitos?
« Respuesta #15 en: 2 Noviembre 2012, 13:17 pm »


Eso o hacerte una funcioncica con un array (porque creo que no hay el tipo conjunto predefinido en c++). Así no tendrías que incluir otra librería :P
En línea

Puede que desees aprender a programar desde 0: www.espascal.es
leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: ¿Cómo determinar que sólo acepte 8 dígitos?
« Respuesta #16 en: 2 Noviembre 2012, 14:47 pm »

ya solucioné ese problema, sólo que tengo otro, aparte de aceptar sólo 8 dígitos, necesito que sólo sean números y no letras, ¿saben como le puedo hacer con eso?.
Citar
Una opción sería tomar N como cadena y convertirla a entero, para después contar el número de dígitos:
Código
  1. #include<iostream>
  2. #include<cstdlib>
  3. using namespace std;
  4.  
  5. int main() {
  6.    char N[20];
  7.    int n,contador=0;
  8.    while (contador!=8)
  9.    {
  10.        cout<<"Introduzca 8 digitos: ";
  11.        cin>> N;
  12.        n = atoi (N);
  13.        cout<<n<<endl;
  14.        contador=0;
  15.            while(n>0){
  16.            contador++;
  17.            n=n/10;
  18.    }
  19.        cout<<contador<<endl;
  20.        }
  21.  
  22.    return 0;
  23. }
Saludos!.
En línea

xiruko


Desconectado Desconectado

Mensajes: 438


Ver Perfil
Re: ¿Cómo determinar que sólo acepte 8 dígitos?
« Respuesta #17 en: 2 Noviembre 2012, 14:59 pm »

Código
  1. char cadena[9];
  2. int i;
  3.  
  4. fgets(cadena, 8, stdin);
  5. for (i=0; i<8; i++) {
  6.    if (cadena[i] < '0' || cadena[i] > '9') {
  7.        printf("ERROR: Ingresa solo numeros!\n");
  8.        break;
  9.    }
  10. }

con fgets() el usuario podria introducir mas digitos pero solo se aceptarian 8, y luego con el for irias comprobando que cada uno de ellos fuera un numero. si no lo es, te salta el error y luego sale del for. tendrias que implementar algo asi dentro de un while con su respectiva variable de control para repetir este proceso hasta que el usuario introdujese un numero valido.

un saludo!
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: ¿Cómo determinar que sólo acepte 8 dígitos?
« Respuesta #18 en: 2 Noviembre 2012, 15:56 pm »

ya solucioné ese problema, sólo que tengo otro, aparte de aceptar sólo 8 dígitos, necesito que sólo sean números y no letras, ¿saben como le puedo hacer con eso?.
Solo tienes que seguir la recomendación de BlackZeroX (Astaroth): leer el numero y verificar su valor (99,000,000 <= x <= 99,999,999).

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[C][?]Como determinar que imprima ciertos caracteres « 1 2 »
Programación C/C++
Jaes 13 6,628 Último mensaje 6 Noviembre 2012, 23:11 pm
por leosansan
activar columna de datagrid y que acepte solo datos numericos
.NET (C#, VB.NET, ASP)
SAGA-gl 1 4,750 Último mensaje 5 Septiembre 2017, 04:02 am
por Eleкtro
Ayuda C++ suma de digitos hasta un solo digito.
Programación C/C++
Morx 5 6,536 Último mensaje 13 Noviembre 2018, 17:56 pm
por dijsktra
Programa que solo acepte números
Programación C/C++
julio1 2 1,733 Último mensaje 4 Febrero 2019, 19:19 pm
por julio1
Como utilizar sql injection en caso de que no tenga digitos
Hacking
4lienx 1 3,298 Último mensaje 2 Julio 2021, 00:17 am
por el-brujo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines