Autor
|
Tema: Duda solo ingresar numeros (Leído 7,356 veces)
|
meaf75
Desconectado
Mensajes: 23
|
Hola, estoy desarrollando una tarea y en esta me pide ingresar un numero (todo bien hasta ahi) pero digamos la persona que esta usando el programa ingresa una letra le deberia decir: ingrese un numero pero en vez de eso cuando ingreso una letra me manda un error y se cierra, no se como poner que el valor a ingresar tiene que ser un numero y no una letra y si es una letra que lo devuelva al paso anterior hasta que ingrese un numero
|
|
|
En línea
|
|
|
|
NOB2014
Desconectado
Mensajes: 366
|
Hola, meaf75. - No tengo todavía mucha autoridad para responderte pero fíjate si este código te soluciona en parte tu problema, el único error es que si ingresas 12a te toma como válido el 12, tú dirás. - #include <stdio.h> #include <limits.h> int main( void ){ int numero = 0, ch, ok; do{ printf("\n Ingresa un numero entero (maximo %u)....: ", UINT_MAX ); ok = scanf("%d", &numero ) == 1 && numero >= 1 && numero <= UINT_MAX ; while ((ch = getchar()) != EOF && ch != '\n'); }while(!ok); printf( "\n Ingreso...: %d", numero ); return 0; }
Saludos. Daniel
|
|
« Última modificación: 10 Abril 2016, 18:18 pm por NOB2014 »
|
En línea
|
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
|
|
|
meaf75
Desconectado
Mensajes: 23
|
Huy me explicas jaja voy en primer semestre y no entiendo mucho lo que hay ahi
|
|
|
En línea
|
|
|
|
LaiaxanIV
Desconectado
Mensajes: 57
|
El código que ha subido NOB2014 está en C. Tiene que estar en c o en c++? Si es en C, ya te explico el código.
|
|
|
En línea
|
|
|
|
meaf75
Desconectado
Mensajes: 23
|
Pues yo estoy trabajado en pseint pero aprendiendo en c++ lo puedo pasar a pseint
|
|
|
En línea
|
|
|
|
LaiaxanIV
Desconectado
Mensajes: 57
|
#include <iostream> using namespace std; int main(){ string n; bool notnum = false; cout << "Ingresa un numero" << endl; while(cin >> n){ for(int i = 0; i < n.size() && !notnum; ++i){ notnum = (n[i]< 48 || n[i]> 57); } if(notnum) cout << "Por favor, ingresa un numero correcto" << endl; else cout << "Numero correcto" << endl; } }
Mirate esto a ver si lo entiendes, si no enviame MP y te explico.
|
|
|
En línea
|
|
|
|
HardForo
Desconectado
Mensajes: 219
HardForo.com
|
El ultimo codigo que se posteó (de @ LaiaxanIV) esta escencialmente bien creo que por un boolean mal te queda en bucle infinito:
Ingresa un numero uu Por favor, ingresa un numero correcto yy Por favor, ingresa un numero correcto 55 <-- es correcto Por favor, ingresa un numero correcto <-- se vuelve a preguntar
Lo he modificado: #include <iostream> #include <stdlib.h> using namespace std; /* Lee un integer por teclado (C++) */ int readint(string msg){ string str_num; bool notnum = true; cout << msg; cin >> str_num; while(notnum){ for(int i = 0; i < str_num.size(); i++){ notnum = (str_num[i]< 48 || str_num[i]> 57); if(notnum){ cout << msg; cin >> str_num; break; } } } return atoi(str_num.c_str()); } int main(){ int n; n = readint("Ingresa un numero: "); printf("Perfecto! el numero ingresado fue: %d",n); return 0; }
Ahora funciona bien y te aclaro que si el numero fuera un numero decimal (float) deberia aceptarse tambien el punto(.)
|
|
« Última modificación: 16 Abril 2016, 05:01 am por boctulus »
|
En línea
|
HardForo: foro de Hardware y programación Se buscan Mods y colaboradores *
|
|
|
HardForo
Desconectado
Mensajes: 219
HardForo.com
|
He intentado traducir el codigo del compañero (que he modificado ligeramente) de C++ a C pero me explota! Alguien podria hacerlo por mi para ver en que fallo ? en C++ me funciona pero en C tengo un problema al pasar un string y querer utilizarlo como const char *Ojala me iluminen
|
|
|
En línea
|
HardForo: foro de Hardware y programación Se buscan Mods y colaboradores *
|
|
|
crack81
Desconectado
Mensajes: 222
|
Hola mirate este ejemplo, en vez de que la funcion readInt lea, valide y regrese la conversion de string a entero Mejor me cree una funcion para validar si un array de char en C seria valido para poder convertilo en un entero Mi funcion lo unico que hace es recorrer la cadena y usando las funciones isdigit que viene en la bibilioteca ctype de C comprobamos que cada caracter es un entero valido Si encontramos algo raro la funcion retorna un cero(false) sino regresa un uno(True) ejemplo: #include <stdio.h> #include <stdlib.h> #include <ctype.h> int isInteger(char possibleNumber[]){ while(*possibleNumber){ if(!isdigit(*possibleNumber ))return 0; possibleNumber++; } return 1; } int main() { //Primer ejemplo char number[]="352353"; if(isInteger(number)) printf("%s","Es numero valido"); else printf("%s","no es un numero valido"); //Segundo ejemplo char number2[20]; printf("%s","\n\nIngrese un valor valido\n"); if(isInteger(number2)) printf("%s","Es numero valido"); else printf("%s","no es un numero valido"); return 0; }
|
|
|
En línea
|
Si C/C++ es el padre de los lenguajes entonces ASM es dios.
|
|
|
DanFire
Desconectado
Mensajes: 24
Si quieres conocerme buscame...
|
int ingressaNumero() {
int l(0); do { cout<< "Ingrese un numero : "; cin>>l; if (cin.fail()) { cout << "Te he pedido un numero , " << "no tonterias!" << endl;
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n'); l=-1; } } while(l<0);
return l;
}
no te olvides de incluir <limits> #include <iostream> using namespace std;
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
como ingresar solo numeros de dos cifras en un textbox
Programación Visual Basic
|
Paula Fernanda
|
3
|
8,463
|
22 Mayo 2010, 14:17 pm
por TheGhost(Z)
|
|
|
¿Como hacer ingresar solo un tipo de dato determinado?
Programación C/C++
|
theluigy13etv
|
1
|
3,610
|
2 Julio 2011, 01:58 am
por BlackZeroX
|
|
|
como ingresar numeros en un menú netbeans
Java
|
daniloops
|
1
|
3,329
|
10 Junio 2014, 03:17 am
por gordo23
|
|
|
Duda verificacion solo letras y numeros!
Programación C/C++
|
LucasNahuel
|
1
|
1,811
|
13 Mayo 2016, 15:59 pm
por fary
|
|
|
Ingresar el signo ‘-’ en un caja de texto que contiene números.- (tkinter)
Scripting
|
El mas antiguo
|
2
|
2,777
|
13 Febrero 2022, 14:01 pm
por El mas antiguo
|
|