#include<conio.h>
#include<stdio.h>
#include<string.h>
void main()
{
 textbackground(1);
 textcolor(BLACK);
 clrscr();
 int a,b,c,d,n,f,x,r,m,y,mat[10][10],mat1[10][6],suma[10][10],resta[10][10],opcion;
 char cad[50],rev[50];
 
 do
 {
  clrscr();
  gotoxy(38,12);
  printf("EXAMEN ");
  gotoxy(1,19);
  printf("(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)");
  gotoxy(30,23);
  printf("1.Suma De Matrices");
  gotoxy(30,25);
  printf("2.Resta De Matrices ");
  gotoxy(30,27);
  printf("3.Palindromo");
  gotoxy(30,29);
  printf("4.Salir ");
  gotoxy(30,47);
  printf("Opcion: ");
  scanf("%i",&opcion);
 
  switch (opcion)
  {
       case 1:textbackground(BLUE);
        clrscr();
        gotoxy(30,12);
        printf("Suma De Matrices");
        gotoxy(8,16);
        printf("(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)");
      printf("cuantos renglones y columnas quieres para las matrizes (max 5x5 y separados por un espacio): ");
  scanf("%i%i",&m,&n);
  clrscr();
  if(m>5)
  {
   gotoxy(5,7);
   printf("Error: el renglon no debe ser mayor a 5");
  }
  if(n>5)
  {
   gotoxy(5,9);
   printf("Error: la columna no debe ser mayor a 5");
  }
 }
 while(m>5||n>5);
 for(f=0;f<m;f++)
  for(c=0;c<n;c++)
  {
   printf("dame el numero del %iø renglon y de la %iø columna de la primera matriz: ",f+1,c+1);
   scanf("%i",&mat[f][c]);
  }
 for(f=0;f<m;f++)
 {
  for(c=0;c<n;c++)
   printf("%i\t",mat[f][c]);
  printf("\n\n");
 }
 for(f=0;f<m;f++)
  for(c=0;c<n;c++)
  {
   printf("dame el numero del %iø renglon y de la %iø columna de la segunda matriz: ",f+1,c+1);
   scanf("%i",&mat1[f][c]);
  }
 for(f=0;f<m;f++)
 {
  for(c=0;c<n;c++)
   printf("%i\t",mat1[f][c]);
  printf("\n\n");
 }
 for(f=0;f<m;f++)
  for(c=0;c<n;c++)
   resta[f][c]=mat[f][c]-mat1[f][c];
 printf("la matriz restada es:\n");
 for(f=0;f<m;f++)
 {
  for(c=0;c<n;c++)
   printf("%i\t",resta[f][c]);
  printf("\n\n");
 }
getch();
        break;
       case 2:textbackground(RED);
        clrscr();
        gotoxy(30,12);
        printf("Resta De Matrices");
        gotoxy(8,16);
        printf("(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)");
        gotoxy(30,24);
        printf ("Introduce el valor de m: ");
        scanf("%i",&m);
        printf("Introduce el valor de n: ");
       scanf("%i",&n),
       clrscr();
   for (f=0;f<m;f++)
       {
       for (c=0;c<n;c++)
     {
     printf(" Introdusca los valores para la matriz A en la posicion %d y %d : ",f,c);
     scanf("%d",&mat[f][c]),y++;
     }
       }
       clrscr();
    for(f=0;f<m;f++)
       {
       for(c=0;c<n;c++)
    {
    printf("\n Introdusca los valores para la matriz B en la posicion %d y %d : ",f,c);
    scanf("%d",&mat1[f][c]);
    }
       }
       clrscr();
       printf("El resultado de la resta es: ");
       y=15;
   for (f=0;f<m;f++)
       {
       x=8;
       for (c=0;c<n;c++)
     {
     resta[f][c]=mat[f][c]-mat1[f][c];
     gotoxy(x,y);
     printf(" %d",resta[f][c]);
     x+=6;
     }
     y++;
       }
       getch();
 
 
        break;
       case 3: textbackground(BLACK);
        clrscr();
        gotoxy(30,12);
        printf("Palindromo");
        gotoxy(8,16);
        printf("(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)");
        gotoxy(24,18);
       printf("Dame una cadena: ");
gets(cad);
fflush(stdin);
strlwr(cad);
a=strlen(cad);
  for(c=0;c<a;c++)
     {
     for(d=0;d<a;d++)
        {
        if(cad[d]==' ')
    {
    cad[d]=cad[d+1];
    cad[d+1]=' ';
    }
        }
 
     }
  for(d=0;d<a;d++)
     {
     if(cad[d]==' ')
       {
       cad[d]=0;
       }
     }
     a=strlen(cad);
  for(d=0;d<a;d++)
     {
     rev[d]=cad[a-d-1];
     }
  rev[d]='\0';
  b=strcmp(cad,rev);
  if(b==0)
    printf("Es un palindromo");
  else
    printf("No es palindromo");
 
  getch();
 
 
      break;
 
   }
  }
  while(opcion<4);
 
 
 getch();
}