D.A.I (Trassierra, Córdoba)
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.

D.A.I (Trassierra, Córdoba)

D.A.I (Trassierra, Córdoba)
 
ÍndiceÍndice  Últimas imágenesÚltimas imágenes  BuscarBuscar  RegistrarseRegistrarse  ConectarseConectarse  

 

 Para los ultradetallistas del Dev C++

Ir abajo 
5 participantes
AutorMensaje
JoseCJ
Aprendiz de foro
Aprendiz de foro



Cantidad de envíos : 10
Fecha de inscripción : 28/10/2008

Para los ultradetallistas del Dev C++ Empty
MensajeTema: Para los ultradetallistas del Dev C++   Para los ultradetallistas del Dev C++ Icon_minitimeLun Nov 03, 2008 9:53 pm

En mi ardua busqueda por encontrar como colocar tildes en Dev C++ encontre una tabla en la que aparecía como colocar las tildes y poder usar ciertos simbolos que solemos utilizar en castellano. La tabla es la siguiente:
ñ --> printf("\xA4");
Ñ --> printf("\xA5");
á --> printf("\xA0");
é --> printf("\x82");
í --> printf("\xA1");
ó --> printf("\xA2");
ú --> printf("\xA3");
¿ --> printf("\xA8");
¡(exclamación) --> printf("\xAD");


-Los números y letras que aparecen despúes de \x es el código ASCII de las letras pero en hexadecimal

P.D.: No he conseguido encontar las vocales tildadas en mayúscula. Si alguien se interesa y las encuentra, posteadlas.
P.D.2: Si alguno conoce un método más sencillo, "idem de lo mismo".
Volver arriba Ir abajo
Admin
Admin
Admin



Cantidad de envíos : 40
Fecha de inscripción : 24/10/2008

Para los ultradetallistas del Dev C++ Empty
MensajeTema: Interesante   Para los ultradetallistas del Dev C++ Icon_minitimeLun Nov 03, 2008 10:24 pm

Muy interesante, estoy trabajando en una librería para que esto sea hecho automáticamente, si quereis uniros al proyecto
Volver arriba Ir abajo
https://daitrassierra.foroes.org
JoseCJ
Aprendiz de foro
Aprendiz de foro



Cantidad de envíos : 10
Fecha de inscripción : 28/10/2008

Para los ultradetallistas del Dev C++ Empty
MensajeTema: Re: Para los ultradetallistas del Dev C++   Para los ultradetallistas del Dev C++ Icon_minitimeLun Nov 03, 2008 11:43 pm

Se me ha ocurrido que, para solventar el conflicto que causan algunos de los codigos,(vease el ejemplo de "caía", que, teoricamente seria "ca\xA1a" y el compilador toma \xA1a como un caracter diferente) hacer dos printf donde en el primero se deja la palabra a medias (cai-->ca\xA1) y el siguiente se iniciaría con el resto de la palabra(a) obviamente sin utilizar un \n

¡Ojo! Es solo una idea, aún no la he probado.
Volver arriba Ir abajo
Edu
Grado2(EDVAC)
Grado2(EDVAC)
Edu


Cantidad de envíos : 82
Fecha de inscripción : 30/10/2008

Para los ultradetallistas del Dev C++ Empty
MensajeTema: Re: Para los ultradetallistas del Dev C++   Para los ultradetallistas del Dev C++ Icon_minitimeMar Nov 04, 2008 12:32 am

Habría que probarlo Jose. Mañana si quieres lo hacemos.
Volver arriba Ir abajo
juan
Maestro de código
Maestro de código
juan


Cantidad de envíos : 83
Fecha de inscripción : 25/10/2008
Edad : 36

Para los ultradetallistas del Dev C++ Empty
MensajeTema: Re: Para los ultradetallistas del Dev C++   Para los ultradetallistas del Dev C++ Icon_minitimeMar Nov 04, 2008 2:28 pm

me apunto al proyecto de crear la libreria
Volver arriba Ir abajo
alejandrocaro35
Aprendiz de foro
Aprendiz de foro



Cantidad de envíos : 1
Fecha de inscripción : 24/07/2011

Para los ultradetallistas del Dev C++ Empty
MensajeTema: Colocar tildes y demás símbolos en C y C++   Para los ultradetallistas del Dev C++ Icon_minitimeDom Jul 24, 2011 3:17 am

C y C++ son lenguajes americanos, por lo tanto están pensados para mostrar y/o ingresar texto en inglés, y este carece de acentos, de signo de apertura de exclamación o de interrogación, letras acentuadas, por esa razón a todos esos caracteres con esta característica los toma como símbolos, el compilador de C y C++ los ve como símbolos. Eso ocurre también con demás caracteres y letras en otros idiomas distintos al inglés, como letras con circunflejo, con cedilla, o con cualquier símbolo fonético sobre una letra o debajo de esta que no pertenezca al alfabeto inglés.

Situación problema:

Queremos colocar, por ejemplo, la u con tilde para que en tiempo de ejecución se muestre, por ejemplo, la palabra "número", pero cuando ejecutamos por pantalla nos queda "n-mero", palabra con falta.

Para colocar tildes y demás letras con algún tipo de acentuación en el texto que se quiere mostrar en tiempo de ejecución se debe hacer lo siguiente:

Por identificador de variable carácter:

Una de las formas de colocar tildes y demás acentos es utilizar un identificador de variables del tipo carácter y colocar al final el código ASCII de dicho carácter:

Ej.:
Código:
printf("Hay un %crbol, que mat%c a un colibr%c.",160,162,161);

Donde %c es el identificador de variable, en este caso c de carácter, y 160 que es el código ASCII del símbolo á

Otros símbolos:

á:
Código:
printf("%c",160);
é:
Código:
printf("%c",130);
í:
Código:
printf("%c",161);
ó:
Código:
printf("%c",162);
ú
Código:
printf("%c",163);
ñ:
Código:
printf("%c",164);
º:
Código:
printf("%c",248);
¡:
Código:
printf("%c",173);
¿:
Código:
printf("%c",168);

Por código hexadecimal:

Otra forma que tenemos para colocar tildes es la siguiente:

Usamos la siguiente fórmula:

\xnn

donde \ en este caso es el carácter que le indica a C++ que vamos a colocar una expresión de llamado, x de hexadecimal y nn es el número en hexadecimal del carácter ASCII correspondiente a dicho símbolo.

Ej.:
Buscamos en código ASCII correspondiente al símbolo "ú" que es 163. Luego, ese código lo convertimos a hexadecimal que sería a3 y lo ponemos sustituyendo en la fórmula al nn y nos queda \xa3. Esto le ordena a C que llame al código ASCII en hexadecimal y cargue el símbolo en tiempo de ejecución.
Esto lo colocamos sustituyendo el símbolo por su correspondiente en la palabra que contenga el símbolo
Ej.: en tiempo de diseño queda así: n\xa3mero
Compilamos y en tiempo de ejecución nos queda "número"

Otros símbolos:
á:
Código:
printf("\xA0");
é:
Código:
printf("\x82");
í:
Código:
printf("\xA1");
ó:
Código:
printf("\xA2");
ú
Código:
printf("\xA3");
ñ:
Código:
printf("\xA4");

Letras mayúsculas:
Ó
Código:
printf("\xE0");
Ú
Código:
printf("\xE9");

Símbolo de grado:
º:
Código:
printf("\xF8");
¡:
Código:
printf("\xAD");
¿:
Código:
printf("\xA8");

Conflictos de carácter:

Pueden existir conflictos de carácter, cuando el compilador interpreta la siguiente letra de la palabra como parte del código hexadecimal, esa secuencia no se corresponde con ningún símbolo ASCII, y el compilador de C o C++ no entiende a que símbolo queremos llamar, por eso muestra la siguiente advertencia en el mensaje de construcción: warning: hex escape sequence out of range (advertencia: secuencia hex [hexadecimal] fuera de rango).

Este error se puede solventar realizando dos printf donde en el primero se deja la palabra a medias (cai-->ca\xA1) y el siguiente se iniciaría con el resto de la(s) palabra(s) sin utilizar un \n.
Ej:

Código:
printf("No existe ra\xA1");

Código:
printf("ces reales");

otra forma de escribir lo mismo sería:

Código:
printf("No existe ra\xA1"), printf("ces reales");

Concatenamos una cadena de texto con el llamado al símbolo con la otra cadena de texto con el carácter, que es un y de concatenación para que se muestren concatenados ambas cadenas de texto en el tiempo de ejecución.

Otra forma de corregir este error es poner la expresión \xnn entre comillas dobles:

Código:
printf("No existen ""ra\xA1""ces reales");

De estas dos formas se evitan los posibles conflictos de carácter que ocurren en C y C++

Por símbolo que devuelven letras acentuadas:

También existen ciertos símbolos que el compilador de C y C++ los interpreta como letras acentuadas o con chiu:

á:
Código:
printf(" "); //(nbsp -espacio sin separación-, este espacio especial se despliega en pantalla escribiendo alt+255)
Á
Código:
printf("µ"); //(mi -letra griega minúscula-, esta letra griega se despliega en pantalla escribiendo alt+230)
é:
Código:
printf(""); //(no conozco símbolo ascii que devuelva una é)
í:
Código:
printf("¡"); //escribir signo de apertura de exclamación
ó:
Código:
printf("¢"); //El símbolo ¢ se despliega en pantalla escribiendo alt+189
ú:
Código:
printf("£"); //El símbolo £ se despliega en pantalla escribiendo alt+156
ñ:
Código:
printf("¤"); //El símbolo ¤ se despliega en pantalla escribiendo alt+207

Símbolo de grado:
º:
Código:
printf("§"); //El símbolo ø se despliega en pantalla escribiendo alt+0167
¡:
Código:
printf(""); //(no conozco símbolo que devuelva un ¡)
¿:
Código:
printf("¨"); //El símbolo ¨ (diéresis) se despliega en pantalla escribiendo alt+249

Mediante librería:

Hay una librería que se puede utilizar para que se puedan interpretar por consola correctamente los signos que
escribimos en el procesador de texto, llamada locale e indicándole en el main el idioma con que escribimos.

1) Declaramos la librería locale.h, por ejemplo después del último #include

2) Configuramos el idioma que queremos utilizar para escribir los textos, en este caso español escribiendo lo siguiente dentro del main:

Código:
setlocale(LC_CTYPE, "Spanish");

En caso de que querer utilizar otro idioma, sustituimos Spanish por el nombre en inglés del idioma que queremos
utilizar, sin importar ni las mayúsculas ni las minúsculas.

Ejemplo:

Código:
#include <stdio.h>
#include <locale.h>

int main()
{
    setlocale(LC_CTYPE, "Spanish");
    printf("Hay un árbol que mató a un colibrí");
    return 0;
}

Y de esta forma los símbolos se interpretan correctamente en consola.


Última edición por alejandrocaro35 el Miér Mar 24, 2021 9:09 pm, editado 1 vez (Razón : Corrección de redacción, aclarando aún más las instrucciones)
Volver arriba Ir abajo
Contenido patrocinado





Para los ultradetallistas del Dev C++ Empty
MensajeTema: Re: Para los ultradetallistas del Dev C++   Para los ultradetallistas del Dev C++ Icon_minitime

Volver arriba Ir abajo
 
Para los ultradetallistas del Dev C++
Volver arriba 
Página 1 de 1.
 Temas similares
-
» gcc (compilador GNU) para windows para los que no les guste el Borland ni el dev
» Ayuda para el examen de ORACLE
» Imagen para ejercicio de los semaforos
» Para la clase de Juan Miguel
» COMPLEMENTOS EXTRASALARIALES (para quien no lo tenga)

Permisos de este foro:No puedes responder a temas en este foro.
D.A.I (Trassierra, Córdoba) :: PLE-
Cambiar a:  
Ante la inminente, lenta, cercana e inexorable finalización de su vida útil. Propongo la plataforma: !Salvemos al foro! Salvando el foro estás contribuyendo en la lucha del cambio climático, en la reproducción del lince ibérico, salvas la amazonia y con cada visita estás alimentando a un pobre informático:

!Por un foro DAI para nuestros hijos!
Le quedan 20 dias al foro, !actúa!

Get your own Chat Box! Go Large!
Situación actual en cordoba aeropuerto

Free counter and web stats
Foros gratis en ForoActivo | ©phpBB | Foro gratis de asistencia | Denunciar un abuso | foro gratis