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

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Arreglar código poner puntos suspensivos entre palabras
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Arreglar código poner puntos suspensivos entre palabras  (Leído 3,917 veces)
jmunto

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Arreglar código poner puntos suspensivos entre palabras
« en: 2 Febrero 2022, 12:34 pm »

El programa debe mostrar la frase en la consola con puntos suspensivos entre las palabras dependiendo del nivel de velocidad que escoja el usuario. Si escogen 2 se pondrán puntos suspensivos después de cada palabra, i si escoge 1 se pondrán puntos suspensivos cada dos palabras. Este es el código que he hecho pero no funciona como deberia.

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

int main()
{
char frase[500];
char frase_lenta[500];
int i;
int j;
int paraula;
int op;

i=0;
j=0;
paraula = 0;

printf ("introduce una frase\n");
fgets (frase,500,stdin);

printf ("escoge la velocidad de tu frase 1 = lento 2 = muy lento\n");
scanf("%d",&op);

//printf("%s",frase);

if (op == 2)
{

while (frase!= '.')
{
    if (frase!= ' ')
    {
        frase_lenta[j] = frase ;
        i++;
        j++;
    }
    else
    {
          frase_lenta[j]='.';
          frase_lenta[j+1]='.';
          frase_lenta[j+2]='.';
          frase_lenta[j+3]=' ';
          i++;
          j= j+4;
    }
}
}

if(op == 1)
{
    while (frase != '.')
    {
        if(frase!= ' ')
        {
            frase_lenta[j] = frase ;
            i++;
            j++;
        }
        else
        {
          paraula++;
          frase_lenta[j] = frase;

          if (paraula == 2)
              {
                  frase_lenta[j]='.';
                  frase_lenta[j+1]='.';
                  frase_lenta[j+2]='.';
                  frase_lenta[j+3]=' ';
                  i++;
                  j= j+4;
                  paraula = 0;
              }
                i++;
                j++;
        }
    }
}

  printf("%s",frase_lenta);

}


« Última modificación: 2 Febrero 2022, 18:28 pm por jmunto » En línea

.xAk.


Desconectado Desconectado

Mensajes: 397


F0r3v3R NeWbI3


Ver Perfil WWW
Re: Arreglar código poner puntos suspensivos entre palabras
« Respuesta #1 en: 2 Febrero 2022, 14:36 pm »

No lo entiendo, seguro que es culpa mía. Tienes que añadir puntos entre las palabras de la frase, y hay una velocidad que no relaciono. ¿no hay ninguna condición? como que aparezcan los puntos si la frase excede en caracteres. No entiendo el planteamiento.

¿si entro la frase "una frase de ejemplo" y se escoje 2 el resultado tiene que ser "una...frase...de...ejemplo"  y si se escoje 1 "una frase...de ejemplo" es eso?


« Última modificación: 2 Febrero 2022, 14:45 pm por .xAk. » En línea


jmunto

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Arreglar código poner puntos suspensivos entre palabras
« Respuesta #2 en: 2 Febrero 2022, 18:19 pm »

No lo entiendo, seguro que es culpa mía. Tienes que añadir puntos entre las palabras de la frase, y hay una velocidad que no relaciono. ¿no hay ninguna condición? como que aparezcan los puntos si la frase excede en caracteres. No entiendo el planteamiento.

¿si entro la frase "una frase de ejemplo" y se escoje 2 el resultado tiene que ser "una...frase...de...ejemplo"  y si se escoje 1 "una frase...de ejemplo" es eso?


Si es como dices al final. Con la frase "el niño corre en el parque", si escojes el numero 2 seria
"el... niño... corre... en... el... parque" y si se escoge el numero 1 el resultado seria:
"el niño... corre en... el parque".

 La velocidad es una forma de llamar a la cantidad de puntos suspensivos. Si hay mas parece que habla mas despacio. No hay ninguna condicion simplemente debe mostrar la frase con los puntos.
« Última modificación: 2 Febrero 2022, 18:21 pm por jmunto » En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Arreglar código poner puntos suspensivos entre palabras
« Respuesta #3 en: 2 Febrero 2022, 20:49 pm »

Para 'op == 1', en el else:
· Te sobra la instrucción
Código:
frase_lenta[j] = frase[i];
ya que eso hace que copies el espacio en blanco antes de escribir los tres puntos.

· Dentro del
Código:
if(paraula == 2)
te sobra i++ porque sí o sí debes avanzar ese índice, te conviene tenerlo fuera para que avance de todas formas. Si lo tienes dentro y fuera harás que cuando se cumpla la condición dé dos saltos. De la misma forma la inclusión del espacio en blanco en j+3 debe ir fuera del if porque sí o sí debes escribirlo en frase_lenta.

De hecho te sugeriría que cambiaras esos j+n por j++ para que el índice se fuera actualizando después de cada cambio.

Algo así:
Código
  1. frase_lenta[j++]='.';
  2. frase_lenta[j++]='.';
  3. frase_lenta[j++]='.';
  4. frase_lenta[j++]=' ';

Si te fijas hay mucho código que se repite. Después, cuando ya te funcione, podrías refactorizarlo.
En línea

.xAk.


Desconectado Desconectado

Mensajes: 397


F0r3v3R NeWbI3


Ver Perfil WWW
Re: Arreglar código poner puntos suspensivos entre palabras
« Respuesta #4 en: 3 Febrero 2022, 03:16 am »

si que se repite y puedes hacerlo de una pasada, cuando compares tienes que hacer comparaciones con el mismo tipo

Código:
       do {
                if ( frase[i] == ' ' ) {
                        for ( int z = 0; z<3; z++) { frase_lenta[n++]='.'; }
                } else {
                        frase_lenta[n++]=frase[i];
                }
        } while ( frase[++i] );


En línea


jmunto

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Arreglar código poner puntos suspensivos entre palabras
« Respuesta #5 en: 3 Febrero 2022, 12:58 pm »

Gracias por los aportes. Ahora para (op==2) funciona bien. El problema es que para (op==1) no me hace la frase entera. Por ejemplo: si escribo la frase "el niño corre en el parque hoy".
Me da : "el niño..." i nada mas.
I debería dar: "el niño... corre en... el parque... hoy"
Mi código es este:
Código
  1. (op == 1)
  2. {
  3.    while (frase[i] != '.')
  4.    {
  5.        if(frase[i]!= ' ')
  6.        {
  7.            frase_lenta[j] = frase [i];
  8.            i++;
  9.            j++;
  10.        }
  11.        else
  12.        {
  13.          paraula++;
  14.          frase_lenta[j] = frase[i];
  15.  
  16.          if (paraula == 2)
  17.              {
  18.                  frase_lenta[j]='.';
  19.                  frase_lenta[j+1]='.';
  20.                  frase_lenta[j+2]='.';
  21.                  frase_lenta[j+3]=' ';
  22.                  i++;
  23.                  j= j+4;
  24.                  paraula = 0;
  25.              }
  26.                i++;
  27.                j++;
  28.        }
  29.    }
  30. }
  31.  
  32.  
  33.  
  34.  
  35.  

Alguna sugerencia de porque no funciona?
« Última modificación: 3 Febrero 2022, 13:25 pm por jmunto » En línea

.xAk.


Desconectado Desconectado

Mensajes: 397


F0r3v3R NeWbI3


Ver Perfil WWW
Re: Arreglar código poner puntos suspensivos entre palabras
« Respuesta #6 en: 3 Febrero 2022, 16:07 pm »

Ponte una variable booleana y si es muy lenta hazle un activo inactivo para que ponga o no los puntos suspensivos en el siguiente espacio, y si no los pone que ponga el espacio.

Código:
variable escribo
bucle
  si escribo pongo los puntos
luego
escribo es igual a no escribo
En línea


Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

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