Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Juancho25

#21
Por ejemplo este código:

cout<<"Ingresa tu nombre";
gets(nombre);
cout<<"Ingresa tus apellidos";
gets(apellidos);


Lo que yo digo es que cada vez que pase por un gets no se pase a la siguiente opción cuando no se ha ingresado nada y se presiona la tecla enter, osea, que no quede el espacio vacío.
#22
Tengo un programa en el cual se van ingresando datos como por ejemplo nombre, apellidos, fecha de nacimiento, etc, pero tengo un problema, necesito que cuando no se hayan ingresado datos no se pase a la siguiente opción cuando se presione la tecla "enter", ya que esto me sucede con los tipo char y me deja el espacio vacío al momento de mostrar los datos ingresado. Espero y me haya explicado bien y alguien me pueda ayudar.
#23
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?.
#24
Cita de: leosansan en 21 Octubre 2012, 13:42 PM
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":

#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++.
#25
Lo que hice fue cambiar la variable "CodigoBarras" de int a char y me funcionó ya que no contaba con que strlen() no funciona con enteros.

Ya con eso sí me acepta que sean ocho dígitos, ni más ni menos, pero acepta puros números y puras letras o mixto, y ese es otro problema que olvidé mencionar, el código de barras sólo tiene que aceptar números y no letras.

Espero que me haya explicado, y perdonen tantas preguntas mías, soy algo nuevo en esto del c++.
#26
El código es una estructura pero lleva muchas más cosas como agregar registro, editar, borrar, etc, y el problema me aparece nadamás en esa parte, por lo que omití lo demás que no influye en el código.

include <iostream>

int c=0;

struct dato {
int CodigoBarras;
} Datos[10];

void main (){

cout<<"\t\tIngresa el Codigo de Barras\n";
flushall();
cin>>Datos[c-1].CodigoBarras;

if (strlen(Datos[c].CodigoBarras)==8) // Aquí necesito ayuda
{
cout<<"Correcto.";
}
else
{
cout<<"Incorrecto. Sólo se permiten 8 dígitos.";
}
}
#27
Cita de: DonVidela en 20 Octubre 2012, 22:41 PM
No sé C ni C++ , pero viendo la sintaxis asumo que esta es la solución.


if (strlen(Datos[c].CodigoBarras)==8) /* no es "=" es  "=="  ya que es comparacion  y ahi lo estabas asignando*/
        {
           cout<<"Correcto.";
        }
        else
        {
           cout<<"Incorrecto. Sólo se permiten 8 dígitos.";
        }


Puedo estar equivocado, porque algunas sintaxis son diferentes en otros lenguajes, avisame si estoy mal, saludos.


Agregué eso que me dijiste y me sigue apareciendo equivocado, el error me lo marca en la palabra "Datos" y dice: "un argumento de tipo 'int' no es compatible con un parámetro de tipo 'const char'".
#28
Tengo un problema al momento de programar para que sólo acepte 8 dígitos en un código de barras, tengo entendido que es con un strlen(.. pero me marca un error.

Lo que tiene que hacer este programa es que ingrese un código de barras y lo guarde pero sólo tiene que aceptar 8 dígitos, ni más ni menos, y tampoco letras.

Tengo este código pero me marca error:

if (strlen(Datos[c].CodigoBarras)=8) // Aquí necesito ayuda
{
cout<<"Correcto.";
}
else
{
cout<<"Incorrecto. Sólo se permiten 8 dígitos.";
}


Espero me puedan ayudar.