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!