Programación General > C/C++

 Cambiar Mayusculas Minusculas

(1/2) > >>

sagoher:
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 !!

Mollense:
Bueno, pero ¿Cuál es el problema?

sagoher:
que no cambia la ñ de minuscula a mayuscula

ProfesorX:
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 --- #include&#60;stdio.h&#62; void minmay(char vector[]); int main(){    char cadena[100];    printf(&#34;Introduce una cadena:&#34;);    gets(cadena);    minmay(cadena); /* Llama a la funcion */    printf (&#34;En Mayusculas: %s&#092;n&#34;, cadena);    getchar();    return 0;} void minmay(char vector[]){    int i;    int desp='a'-'A';     for (i=0;vector[i]!='&#092;0';++i)    {        if (vector[i] == -92)        {            vector[i] = -91;        }         if (vector[i]&#62;='a'&&vector[i]&#60;='z')        {            vector[i]=vector[i]-desp;        }    }}  
Si necesitas sabes que numero coincide con que letra, podrias utilizar este pequeño ciclo.


--- Código: Text ---     char j;    for (j = -128; j &#60;= 127; j++)    {        printf(&#34;%c = %d&#092;n&#34;, j, j);        if (j == 127)        break;    }  
Saludos 8)

floppy22:
te resolvieron tu problema...iba a aportar pero se me adelantaron... :o  :whistling:

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa