Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/10/2015, 11:49
maariotonelli
 
Fecha de Ingreso: octubre-2015
Mensajes: 1
Antigüedad: 8 años, 6 meses
Puntos: 0
Exclamación Validación de numeros (if-else-switch) en programa C

Hola, soy nuevo y tengo un problema, quisiera agregar condiciones if en un programa, para evitar que se utilicen letras y unicamente numeros, el problema es que no se me ocurre como hacerlo.. me pueden ayudar? Anexo el programa.


#include <stdio.h>
int valor,opcion,num,i=0,j=0;
int matriz[4][4];

void menu(void)
{
printf("\nMENU");
printf("\n1.Dar Valores a Matriz 4*4. [Ojo: Recuerde que dichos valores que\nrellenan la matriz deben tener un significado, revisar manual].\n");
printf("\n2.Imprimir Matriz.\n");
printf("\n3.Seleccionar valor a comparar.\n");
printf("\n4.Salir del programa.\n\n");
}

void DatosMatriz (int num) //Aqui debe de haber una condicion, que solo acepte numeros.
{

for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
printf("Ingrese el valor a [%i][%i] en la matriz:",i,j);
scanf("%i",&matriz[i][j]); //Condicionar si se escribe algun char imprima msj de error.
}
printf("\n");
}

}

void impresionMatriz (void)
{

for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
printf("||%i|| ",matriz[i][j]);
}
printf("\n");
}
}

int compara(int valor){
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{

if(valor==matriz[i][j])
{
printf("\nDato existente en la posicion [%d][%d]. \n\n",i,j);
}
}
}

}

int main (){
printf(" \n >>>Mundo de tarski<<<\n");
printf("Buenas tardes/dias/noches, este programa funciona de la siguiente manera:\n\n...Primeramente es una matriz que recibe valores enteros, lo cual significa\n");
printf("que cada valor n, tiene un significado o equivalencia, por ejemplo:\n 1==azul, 2==rojo.. etc para asi poder comparar la matriz con el problema \ndel usuario y saber si es verdadero o no el ejercicio.");
printf("\n\nDicha tabla de equivalencias se encuentra en el manual.\n\nPara dar inicio al programa debe seleccionar entre una de la siguientes\nopciones[de preferencia seguir el orden].\n\n");
printf("Las equivalencias se encuentran en el manual, los cuales son\n3 ejercicios.\n\n");
do{
menu();
printf("\nElija una opcion: ");
scanf("%i",&opcion);

if (opcion<=0 && opcion>=10) // Aqui como condiciono que NO ACEPTE letras o caracteres y solo numeros para el ciclo switch?
{
printf("opcion no valida\n\n\n");
}
else
{
switch (opcion)
{
case 1: DatosMatriz(num);
break;
case 2: printf("\nLa matriz impresa es:\n\n");
impresionMatriz ();
break;
case 3: printf("Asigne un valor a comparar: \n");
scanf("%i*%i", &valor);
compara (valor);
if (valor <= 10 && valor >=0)
{

if (valor==5)
{
printf("\n\nEJERCICIO '{Para todos}t, Cuadrado (t) v Rojo (t)' == 5 SI SE ENCUENTRA EN MATRIZ\n\n\n");
}
if (valor==6)
{
printf("\n\nEJERCICIO '{Para todos}t, Triangulo(t)v Rojo(t)' == 6 SI SE ENCUENTRA EN MATRIZ\n\n\n");
}
if (valor==7)
{
printf("\n\nEJERCICIO '{Existe al menos}t, Cuadrado(t)%c Rojo(t)' == 7 SI SE ENCUENTRA EN MATRIZ\n\n\n",94);
} else {printf("Ejercicio seleccionado en manual no encontrado en matriz\n\n\n");}
}
break;
default:printf("\n\n\n");
}


}

}while(opcion!=4);
printf("\n\n\nGracias por usar el programa! Vuelva pronto!!!\n\n");


return 0;
}


GRACIAS!