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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  problema de cadenas en c
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: problema de cadenas en c  (Leído 3,934 veces)
fernaEDLP

Desconectado Desconectado

Mensajes: 48


Ver Perfil
problema de cadenas en c
« en: 11 Mayo 2018, 06:10 am »

hola que tal? tengo un problema en c que dice lo siguiente: cree dos cadenas cad1 y cad2 que puedan alamacenar hasta 80 caracteres, y cad1 se pueda inicializar por teclado, copie el contenido den cad1 en cad2 sin que copie el contenido de las vocales, aclaración: no se pueden usar funciones,no c porque mo código no funciona, yo hice lo siguiente:
int main()
{
    int i,j;
    char cad1[80];
    char cad2[80];
    gets(cad1);
    while(cad1!='\0')
    {
        i++;
    }

        for(j=0;j<=i;j++)
        {
            if(cad1[j]=='a') (estoy probando con una sola vocal,ya se que van las otras)
            {
                cad1[j]=' ';
            }
        }
        for(j=0;j<=i;j++)
        {
           if(cad1[j]!=' ')
          {
            cad2[j]=cad1[j];
           }
        }

        puts(cad2);



return 0;
}

pd: no entiendo porque un estudiante de ingeneiría industrial tiene que estudiar c  :-[






« Última modificación: 11 Mayo 2018, 06:13 am por fernaEDLP » En línea

Kenji-chan

Desconectado Desconectado

Mensajes: 104


Ver Perfil
Re: problema de cadenas en c
« Respuesta #1 en: 11 Mayo 2018, 19:32 pm »

Código
  1. int main(){
  2.    int i,j;
  3.    char cad1[80];
  4.    char cad2[80];
  5.    gets(cad1);
  6.    while(cad1!='\0'){
  7. /*este bucle while se seguira ejecutando mientras cad1 sea distinto que '\0'*/
  8.        i++;//->aqui incrementamos el valor de i en 1 y dado que i nunca fue inicializado no sabemos cual es su valor inicial
  9.    }//->cad1 nunca fue modificado asi que siempre sera distinto que '\0' y se repetira indefinidamente
  10.  
  11.    for(j=0;j<=i;j++){
  12.         if(cad1[j]=='a') /*(estoy probando con una sola vocal,ya se que van las otras)*/{
  13.             cad1[j]=' ';
  14.         }
  15.     }
  16.    for(j=0;j<=i;j++){
  17.         if(cad1[j]!=' '){
  18.           cad2[j]=cad1[j];
  19.         }
  20.    }
  21.  
  22.    puts(cad2);
  23.  
  24.  
  25.  
  26.    return 0;
  27. }
  28.  


En línea

fernaEDLP

Desconectado Desconectado

Mensajes: 48


Ver Perfil
Re: problema de cadenas en c
« Respuesta #2 en: 11 Mayo 2018, 20:30 pm »

int main()
{
    int i=0,j;
    char cad1[80];
    char cad2[80];
    gets(cad1);
    while(cad1!='\0')
    {
        i++;
    }

        for(j=0;j<=i;j++)
        {
            if(cad1[j]=='a')
            {
                cad1[j]=' ';
            }
        }

        for(j=0;j<=i;j++)
        {
           if(cad1[j]!=' ')
          {
            cad2[j]=cad1[j];
           }
        }

        puts(cad2);



return 0;
}
hola kenji gracias por responder, pero lo acabo de modificar y me sigue sin funcar en el codeblocks, es decir cuando  meto la palabra la muestra en pantalla y no ocurre nada el el programa queda estatico.

pd:hoy rendí y creo queme rompieron el traste :(

En línea

Kenji-chan

Desconectado Desconectado

Mensajes: 104


Ver Perfil
Re: problema de cadenas en c
« Respuesta #3 en: 11 Mayo 2018, 20:35 pm »

Código
  1. while(cad1!='\0'){
  2.        i++;
  3. }
  4.  

esta parte del código hace que tu programa quede estático
eso es porque dentro del bucle while nunca cambias la posición de cad1
lo que tienes que hacer es

Código
  1. while(cad1[i]!='\0'){
  2.        i++;
  3. }
  4.  
con esto le dices que la posiciona de cad1 avance y no se quede estático
« Última modificación: 11 Mayo 2018, 20:39 pm por Kenji-chan » En línea

fernaEDLP

Desconectado Desconectado

Mensajes: 48


Ver Perfil
Re: problema de cadenas en c
« Respuesta #4 en: 11 Mayo 2018, 20:45 pm »

int main()
{
    int i=0,j;
    char cad1[80];
    char cad2[80];
    gets(cad1);
    while(cad1!='\0')
    {
        i++;
    }

        for(j=0;j<=i;j++)
        {
            if(cad1[j]=='a')
            {
                cad1[j]=' ';
            }
        }

        for(j=0;j<=i;j++)
        {
           if(cad1[j]!=' ')
          {
            cad2[j]=cad1[j];
           }
        }

        puts(cad2);



return 0;
}

tenes razón pero ahora pasa lo siguiente: cuando pongo por ejemplo hola me imprime hol, hasta ahi va todo bien si pongo armario me pone prm ?¿, si pongo grande me devuelve gr4nde es como si evaluara la vocal pero de mala manera, que opinas de la lógica de mi código es buena o es mala? tal vez el problema esta ahí gracias de nuevo, estoy editando el comentario pero sigue sin aparecer el
« Última modificación: 11 Mayo 2018, 20:48 pm por fernaEDLP » En línea

Kenji-chan

Desconectado Desconectado

Mensajes: 104


Ver Perfil
Re: problema de cadenas en c
« Respuesta #5 en: 11 Mayo 2018, 21:01 pm »

he encontrado 2 problemas aqui
Código
  1. for(j=0;j<=i;j++){/*-> a qui en j<=i, hola tiene 4 caracteres y es lo que vale i despues de salir del while, y cad1 tine 4 indices empezando desde 0
  2. por lo tano cad1[0], cad1[1], cad1[2], cad1[3] son cuatro pero si le decimos que sea igual a cuatro nos incrementa en uno el indice cad1[4] que nos da un total de 5*/
  3.            if(cad1[j]=='a'){
  4.                cad1[j]=' ';
  5.            }
  6.        }
  7. for(j=0;j<=i;j++){//> lo mismo aqui
  8.           if(cad1[j]!=' '){
  9.            cad2[j]=cad1[j];
  10. /*aqui el string cad2[j] es sustituido por cad1[j], pero nunca pone el '\0'*/
  11.           }
  12.        }
  13.  
En línea

fernaEDLP

Desconectado Desconectado

Mensajes: 48


Ver Perfil
Re: problema de cadenas en c
« Respuesta #6 en: 11 Mayo 2018, 21:17 pm »

he encontrado 2 problemas aqui
Código
  1. for(j=0;j<=i;j++){/*-> a qui en j<=i, hola tiene 4 caracteres y es lo que vale i despues de salir del while, y cad1 tine 4 indices empezando desde 0
  2. por lo tano cad1[0], cad1[1], cad1[2], cad1[3] son cuatro pero si le decimos que sea igual a cuatro nos incrementa en uno el indice cad1[4] que nos da un total de 5*/
  3.            if(cad1[j]=='a'){
  4.                cad1[j]=' ';
  5.            }
  6.        }
  7. for(j=0;j<=i;j++){//> lo mismo aqui
  8.           if(cad1[j]!=' '){
  9.            cad2[j]=cad1[j];
  10. /*aqui el string cad2[j] es sustituido por cad1[j], pero nunca pone el '\0'*/
  11.           }
  12.        }
  13.  
entendí las 2 primeras correciones pero la del '\0' no la entendí,  no se supone que cuando recorro desde j=0 hasta j<i estaría recorriendo hasta el final de la cadena?, o el '\0' sirve también como un break? perdon por mi lentitud estoy hecho percha necesito una siesta
« Última modificación: 11 Mayo 2018, 21:21 pm por fernaEDLP » En línea

Kenji-chan

Desconectado Desconectado

Mensajes: 104


Ver Perfil
Re: problema de cadenas en c
« Respuesta #7 en: 11 Mayo 2018, 21:27 pm »

si funciona de forma cimilar
ademas se me olvidabaotra cosa
Código
  1. for(j=0;j<=i;j++){
  2.           if(cad1[j]!=' '){
  3.            cad2[j]=cad1[j];
  4. /*a qui la la escritura del cad2 no es correcta*/
  5.           }
  6.        }
  7.  

ejemplo con 'armario'

en cad1 todas las 'a' son ' '(espacio en blanco)

por lo tanto

cad2[j] -> 0 -> no pones nada y se queda con lo que ya avía hai
cad2[j] -> 1 -> r
cad2[j] -> 2 -> m
cad2[j] -> 3 -> nada
cad2[j] -> 4 -> r
cad2[j] -> 5 -> i
cad2[j] -> 6 -> o
cad2[j] -> 7 -> '\0' esto tendia que ir al final
En línea

fernaEDLP

Desconectado Desconectado

Mensajes: 48


Ver Perfil
Re: problema de cadenas en c
« Respuesta #8 en: 12 Mayo 2018, 07:55 am »

int main()
{
    int i=0,j,k,l=0;
    char cad1[80];
    char cad2[80];
    gets(cad1);
    while(cad1!='\0')
    {
        i++;
    }

        for(j=0;j<i;j++)
        {
            if(cad1[j]=='a'||cad1[j]=='e'||cad1[j]=='i'||cad1[j]=='o'||cad1[j]=='u'||cad1[j]=='A'||cad1[j]=='E'||cad1[j]=='O'||cad1[j]=='U'||cad1[j]=='I')
            {
                cad1[j]=' ';
            }
        }
        for(k=0;cad1[k];k++)
        {
            cad2[l]=cad1[k];
            l++;
            cad2[l]='\0';

        }

        puts(cad2);



return 0;
}
hola kenji gracias por la ayuda ya lo pude resolver, te hago una última pregunta el hecho de poner cad2[l]='\0'; implica que eso se va a agregar al final de la copia de cad1 en cad 2?
En línea

Kenji-chan

Desconectado Desconectado

Mensajes: 104


Ver Perfil
Re: problema de cadenas en c
« Respuesta #9 en: 12 Mayo 2018, 09:07 am »

si ya lo tienes solo te hace falta algo

Código
  1. int main(){
  2.    int i=0,j,k,l=0;
  3.    char cad1[80];
  4.    char cad2[80];
  5.    gets(cad1);
  6.    while(cad1!='\0'){
  7.        i++;
  8.    }
  9.  
  10.        for(j=0;j<i;j++){
  11.            if(cad1[j]=='a'||cad1[j]=='e'||cad1[j]=='i'||cad1[j]=='o'||cad1[j]=='u'||cad1[j]=='A'||cad1[j]=='E'||cad1[j]=='O'||cad1[j]=='U'||cad1[j]=='I'){
  12.                cad1[j]=' ';//-> a qui haces que cad1[j] sea igual a ' '(espacio en blanco)
  13.            }
  14.        }
  15.        for(k=0;cad1[k];k++){
  16. /*aqui te hace falta quitar los espacios en blancos que dejaste en cad1 con un if != ' ' bastara para eso*/
  17.            cad2[l]=cad1[k];
  18.            l++;
  19.            cad2[l]='\0';
  20.  
  21.        }
  22.  
  23.        puts(cad2);
  24.  
  25.  
  26.  
  27. return 0;
  28. }
  29.  
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con comparación de cadenas
Java
Debci 6 5,456 Último mensaje 25 Agosto 2009, 21:46 pm
por juancho77
Problema al concatenar cadenas
PHP
Feedeex 4 4,568 Último mensaje 13 Mayo 2011, 12:49 pm
por Feedeex
Problema con cadenas
Programación C/C++
Uknow 2 2,095 Último mensaje 11 Diciembre 2011, 23:37 pm
por Uknow
Problema cadenas
Programación C/C++
muymuyperdido 6 2,503 Último mensaje 8 Enero 2013, 15:48 pm
por leosansan
[C] Problema con cadenas
Programación C/C++
alvr 1 1,487 Último mensaje 9 Enero 2013, 21:41 pm
por durasno
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines