• Martes 30 de Abril de 2024, 21:53

Autor Tema:  Problema Con Un Case  (Leído 1085 veces)

eruelas

  • Miembro activo
  • **
  • Mensajes: 69
  • Nacionalidad: mx
    • Ver Perfil
Problema Con Un Case
« en: Martes 1 de Abril de 2008, 17:02 »
0
KISIERA SABER PORK ME MARCA K EL CASE ESTA FUERA DEL SWITCH  :blink:
Y ME MARKA ERROR DE SINTAXIS NO SE SI ME PUEDAN AYUDAR GRACIAS DE ANTEMANO

EI: Junto mensajes y pongo el codigo entre etiquetas code.

Código: Text
  1.  
  2. #include<conio.h>
  3. #include<stdio.h>
  4. #include<string.h>
  5. void main()
  6. {
  7.  textbackground(1);
  8.  textcolor(BLACK);
  9.  clrscr();
  10.  int a,b,c,d,n,f,x,r,m,y,mat[10][10],mat1[10][6],suma[10][10],resta[10][10],opcion;
  11.  char cad[50],rev[50];
  12.  
  13.  do
  14.  {
  15.   clrscr();
  16.   gotoxy(38,12);
  17.   printf("EXAMEN ");
  18.   gotoxy(1,19);
  19.   printf("(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)");
  20.   gotoxy(30,23);
  21.   printf("1.Suma De Matrices");
  22.   gotoxy(30,25);
  23.   printf("2.Resta De Matrices ");
  24.   gotoxy(30,27);
  25.   printf("3.Palindromo");
  26.   gotoxy(30,29);
  27.   printf("4.Salir ");
  28.   gotoxy(30,47);
  29.   printf("Opcion: ");
  30.   scanf("%i",&opcion);
  31.  
  32.   switch (opcion)
  33.   {
  34.        case 1:textbackground(BLUE);
  35.         clrscr();
  36.         gotoxy(30,12);
  37.         printf("Suma De Matrices");
  38.         gotoxy(8,16);
  39.         printf("(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)");
  40.       printf("cuantos renglones y columnas quieres para las matrizes (max 5x5 y separados por un espacio): ");
  41.   scanf("%i%i",&m,&n);
  42.   clrscr();
  43.   if(m>5)
  44.   {
  45.    gotoxy(5,7);
  46.    printf("­Error: el renglon no debe ser mayor a 5");
  47.   }
  48.   if(n>5)
  49.   {
  50.    gotoxy(5,9);
  51.    printf("­Error: la columna no debe ser mayor a 5");
  52.   }
  53.  }
  54.  while(m>5||n>5);
  55.  for(f=0;f<m;f++)
  56.   for(c=0;c<n;c++)
  57.   {
  58.    printf("dame el numero del %iø renglon y de la %iø columna de la primera matriz: ",f+1,c+1);
  59.    scanf("%i",&mat[f][c]);
  60.   }
  61.  for(f=0;f<m;f++)
  62.  {
  63.   for(c=0;c<n;c++)
  64.    printf("%i\t",mat[f][c]);
  65.   printf("\n\n");
  66.  }
  67.  for(f=0;f<m;f++)
  68.   for(c=0;c<n;c++)
  69.   {
  70.    printf("dame el numero del %iø renglon y de la %iø columna de la segunda matriz: ",f+1,c+1);
  71.    scanf("%i",&mat1[f][c]);
  72.   }
  73.  for(f=0;f<m;f++)
  74.  {
  75.   for(c=0;c<n;c++)
  76.    printf("%i\t",mat1[f][c]);
  77.   printf("\n\n");
  78.  }
  79.  for(f=0;f<m;f++)
  80.   for(c=0;c<n;c++)
  81.    resta[f][c]=mat[f][c]-mat1[f][c];
  82.  printf("la matriz restada es:\n");
  83.  for(f=0;f<m;f++)
  84.  {
  85.   for(c=0;c<n;c++)
  86.    printf("%i\t",resta[f][c]);
  87.   printf("\n\n");
  88.  }
  89. getch();
  90.         break;
  91.        case 2:textbackground(RED);
  92.         clrscr();
  93.         gotoxy(30,12);
  94.         printf("Resta De Matrices");
  95.         gotoxy(8,16);
  96.         printf("(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)");
  97.         gotoxy(30,24);
  98.         printf ("Introduce el valor de m: ");
  99.         scanf("%i",&m);
  100.         printf("Introduce el valor de n: ");
  101.        scanf("%i",&n),
  102.        clrscr();
  103.    for (f=0;f<m;f++)
  104.        {
  105.        for (c=0;c<n;c++)
  106.      {
  107.      printf(" Introdusca los valores para la matriz A en la posicion %d y %d : ",f,c);
  108.      scanf("%d",&mat[f][c]),y++;
  109.      }
  110.        }
  111.        clrscr();
  112.     for(f=0;f<m;f++)
  113.        {
  114.        for(c=0;c<n;c++)
  115.     {
  116.     printf("\n Introdusca los valores para la matriz B en la posicion %d y %d : ",f,c);
  117.     scanf("%d",&mat1[f][c]);
  118.     }
  119.        }
  120.        clrscr();
  121.        printf("El resultado de la resta es: ");
  122.        y=15;
  123.    for (f=0;f<m;f++)
  124.        {
  125.        x=8;
  126.        for (c=0;c<n;c++)
  127.      {
  128.      resta[f][c]=mat[f][c]-mat1[f][c];
  129.      gotoxy(x,y);
  130.      printf(" %d",resta[f][c]);
  131.      x+=6;
  132.      }
  133.      y++;
  134.        }
  135.        getch();
  136.  
  137.  
  138.         break;
  139.        case 3: textbackground(BLACK);
  140.         clrscr();
  141.         gotoxy(30,12);
  142.         printf("Palindromo");
  143.         gotoxy(8,16);
  144.         printf("(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)(*_*)");
  145.         gotoxy(24,18);
  146.        printf("Dame una cadena: ");
  147. gets(cad);
  148. fflush(stdin);
  149. strlwr(cad);
  150. a=strlen(cad);
  151.   for(c=0;c<a;c++)
  152.      {
  153.      for(d=0;d<a;d++)
  154.         {
  155.         if(cad[d]==' ')
  156.     {
  157.     cad[d]=cad[d+1];
  158.     cad[d+1]=' ';
  159.     }
  160.         }
  161.  
  162.      }
  163.   for(d=0;d<a;d++)
  164.      {
  165.      if(cad[d]==' ')
  166.        {
  167.        cad[d]=0;
  168.        }
  169.      }
  170.      a=strlen(cad);
  171.   for(d=0;d<a;d++)
  172.      {
  173.      rev[d]=cad[a-d-1];
  174.      }
  175.   rev[d]='\0';
  176.   b=strcmp(cad,rev);
  177.   if(b==0)
  178.     printf("Es un palindromo");
  179.   else
  180.     printf("No es palindromo");
  181.  
  182.   getch();
  183.  
  184.  
  185.       break;
  186.  
  187.    }
  188.   }
  189.   while(opcion<4);
  190.  
  191.  
  192.  getch();
  193. }
  194.  
  195.  

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: Problema Con Un Case
« Respuesta #1 en: Martes 1 de Abril de 2008, 21:11 »
0
Pues te sobra un parentesis y un while, en el primer case:
Código: Text
  1.  
  2.  }
  3. while(m>5||n>5);
  4.  
  5.  

Aunque sospecho que lo que quieres es validar la entrada, en cuyo caso te falta un "do {" y deberias tener algo como:

Código: Text
  1.  
  2.             do
  3.             {
  4.                 printf("cuantos renglones y columnas quieres para las matrizes (max 5x5 y separados por un espacio): ");
  5.                 scanf("%i%i",&m,&n);
  6.                 clrscr();
  7.                 if (m>5)
  8.                 {
  9.                     gotoxy(5,7);
  10.                     printf("­Error: el renglon no debe ser mayor a 5");
  11.                 }
  12.                 if (n>5)
  13.                 {
  14.                     gotoxy(5,9);
  15.                     printf("­Error: la columna no debe ser mayor a 5");
  16.                 }
  17.             }
  18.             while (m>5||n>5);
  19.  
  20.  

Aunque recomendaria que validaras dato por dato, y no los dos al mismo tiempo, porque si al validar uno por uno, si el usuario solo se equivoca en uno, repites ese uno, en cambio, validando los dos al mismo tiempo, si se equivoco en el primero y no en el segundo, haces que vuelva a leer los dos, y tal vez la siguiente se equivoque en el segundo y no en el primero.

Otro consejo, indenta en tu codigo, tus condiciones y tus ciclos, eso hace que sea mas facil ver a simple vista si omites o escribes de  mas un corchete o alguna otra cosa, como en este caso.

Saludos :hola:

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

eruelas

  • Miembro activo
  • **
  • Mensajes: 69
  • Nacionalidad: mx
    • Ver Perfil
Re: Problema Con Un Case
« Respuesta #2 en: Miércoles 2 de Abril de 2008, 16:19 »
0
sale gracias ya lo tengo heheh aunk me kitaron puntos por no usar strtok  ;) jejeje pero me funciono a la perfeccion grx[/size]