SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: sagoher en Sábado 1 de Marzo de 2008, 15:41

Título: Cambiar Mayusculas Minusculas
Publicado por: sagoher en Sábado 1 de Marzo de 2008, 15:41
Hola! y gracias de antemano! os cuento, tengo un problema con un programiya que estoy haciendo, se trata de cambiar una cadena de caracteres de minusculas a mayusculas teniendo en cuenta la ñ, y es aqui donde surge mi problema, os copio aqui el codigo por si alguien puede ayudarme:

#include<stdio.h>
#include<conio.h>

   void minmay(unsigned char vector[]);

    void main()
   {
      char cadena[100];
      printf("Introduce una cadena:");
      gets(cadena);
      minmay(cadena); /* Llama a la funcion */
      printf ("En Mayusculas: %s\n", cadena);
      getch();
   }

    void minmay(unsigned char vector[])
   {
      int i;
      int desp='a'-'A';
      for (i=0;vector!='\0';++i)
      {
         if (vector=='ñ')
            vector='Ñ';
     
         if(vector>='a'&&vector<='z')
         {
            vector=vector-desp;
         }
      }
   
   }

gracias otra vez !!
Título: Re: Cambiar Mayusculas Minusculas
Publicado por: Mollense en Sábado 1 de Marzo de 2008, 18:15
Bueno, pero ¿Cuál es el problema?
Título: Re: Cambiar Mayusculas Minusculas
Publicado por: sagoher en Sábado 1 de Marzo de 2008, 20:31
que no cambia la ñ de minuscula a mayuscula
Título: Re: Cambiar Mayusculas Minusculas
Publicado por: ProfesorX en Domingo 2 de Marzo de 2008, 04:20
El problema tiene que ver con las codificaciones ASCII, que windows usa ISO 8859-1 y MS-DOS utiliza la pagina de codigos 437 u 850, entonces, si tu editas tu archivo en windows, el codigo ASCII en windows no coincide con el codigo en MS-DOS y viceversa.

Podrias probar comparandolo como si fuera un numero, en lugar de con una letra. El siguiente codigo funciono bien en mi windows, utilizando Code::Blocks/Mingw, tal vez funcione en el tuyo. Por cierto, no utilices la libreria conio de borland, no es portable.

Código: Text
  1.  
  2. #include&#60;stdio.h&#62;
  3.  
  4. void minmay(char vector[]);
  5.  
  6. int main()
  7. {
  8.     char cadena[100];
  9.     printf(&#34;Introduce una cadena:&#34;);
  10.     gets(cadena);
  11.     minmay(cadena); /* Llama a la funcion */
  12.     printf (&#34;En Mayusculas: %s&#092;n&#34;, cadena);
  13.     getchar();
  14.     return 0;
  15. }
  16.  
  17. void minmay(char vector[])
  18. {
  19.     int i;
  20.     int desp='a'-'A';
  21.  
  22.     for (i=0;vector[i]!='&#092;0';++i)
  23.     {
  24.         if (vector[i] == -92)
  25.         {
  26.             vector[i] = -91;
  27.         }
  28.  
  29.         if (vector[i]&#62;='a'&&vector[i]&#60;='z')
  30.         {
  31.             vector[i]=vector[i]-desp;
  32.         }
  33.     }
  34. }
  35.  
  36.  

Si necesitas sabes que numero coincide con que letra, podrias utilizar este pequeño ciclo.

Código: Text
  1.  
  2.     char j;
  3.     for (j = -128; j &#60;= 127; j++)
  4.     {
  5.         printf(&#34;%c = %d&#092;n&#34;, j, j);
  6.         if (j == 127)
  7.         break;
  8.     }
  9.  
  10.  

Saludos 8)
Título: Re: Cambiar Mayusculas Minusculas
Publicado por: floppy22 en Domingo 2 de Marzo de 2008, 04:25
te resolvieron tu problema...iba a aportar pero se me adelantaron... :o  :whistling:
Título: Re: Cambiar Mayusculas Minusculas
Publicado por: sagoher en Domingo 2 de Marzo de 2008, 12:16
funcionó perfectamente!! muchas gracias
Título: Re: Cambiar Mayusculas Minusculas
Publicado por: crixxus en Lunes 7 de Marzo de 2011, 18:38
Gracias gente de solo codigo. Esa respuesta me ayudo con un ejercicio de la U  :beer: