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

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / Re: Cadena de caracteres en C en: 1 Mayo 2017, 23:37 pm
Código
  1. int entrenumeros(num1,num2){
  2. int i=0,resp;
  3. char respuesta[15];
  4.  
  5. do{
  6.    printf("Introduzca un numero entre %i y %i:\n",num1, num2);
  7.    fgets(respuesta,sizeof(respuesta),stdin);
  8.  
  9.    for(i=0; respuesta[i] != '\0'; i++){ //lee los caracteres de uno en uno.
  10.  
  11.        if (isdigit(respuesta[i])){ //Si es un digito lo pone en la variable resp
  12.            resp=atoi(respuesta);
  13.  
  14.            if ((resp>=num1 && resp<=num2)){ //Si resp esta entre los dos numeros que nosotros ponemos como parametros es correcto y sale del for y del do-while, retornando el valor de resp al programa principal
  15.               break;
  16.               }
  17.            if((resp<num1 || resp>num2)){ //Si el numero no esta entre los parametros muestra el mensaje
  18.            printf("Has realizado una seleccion no valida\n");
  19.            break;
  20.            }
  21.        }
  22.  
  23.        if (isalpha(respuesta[i])){ //si es un caracter muestra el mensaje
  24.        printf("Has realizado una seleccion no valida\n");
  25.        break;
  26.        }
  27.     }
  28. } while (!(resp>=num1 && resp<=num2)); //Solo sale si el numero introducido se encuentra entre los parametros puestos por nosotros.
  29.  
  30. return resp;
  31. }      

He hecho este codigo pero tengo un problema, ahora los parametros introducidos a la funcion los damos nosotros y el dato que el usuario nos de debe estar entre num1 y num2, el problema es cuando ponen una cadena del tipo "2ASKDASDL" que lee primero el 2 pero ignora el resto de la cadena (cosa que deberia dar error y mostrar mensaje de seleccion no valido).
2  Programación / Programación C/C++ / Re: Cadena de caracteres en C en: 1 Mayo 2017, 18:41 pm
El problema es que necesito saber si la cadena introducida por el usuario es mayor de 50 caracteres para decirle que la longitud es excesiva y pedirle que la vuelva a introducir.

Si hiciese la comprobación primero de si es un número con:
Código
  1. if(isdigit(p)){
  2. ....
  3. }

como haría para saber si ese número que me han dado es uno que esté entre el 0 y el 10 ?
3  Programación / Programación C/C++ / Re: Cadena de caracteres en C en: 1 Mayo 2017, 16:33 pm
Código
  1. #include <stdio.h>
  2. #include <ctype.h>
  3.  
  4. int main(){
  5.  int i=0,j=0,contador=0,resul;
  6.  char respuesta[50],p;
  7.  
  8.  do{
  9.  
  10.  printf ("Introduzca un numero entre 0 y 10\n");
  11.  fgets(respuesta,sizeof(respuesta),stdin);
  12.  
  13.  for(j=0;respuesta[i] != '\0'; j++){
  14.    contador++;
  15.    resul=contador;
  16.  }
  17.  } while(resul>50); */Deberia preguntar todo el rato por una cadena que tenga menos de 50 caracteres*/
  18.  
  19. */Una vez que la cadena sea del tamanhoo correcto tenemos que ver que cumpla: ser un digito entre 0 y 10, si es otra cosa, ya sea otro numero, letras, blancos
  20. o saltos de linea debe decir que es incorrecto , en estos casos debemos pedir otra vez una cadena*/
  21.  for(i=0;respuesta[i] != '\0';i++){
  22.    p=respuesta[i];
  23.  
  24.    if ((0<=p<=10 && isdigit(p))) {
  25.      printf("bien\n");
  26.      break;
  27.    }
  28.  
  29.    if ((p<0 || p>10) && isdigit(p))
  30.   printf ("mal\n");
  31.  
  32.    if(isalpha(p)){
  33.      printf("incorrecto\n");
  34.    break;
  35.    }
  36.  
  37.  }
  38.  return 0;
  39. }
  40.  
4  Programación / Programación C/C++ / Cadena de caracteres en C en: 1 Mayo 2017, 02:28 am
Buenas,

el problema que tengo es que necesito hacer una función que va a recibir una cadena de 50 caracteres pero solo debe aceptar números del 1 al 10, cualquier otra cadena ya sea un número más alto de 10, letras o una cadena vacía(que no se introduzca nada o con espacios) debe decir que da un error.

Empecé el programa y conseguí que leyese de 0 al 9 pero lo hice un poco rudimentario entonces el que utilicé no puedo modificarlo para leer dos cifras ya que me basé en leer y guardar la diferencia entre leer el principio y final de la cadena y colocar un if para que se acomodase entre el 0 y el 9, pero no me sirve para cifras doble(en este caso solo el 10). Alguna idea ?
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines