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 - Jurott1

#1
int entrenumeros(num1,num2){
int i=0,resp;
char respuesta[15];

do{
    printf("Introduzca un numero entre %i y %i:\n",num1, num2);
    fgets(respuesta,sizeof(respuesta),stdin);
   
    for(i=0; respuesta[i] != '\0'; i++){ //lee los caracteres de uno en uno.
   
        if (isdigit(respuesta[i])){ //Si es un digito lo pone en la variable resp
            resp=atoi(respuesta);
           
            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
               break;
               }
            if((resp<num1 || resp>num2)){ //Si el numero no esta entre los parametros muestra el mensaje
            printf("Has realizado una seleccion no valida\n");
            break;
            }
        }
       
        if (isalpha(respuesta[i])){ //si es un caracter muestra el mensaje
        printf("Has realizado una seleccion no valida\n");
        break;
        }
     }
} while (!(resp>=num1 && resp<=num2)); //Solo sale si el numero introducido se encuentra entre los parametros puestos por nosotros.

return resp;
}     


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
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:

if(isdigit(p)){
....
}


como haría para saber si ese número que me han dado es uno que esté entre el 0 y el 10 ?
#3

#include <stdio.h>
#include <ctype.h>

int main(){
 int i=0,j=0,contador=0,resul;
 char respuesta[50],p;
 
 do{
   
 printf ("Introduzca un numero entre 0 y 10\n");
 fgets(respuesta,sizeof(respuesta),stdin);
 
 for(j=0;respuesta[i] != '\0'; j++){
   contador++;
   resul=contador;
 }
 } while(resul>50); */Deberia preguntar todo el rato por una cadena que tenga menos de 50 caracteres*/
   
*/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
o saltos de linea debe decir que es incorrecto , en estos casos debemos pedir otra vez una cadena*/
 for(i=0;respuesta[i] != '\0';i++){
   p=respuesta[i];

   if ((0<=p<=10 && isdigit(p))) {
     printf("bien\n");
     break;
   }

   if ((p<0 || p>10) && isdigit(p))
  printf ("mal\n");

   if(isalpha(p)){
     printf("incorrecto\n");
   break;
   }
       
 }
 return 0;
}
#4
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 ?