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)
| | |-+  Algo simple de arreglos que no me sale (Si, soy re newbie)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Algo simple de arreglos que no me sale (Si, soy re newbie)  (Leído 1,989 veces)
palacio29

Desconectado Desconectado

Mensajes: 103


Ver Perfil
Algo simple de arreglos que no me sale (Si, soy re newbie)
« en: 24 Noviembre 2016, 00:42 am »

Hola

Tengo que hacer un ejercicio en el cual el usuario ingrese un texto, el texto se va a guardar en un arreglo de tipo char. Lo que tengo que hacer es quitar del arreglo aquellos caracteres que sean la letra "o".
Lo tengo que hacer de manera que si yo ingreso la frase "Hola Mundo"...Tiene que quedar
"Hla Mund".
Es decir, me va a quedar un arreglo mas chico..
Es importante destacar que NO PUEDO USAR ARREGLOS AUXILIARES.

Si fuera con auxiliares es muy sencillo. Lo estoy intentando hacer haciendo que cuando encuentre una letra "o",se mueva todo el arreglo una posicion hacia la izquierda, pero no logre hacerlo. Les dejo mi codigo haber si me pueden ayudar plz.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6.    char texto[500];
  7.    int i=0,j=0;
  8.    printf("Ingrese el texto:");
  9.    gets(texto);
  10.    printf("\nLo ingresado es %s",texto);
  11.    while(texto[i]!='\0')
  12.    {
  13.        if(texto[i]=='o')
  14.        {
  15.                if(texto[i+1]!='\0')
  16.                {
  17.                    while(texto[j]!='\0')
  18.                    {
  19.                        if(texto[j]!='\0')
  20.                        {
  21.                            texto[j]=texto[j+1];
  22.                        }
  23.                        else
  24.                        {
  25.                            texto[j]='\0';
  26.                        }
  27.                        j++;
  28.                    }
  29.                    texto[j]='\0';
  30.                }
  31.                else
  32.                {
  33.                    texto[i]='\0';
  34.                }
  35.                j=0;
  36.  
  37.  
  38.        }
  39.  
  40.            i++;
  41.  
  42.    }
  43.    printf("\nLo ingresado modificado es\n %s",texto);
  44.    return 0;
  45. }
  46.  

Lo pense en el momento, pero si ustedes tienen una mejor logica de hacer esto mejor, porque lo mio son muchas lineas y medio complicado.


En línea

Kenji-chan

Desconectado Desconectado

Mensajes: 104


Ver Perfil
Re: Algo simple de arreglos que no me sale (Si, soy re newbie)
« Respuesta #1 en: 24 Noviembre 2016, 01:26 am »

con la sentencia "continue;" y 2 contadores lo puedes hacer facil


En línea

Tx10

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Algo simple de arreglos que no me sale (Si, soy re newbie)
« Respuesta #2 en: 25 Noviembre 2016, 14:06 pm »

Hola, lo que puedes hacer es ir recorriendo el array y en cuanto te encuentres una 'o'  buscar la siguiente letra que no sea una 'o' y intercanbiarlas de posicion en el array. Te dejo el código:

Código:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char texto[500];
    int i=0,j=0;
    printf("Ingrese el texto:");
    gets(texto);
    printf("\nLo ingresado es %s",texto);

    while(texto[i]!='\0')
    {
        if(texto[i]=='o'){
            j=i;
            while(texto[j]=='o'){
                j++;
            }
            texto[i]=texto[j];
            texto[j]='o';
        }
        i++;

    }
    printf("\nLo ingresado modificado es\n %s",texto);
    return 0;
}


Mucho animo !!!

p.d.: lo editado es el editor de código y la explicacion
« Última modificación: 25 Noviembre 2016, 15:09 pm por Tx10 » En línea

Slava_TZD
Wiki

Desconectado Desconectado

Mensajes: 1.466

♪ [8675309] ♪


Ver Perfil WWW
Re: Algo simple de arreglos que no me sale (Si, soy re newbie)
« Respuesta #3 en: 25 Noviembre 2016, 17:16 pm »

Código
  1. ...
  2.    int l = strlen(texto);
  3.    for(i=0;i<l;i++) {
  4.        //Si es una 'o' mueve el array una posición a la izquierda
  5.        if(texto[i] == 'o') {
  6.            for(j=i;j<l-1;j++) {
  7.                texto[j] = texto[j+1];
  8.            }
  9.            //se actualiza la longitud y el final de la cadena
  10.            l--;
  11.            texto[l] = '\0';
  12.            i--;
  13.        }
  14.    }
  15. ...
« Última modificación: 25 Noviembre 2016, 17:21 pm por Slava_TZD » En línea


The fact is, even if you were to stop bombing us, imprisoning us, torturing us, vilifying us, and usurping our lands, we would continue to hate you because our primary reason for hating you will not cease to exist until you embrace Islam.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines