Algo simple de arreglos que no me sale (Si, soy re newbie)

Iniciado por palacio29, 24 Noviembre 2016, 00:42 AM

0 Miembros y 1 Visitante están viendo este tema.

palacio29

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.

#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')
        {
                if(texto[i+1]!='\0')
                {
                    while(texto[j]!='\0')
                    {
                        if(texto[j]!='\0')
                        {
                            texto[j]=texto[j+1];
                        }
                        else
                        {
                            texto[j]='\0';
                        }
                        j++;
                    }
                    texto[j]='\0';
                }
                else
                {
                    texto[i]='\0';
                }
                j=0;


        }

            i++;

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


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.

Kenji-chan

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

Tx10

#2
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:



#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

Slava_TZD

#3
...
   int l = strlen(texto);
   for(i=0;i<l;i++) {
       //Si es una 'o' mueve el array una posición a la izquierda
       if(texto[i] == 'o') {
           for(j=i;j<l-1;j++) {
               texto[j] = texto[j+1];
           }
           //se actualiza la longitud y el final de la cadena
           l--;
           texto[l] = '\0';
           i--;
       }
   }
...


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.