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

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Reemplazar carácteres en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Reemplazar carácteres en C  (Leído 5,818 veces)
ElGabi80

Desconectado Desconectado

Mensajes: 10



Ver Perfil
Reemplazar carácteres en C
« en: 13 Diciembre 2014, 06:00 am »

Hola quisiera remplazar  'ny' por una ñ

Ejemplo: si pongo: 'canyon' se me cambie por --> cañon, pero solo y unicamente cuando ponga 'ny', ni 'n' ni 'y'.

tengo una idea pero no funciona correctamente:

Código:
#include <stdio.h>

#include <locale.h> //libreria para mostrar los caracteres especiales


int main()
{
setlocale(LC_ALL, "spanish"); //idioma del caracter especial

int y, j;
char cadena[20], temporal, cont[2]={'n','y'}


puts ("Introduce una cadena de caracteres");
gets (cadena);

for (y=0;cadena[y]!='\0';y++){

for (j=0;cadena[j]!='\0';j++){

if (cadena[y] == cont[j]){

cadena[y]='ñ';
}
}
}  

compila perfectamente esta 'idea' pero solo me cambia la 'n' por una 'ñ' y yo busco que me cambie la 'ny' por la 'ñ'.

Gracias a todos.


« Última modificación: 13 Diciembre 2014, 06:11 am por ElGabi80 » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Reemplazar carácteres en C
« Respuesta #1 en: 13 Diciembre 2014, 06:47 am »

el simbolo de "resuelto" se debe reservar solo para temas ya resueltos...


para tu problema sería
Citar
si cadena[y] == 'n' Y cadena[y+1] == 'y' entonces...

y claramente como la cadena original tiene un caracter más de largo, tendrás que o usar otra o hacer que el ciclo desplaze todos los caracteres luego de la sustitucion


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
ElGabi80

Desconectado Desconectado

Mensajes: 10



Ver Perfil
Re: Reemplazar carácteres en C
« Respuesta #2 en: 13 Diciembre 2014, 07:05 am »

el simbolo de "resuelto" se debe reservar solo para temas ya resueltos...


para tu problema sería
y claramente como la cadena original tiene un caracter más de largo, tendrás que o usar otra o hacer que el ciclo desplaze todos los caracteres luego de la sustitucion

Hola antes de nada darte las gracias, pues bien ahora ya me compara la 'n' y la 'y'

Código:
if (cadena[y] == 'n' && cadena[y+1] == 'y')

pero ahora solo me sustituye una 'n' por una ñ y la otra sigue estando, se que me has comentado como arregalar eso, pero no caigo Dx, si pudieras ser más gráfico, y gracias otra vez, al menos ahora tengo las ideas más claras.
« Última modificación: 13 Diciembre 2014, 07:06 am por ElGabi80 » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Reemplazar carácteres en C
« Respuesta #3 en: 13 Diciembre 2014, 07:46 am »

el asunto es que tu arreglo de caracteres por dentro es

Código:
|c|a|n|y|o|n|\0|.....
 0 1 2 3 4 5 6

lo sustituyes por

Código:
|c|a|ñ|y|o|n|\0|.....
 0 1 2 3 4 5 6

el arreglo seguirá siendo más largo de lo que quieres... así que tienes que hacer una funcion (no expresamente una funcion, sino simplemente un ajuste) tal que tome a partir de la "ñ" agregada y diga

Código:
si cadena[y] no es '\0' entonces cadena[y] = cadena[y+1]
esto moverá todo 1 espacio hacia atras incluyendo el \0 que es el fin de string
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
ElGabi80

Desconectado Desconectado

Mensajes: 10



Ver Perfil
Re: Reemplazar carácteres en C
« Respuesta #4 en: 13 Diciembre 2014, 08:13 am »

el asunto es que tu arreglo de caracteres por dentro es

Código:
|c|a|n|y|o|n|\0|.....
 0 1 2 3 4 5 6

lo sustituyes por

Código:
|c|a|ñ|y|o|n|\0|.....
 0 1 2 3 4 5 6

el arreglo seguirá siendo más largo de lo que quieres... así que tienes que hacer una funcion (no expresamente una funcion, sino simplemente un ajuste) tal que tome a partir de la "ñ" agregada y diga

Código:
si cadena[y] no es '\0' entonces cadena[y] = cadena[y+1]
esto moverá todo 1 espacio hacia atras incluyendo el \0 que es el fin de string

Ya te entiendo, corres un lugar de esta forma eliminamos la letra extra, creo que te refieres a algo así:
Código:
	if (cadena[y] == 'n' && cadena[y+1] == 'y'){
cadena[y]='ñ';

if (cadena[y] != '\0'){
cadena[y] = cadena[y+1];
}

}

pero el problema es que da este resultado por pantalla:    cayyon

Perdona si me hago tan pesado pero no lo consigo sacar :c y gracias por tu ayuda.
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Reemplazar carácteres en C
« Respuesta #5 en: 13 Diciembre 2014, 08:35 am »

XD tranqui, se ve que lo estás intentando...

esperaba que vieras el ajuste y lo hicieras :P


el asunto es que reemplazas y en ese momento el indice está apuntando justo a la letra que quieres olvidar :P y no copias más nada... y para copiar todo, puedes hacer una variable tipo bandera y listo

son 2 cosas:
la primera
Código:
bandera = 0
para ......{
  cadena[y]=cadena[y+bandera]//cosa 1, siempre copia, pero bandera nos evita el condicional
  si conseguimos 'ny' entonces{
    sustituimos //esto lo tienes listo
    y++ //cosa 2,forzamos a 'y' a saltarse 1 para que "olvide" la letra que no queremos
    bandera = 1
}}
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
ElGabi80

Desconectado Desconectado

Mensajes: 10



Ver Perfil
Re: Reemplazar carácteres en C
« Respuesta #6 en: 13 Diciembre 2014, 09:22 am »

Gracias por todo, en especial al único usuario que me contesto xD, funciona perfectamente ahora estoy intentando asimilarlo xD.

Bueno ahora creo que si que le pondré la palomita verde jaja :P
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Reemplazar carácteres en C
« Respuesta #7 en: 13 Diciembre 2014, 09:25 am »

ahora si XD

sobre que fue el unico usuario que te respondi es porque esta es parte de las "horas bajas" del foro, los americamos están durmiendo y los europeos apenas se están levantando jejeje

no se que haces despiert@ tu XD pero yo no puedo dormir y juego harvest moon XD
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
ElGabi80

Desconectado Desconectado

Mensajes: 10



Ver Perfil
Re: Reemplazar carácteres en C
« Respuesta #8 en: 13 Diciembre 2014, 09:46 am »

Llevo casi toda la noche intentando sacar esto :P, menos mal que apareció otro con los mismos horarios raros que yo xD.

PD: No pongas el @ que soy un chico y me haces dudar de mi genero xD.

PD2 :Al final nos moverán el tema a offtopic pero yo soy más de Hotel Dusk o 999, vamos..., juegos de aventura gráfica.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
REEMPLAZAR CADENA DE CARACTERES
Programación C/C++
josemari85 2 2,937 Último mensaje 3 Junio 2010, 23:38 pm
por @synthesize
Problema con un código para reemplazar caracteres
Programación Visual Basic
zikotik 2 2,402 Último mensaje 11 Mayo 2012, 21:58 pm
por zikotik
Reemplazar varios caracteres por numeros
.NET (C#, VB.NET, ASP)
Crazy.sx 2 2,920 Último mensaje 22 Abril 2013, 06:44 am
por Crazy.sx
¿Cómo reemplazar caracteres en una cadena de un array?
Programación C/C++
Juancho25 1 2,804 Último mensaje 26 Diciembre 2013, 14:07 pm
por ivancea96
[Resuelto] Reemplazar Caracteres en una Cadena
Desarrollo Web
Brian1511 5 3,704 Último mensaje 23 Julio 2015, 03:11 am
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines