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


 


Tema destacado: [AIO elhacker.NET 2015] Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  Cambiar letra por otra letra?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Cambiar letra por otra letra?  (Leído 12,720 veces)
monsefoster

Desconectado Desconectado

Mensajes: 83



Ver Perfil
Cambiar letra por otra letra?
« en: 19 Octubre 2009, 04:15 »

Hello chicos, aprovechando las vacaciones me metí con algunos temas que no me dieron en clase...

estoy haciendo un ejercico que me pasaron y...la ultima pregunta es...en una cadena, cambiar las A y a por O...

no tengo idea de como hacerlo, me ayudan? NOTA: Se que lo que hice para invertir la cadena no es lo mas apropiado, pero no supe que otra manera...

Código:
//2. Elabore un programa que permita leer una cadena, con la posibilidad de que incluya espacios en blanco, y sobre ésta, realizar las siguientes operaciones y mostrar los resultados: (Valor 10 ptos.)

//" Hallar la longitud de la cadena.
//" Contar los espacios en blanco contenidos dentro de la cadena.
//" Mostrar la cadena en reverso.
//" Reemplazar las vocales 'a' (mayúsculas y minúsculas) contenidas en la cadena por vocales 'O' y mostrar la cadena resultante


#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#define n 50

int main (){
    char v[n];
    int i,aux,t,b=0;
    system ("cls");
    printf ("Inserte oracion: ");
    gets (v);
    t=strlen(v);
    printf ("La longitud de la oracion es de: %d caracteres\n",t);
           for (i=0;i<t;i++)
               if (v[i]==' ')
                  b++;
           
    printf ("La oracion tiene %d espacios en blanco\n",b);
    printf ("La oracion invertida es:\n");
           for (i=t;i>=0;i--){
               printf ("%c",v[i]);
           }
    printf ("\nLa cadena con A y a reemplazadas por O seria:\n");
           for (i=0;i<n;i++){
               if ((v[i]=='a')||(v[i]=='A')){
                  ***AQUI ES DONDE ME PERDI****  :o :o
               }
           }
   for (i=0;i<n;i++){
       printf ("%c",v[i]);
}
   
    getche ();
}


En línea

Lambda


Desconectado Desconectado

Mensajes: 371



Ver Perfil WWW
Re: Cambiar letra por otra letra?
« Respuesta #1 en: 19 Octubre 2009, 04:56 »

Pues
Código
  1. v[i] = 'O';
no tiene mas misterio :rolleyes:


En línea

monsefoster

Desconectado Desconectado

Mensajes: 83



Ver Perfil
Re: Cambiar letra por otra letra?
« Respuesta #2 en: 19 Octubre 2009, 05:08 »

Gracias, habia intentado eso...no se que me pasó...La cosa es que luego de que muestra la cadena...me salen unos caracteres "raros"

http://yfrog.com/08dibujontpj
En línea

YST


Desconectado Desconectado

Mensajes: 966


I'm you


Ver Perfil WWW
Re: Cambiar letra por otra letra?
« Respuesta #3 en: 19 Octubre 2009, 05:39 »

Una solcuión rapida luego del bucle le sumas el tamaño de la cadena y le pones un caracter nulo :P

Algo como

Código
  1. v[t] = "\0"
  2.  

El error ocurre por que haces el bucle 50 veces y si la cadena es menor.. pues imprime 50 caracteres igual :xD
« Última modificación: 19 Octubre 2009, 05:51 por YST » En línea



Yo le enseñe a Kayser a usar objetos en ASM
monsefoster

Desconectado Desconectado

Mensajes: 83



Ver Perfil
Re: Cambiar letra por otra letra?
« Respuesta #4 en: 19 Octubre 2009, 05:59 »

Ah vale, gracias!  ;D
En línea

Eternal Idol
Moderador
***
Desconectado Desconectado

Mensajes: 5.512


La mano invisible del mercado me robo la billetera


Ver Perfil WWW
Re: Cambiar letra por otra letra?
« Respuesta #5 en: 19 Octubre 2009, 06:02 »

Este codigo esta mal:
Código
  1. v[t] = "\0"

Sin contar la falta de ; pretende asignarle una CADENA (puntero a char) a un char, para asignar un caracter se usan ' ' y en este caso si es el cero terminador se puede usar 0 perfectamente ya que es ese el valor que queremos poner.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
YST


Desconectado Desconectado

Mensajes: 966


I'm you


Ver Perfil WWW
Re: Cambiar letra por otra letra?
« Respuesta #6 en: 19 Octubre 2009, 06:24 »

Citar
Este codigo esta mal:
Código
Código:
v[t] = "\0"


Sin contar la falta de ; pretende asignarle una CADENA (puntero a char) a un char, para asignar un caracter se usan ' ' y en este caso si es el cero terminador se puede usar 0 perfectamente ya que es ese el valor que queremos poner.

Citar
Algo como


Con eso quise decir que el codigo no esta bien pero es para que se haga una idea de lo que hay que hacer ;)
En línea



Yo le enseñe a Kayser a usar objetos en ASM
N0body

Desconectado Desconectado

Mensajes: 95


Ver Perfil
Re: Cambiar letra por otra letra?
« Respuesta #7 en: 19 Octubre 2009, 20:49 »

Yo haria unos cambios...

A n que no es una variable le pondria algo en mayusculas para que se note que es una definicion algo como LEN o LONGITUD (en mayusculas)

Muchas cosas que haces en dieferentes bucles los puedes hacer en uno solo no te parece?

Para mostrar una cadena puedes usar "printf ("%s", v);" y asi no tendras problemas de saber cuantas letras tiene la cadena ya que esto imprime hasta el '\0'.

Si no sabes lo que es el \0, es el 0 en hexadecimal, que se pone luego de una cadena para indicar que esta termina

Si todavia quieres hacer un bucle que te muestre caracter por caracter debes mostrar hasta que v=='\0' o hasta que i==t ya que t es la cantidad de letras (si no me confundo) y no n.

Cuando haces el bucle para mostrarlo de forma revertida no hagas i=t sino i=t-1 ya que en la posicion t de la cadena, osea en v[t] se encuentra el caracter nulo (el \0) que imprimirlo no tendra sentido (es "nada").

Como haces un bucle para mostrar por mas que pongas v[t]='\0' no funcionara, te recomiendo usar printf ("%s", v) que mostrara toda la cadena...

No se bien como funciona gets (v) pero yo usaria scanf ("%s", v)... creo que asi no tendria que incluir conio.h

Me gusto mucho como muestras la cadena revertida, en una prueba nos la hacian "mostrar revertida" segun la consigna y yo directamente hice eso (muchos lo que hicieron fue copiarla de forma revertida en otra cadena y despues mostrar esta segunda) xD...
En línea

monsefoster

Desconectado Desconectado

Mensajes: 83



Ver Perfil
Re: Cambiar letra por otra letra?
« Respuesta #8 en: 20 Octubre 2009, 01:38 »

hasta donde se el gets almacena toda la cadena hasta el primer enter...osea con espacios y demas... no se que funcion tenga lo que dices  :huh:
En línea

Littlehorse
All the world's a stage
Moderador
***
Desconectado Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: Cambiar letra por otra letra?
« Respuesta #9 en: 20 Octubre 2009, 01:46 »

Para utilizar gets no hace falta incluir conio (tal vez te estes confundiendo con getch) y utilizar scanf de esa forma lo limitaria a solamente poder leer una palabra, en todo caso deberia hacer scanf("%[^\n]", cadena).

Un saludo
En línea

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Cambiar letra a unidad de sistema[Solucionado]
Windows
SeñorK. 2 7,137 Último mensaje 18 Diciembre 2010, 13:17
por Randomize
problema virtual key codes en c++ letra ñ en keylogger
Programación C/C++
ahaugas 2 2,077 Último mensaje 26 Julio 2012, 18:31
por ahaugas
Duda cambiar tamaño de letra y mantener el estilo,familia
.NET
arts 3 1,194 Último mensaje 20 Marzo 2013, 01:00
por arts
Comparar letra una letra en un array, con una letra del abcdario
Programación C/C++
Naimaderis 2 569 Último mensaje 10 Marzo 2017, 04:24
por Naimaderis
El juego de cambiar una letra « 1 2 ... 12 13 »
Foro Libre
Ikillnukes 127 7,337 Último mensaje 15 Junio 2017, 20:48
por Ikillnukes
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines