elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Como pasar a mayuscula vocales acentuadas ?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Como pasar a mayuscula vocales acentuadas ?  (Leído 4,543 veces)
jesus++

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Como pasar a mayuscula vocales acentuadas ?
« en: 10 Julio 2014, 05:23 am »

tengo esta frase:
la cábala de la señora

quiero que me salga esto
LA CABALA DE LA SEÑORA

este es mi programa usando el codigo ASCII, pero no funciona, me devuelve la ñ y la á en minuscula

#include<stdio.h>
#include<string.h>
#include<conio.h>
int main()
{char cad[100]; int i;
printf("Frase: ");
gets(cad);

for(i=0;i<strlen(cad);i++){
if(cad==160)
cad=cad-95;
else if(cad=='ñ')
cad=cad+1;
else if(cad>=97 && cad<=122)
cad=cad-32;
}
printf("\n%s",cad);
getch();}


En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Como pasar a mayuscula vocales acentuadas ?
« Respuesta #1 en: 10 Julio 2014, 10:09 am »

Nota inicial: El código, mejor si lo pones con las etiquetas GeSHi. Gracias.

No existe una única conversión "número<->carácter", sino que hay muchas. Algunas tablas de conversión son ASCII, UTF-8, UTF-16, las diferentes tablas ANSI...

Esta heterogeneidad explica que en algunas páginas Web o correos electrónicos, a veces aparezcan caracteres raros sustituyendo caracteres acentuados o propios de un lenguaje concreto.

En tu caso, lo que puede suceder es que tu programa no esté usando la codificación ASCII. Puede que esté usando, por ejemplo, UTF-8, con lo que la codificación de la 'á' y la 'ñ' serán diferentes.


En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Como pasar a mayuscula vocales acentuadas ?
« Respuesta #2 en: 10 Julio 2014, 10:14 am »

......................................
este es mi programa usando el codigo ASCII, pero no funciona, me devuelve la ñ y la á en minuscula
..................................

Usa un:

Código
  1. for(i=0;i<strlen(cad);i++)
  2.    printf("%d  ",cad[i]);

para que veas con qué int se corresponden la ñ y la á y ya tá.

¡¡¡¡ Saluditos! ..... !!!!


En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Como pasar a mayuscula vocales acentuadas ?
« Respuesta #3 en: 10 Julio 2014, 10:47 am »

Usa un:

Código
  1. for(i=0;i<strlen(cad);i++)
  2.    printf("%d  ",cad[i]);

para que veas con qué int se corresponden la ñ y la á y ya tá.

Si por ejemplo fuese UTF-8... la codificación de la 'ñ' y la 'á' ocuparían más de un byte.
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Como pasar a mayuscula vocales acentuadas ?
« Respuesta #4 en: 10 Julio 2014, 12:56 pm »

Si por ejemplo fuese UTF-8... la codificación de la 'ñ' y la 'á' ocuparían más de un byte.

He probado y la ñ sigue siendo -92, pero la á no aparece. ¿Qué puedo hacer en este caso?.

Saludos, ¡fenómeno!.

En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Como pasar a mayuscula vocales acentuadas ?
« Respuesta #5 en: 10 Julio 2014, 13:06 pm »

No sabría decirte... a mi me funcionan las dos:

á = -96
ñ = -92

... yo estoy compilando con un compilador de C++, no tengo muy claro hasta que punto influye en este caso.
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Como pasar a mayuscula vocales acentuadas ?
« Respuesta #6 en: 10 Julio 2014, 13:12 pm »

No sabría decirte... a mi me funcionan las dos:

á = -96
ñ = -92

... yo estoy compilando con un compilador de C++, no tengo muy claro hasta que punto influye en este caso.

Es que yo lo puse File enconding "UTF-8 y es donde la á no aparece.  :silbar:

En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Como pasar a mayuscula vocales acentuadas ?
« Respuesta #7 en: 10 Julio 2014, 13:18 pm »

En UTF-8 los valores esperados deberían ser los siguientes:

á: 0xc3 0xa1 - 2 caracteres.
ñ: 0xc3 0xb1 - 2 caracteres.

así pues para poder leer cada carácter necesitas dos lecturas consecutivas de tipo char.
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Como pasar a mayuscula vocales acentuadas ?
« Respuesta #8 en: 12 Julio 2014, 22:42 pm »

Ahora sí:

Citar

LA CABALA DE LA SEÑORA


Código
  1. *****************
  2.  for ( i = 0 ; i < strlen(cad) ; i++ ){
  3.    if( cad[i] == 'á' )
  4.      cad[i] = 65 ;
  5.    else if (cad[i] == 'ñ' )
  6.      cad[i] = 165 ;
  7.    else if( cad[i] == ' ' )
  8.      continue ;
  9.    else if( cad[i] >= 97 && cad[i] <= 122 )
  10.      cad[i] = cad[i] -32 ;
  11.  }
  12. *************************

¡¡¡¡ Saluditos! ..... !!!!


« Última modificación: 12 Julio 2014, 22:46 pm por leosansan » En línea

Miseryk

Desconectado Desconectado

Mensajes: 225


SI.NU.SA U.GU.DE (2NE1 - D-Unit)


Ver Perfil
Re: Como pasar a mayuscula vocales acentuadas ?
« Respuesta #9 en: 16 Julio 2014, 21:38 pm »

Funcionando para pasar de min a may (me sirve para tenerlo en el foro por si lo busco), ahora veo el tema de los tildes.

Código
  1. #include <iostream>
  2. #include <Windows.h>
  3.  
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8. //PRUEBAS
  9. unsigned char asd;
  10.  
  11. asd = 'a'; //97
  12. asd = 'ñ'; //241
  13. asd = 'z'; //122
  14.  
  15. asd = 'A'; //65
  16. asd = 'Ñ'; //209
  17. asd = 'Z'; //90
  18.  
  19. cout << int(asd) << endl;
  20. //PRUEBAS
  21.  
  22. char cad[100];
  23.  
  24. printf("Frase: ");
  25. gets(cad);
  26.  
  27. cout << cad << endl;
  28.  
  29. for(int i = 0; i < strlen(cad); i++)
  30. {
  31. if (int(cad[i]) >= 97 && int(cad[i]) <= 122 || int(cad[i]) == 241)
  32. {
  33. cad[i] = cad[i] - 32;
  34. }
  35. }
  36.  
  37. cout << cad << endl;
  38.  
  39. system("pause");
  40.  
  41. return 0;
  42. }
  43.  
« Última modificación: 16 Julio 2014, 21:39 pm por Miseryk » En línea

Can you see it?
The worst is over
The monsters in my head are scared of love
Fallen people listen up! It’s never too late to change our luck
So, don’t let them steal your light
Don’t let them break your stride
There is light on the other side
And you’ll see all the raindrops falling behind
Make it out tonight
it’s a revolution

CL!!!
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Pasar archivo de texto (.txt) a mayuscula
Java
Electoniko- 4 9,420 Último mensaje 8 Diciembre 2009, 06:16 am
por Electoniko-
Problemas con palabras acentuadas en FEED
PHP
Diabliyo 5 4,580 Último mensaje 23 Abril 2010, 08:28 am
por WHK
[Python] - Texto sin vocales « 1 2 »
Scripting
ChicoMaravilla 18 24,774 Último mensaje 11 Enero 2011, 16:57 pm
por Karcrack
eliminar vocales
Programación C/C++
ALONSOQ 6 11,953 Último mensaje 6 Septiembre 2012, 19:38 pm
por BlackZeroX
Palabras Acentuadas problema al mostrar !
PHP
Diabliyo 9 5,285 Último mensaje 14 Noviembre 2014, 22:52 pm
por R2100
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines