elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Ingresar Registrarse
08 Septiembre 2008, 02:34  



+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderador: ®®)
| | |-+  Ayuda con texto please!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Imprimir
Autor Tema: Ayuda con texto please!  (Leído 238 veces)
Morriganx

Desconectado Desconectado

Mensajes: 19



Ver Perfil
Ayuda con texto please!
« en: 24 Febrero 2008, 03:18 »

Hola a todos. Apenas estoy empezando con esto de la programación, y he empezado a hacer un programita que me pide una cadena de caracteres y esa misma cadena la muestra pero rebotando en la pantalla... digo no es cosa tan difícil pero digamos, meto la cadena "hola" que son 4 caracteres... y la pantalla son 80, pues con un ciclo for imprimo desde x=0 hasta x=80 pero cuando empieza a "rebotar" la cadena "hola" (o la que sea) se sale de la pantalla y no es como quiero que sea, mm no sé si me di a entender, pero si no, diganme para explicarme mejor  :-[

gracias por adelantado  :)

Este es el código que tengo, pero no sé como calcular el tamaño de la cadena y restarla al tamaño de la pantalla para que no se salga...  :huh:

Código:
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<dos.h>

imprime()
{
char wrd[20];
int x,y,i;
x=0;

/*for(i=0;i<20;i++)
 {
  wrd[i]='\0';
 }
i=0;*/

clrscr();
printf("Introduce tu palabra: ");
scanf("%s",wrd);
/*
do
{
i++;
wrd[i]=getche();
}while(wrd[i]!=13);
y=80-wrd[i];
 */

for(;;)
{
 for(x=0;x<=80;x++)
 {
  gotoxy(x,12);
  printf("%s",wrd);
  delay(85);
  gotoxy(x,12);
  printf(" ");
  if(x==80)
  {
   for(x=80;x>0;x--)
   {
    gotoxy(x,12);
    printf("%s",wrd);
    delay(85);
    printf(" ");
   }
  }
 }
}
}

main()
{

imprime();
return 0;
}
« Última modificación: 24 Febrero 2008, 03:37 por Morriganx » En línea

project 2501

Desconectado Desconectado

Mensajes: 137



Ver Perfil
Re: Ayuda con texto please!
« Respuesta #1 en: 24 Febrero 2008, 03:58 »

Creo que era esto lo que estabas buscando:

Código
#include<stdio.h>
#include<string.h>
 
imprime()
{
  char wrd[20];
  int x,y=0;
 
  printf("Introduce tu palabra: ");
  scanf("%s",wrd);
  for(;;)
  {
     for(x=0;x<=80;x++)
     {
        printf("%c",wrd[y]);
        if(y>=strlen(wrd))
        {
           y=0;
           printf(" ");
        }
        else
        {
           y++;
        }
     }
     printf("\n");
  }
}
 
main()
{
  imprime();
  return 0;
}
 

Te he limpiado un poco el codigo para que lo veas mas claro. Creo que te estabas liando un poco, pero es normal segun empiezas. Por si no lo sabes "strlen(wrd)" nos devuelve el tamaño que tiene la palabra que hay en "wrd". Y con "wrd[y]" vamos mostrando solo caracter a caracter y de esta forma nunca nos pasaremos de 80.

Si hay algo mas que no entiendas, pregunta y te contestare. Y si no era eso lo que querias pues tambien. ;)
En línea

¿Y a dónde va el recién nacido desde aquí? La red es vasta e infinita
Morriganx

Desconectado Desconectado

Mensajes: 19



Ver Perfil
Re: Ayuda con texto please!
« Respuesta #2 en: 24 Febrero 2008, 04:14 »

 :)

Muchas gracias por responder!  :)

Gracias por la información, es que como voy empezando, no tengo en cuenta todas las funciones que hay  :-[

De hecho quiero hacer lo mismo pero en Java, igual me voy iniciando y no sé que hacer ahí, de Java no tengo ni idea  :-[

Y, del código que me has puesto, pues gracias, pero no, no es así lo que busco hacer con lo que estoy probando  :-[ lo que pasa es que yo quiero que la cadena introducida rebote de un lado a otro en pantalla...

y pues cuando corrí este código me llenó la pantalla de la cadena que puse hasta que le dí ctrl+pausa  :-[

bueno, de todos modos seguiré intentando, y de nuevo gracias por responder tan pronto  :)



En línea

project 2501

Desconectado Desconectado

Mensajes: 137



Ver Perfil
Re: Ayuda con texto please!
« Respuesta #3 en: 24 Febrero 2008, 05:02 »

Creo que ya te entendi, espero que con el otro codigo que te pase ya lo hayas sacado
En línea

¿Y a dónde va el recién nacido desde aquí? La red es vasta e infinita
Morriganx

Desconectado Desconectado

Mensajes: 19



Ver Perfil
Re: Ayuda con texto please!
« Respuesta #4 en: 24 Febrero 2008, 05:44 »

Muchas muchas gracias!!

sólo un pequeñísimo detalle  :-[ (como molesto) pero en fin, no se como resolverlo mmm estoy a punto de tener lo que quiero, pero lo que pasa es que no borra la letra anterior.. y así que me repite de un lado a otro "hola hola" y de regreso se sobreescribe... lo que quiero es que imprima hola, y de inmediato borre lo anterior, para que parezca que solamente una palabra hola está moviéndose de lado a lado  :-[ no se si me explico muy bien  >:(

pero gracias project 2501 !! ;D

esto es lo que tengo... igual no lo vas a poder correr en linux.. pero por si sirve de algo...

Código:
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<dos.h>

main()
{
char wrd[20];
int x, y=0;
clrscr();
printf("Introduce palabra: ");
gets(wrd);
for(;;)
{
 for(x=0;x<=80;x++)
      {
gotoxy(x,12);
delay(50);
printf("%c",wrd[y]);
printf(" ");
if(y>=strlen(wrd))
{
    y=0;
//    delay(50);
//    printf(" ");
}
else
{
    y++;
}
      }
 for(x=80;x>0;x--)
      {
gotoxy(x,12);
delay(50);
printf("%c",wrd[y]);
if(y>=strlen(wrd))
{
    y=0;
    delay(50);
    printf(" ");
}
else
{
    y++;
}
      }
}
}

En línea

project 2501

Desconectado Desconectado

Mensajes: 137



Ver Perfil
Re: Ayuda con texto please!
« Respuesta #5 en: 24 Febrero 2008, 14:53 »

Creo que no has entendido del todo bien el programa que te pase. En mi programa solo tienes que poner el gotoxy(1,1), es decir las primeras coordenadas, luego que imprima por pantalla, ya que segun el numero que tenga la x mete espacios en blanco para que de la impresion de que se mueve, asi que basicamente lo que tienes que hacer es poner la el gotoxy en la primera posion (1,1) o (0,0) (no se como va exactamente el gotoxy). y el delay apropiado y con eso ya te deberia de funcionar.

Un saludo
En línea

¿Y a dónde va el recién nacido desde aquí? La red es vasta e infinita
Morriganx

Desconectado Desconectado

Mensajes: 19



Ver Perfil
Re: Ayuda con texto please!
« Respuesta #6 en: 25 Febrero 2008, 00:00 »

Ya lo he solucionado project2501, gracias por el interés  ;D

de verdad gracias, me sirvió lo que me has puesto  :)

ahora tengo la curiosidad de pasarlo a Java... hay mucha diferencia? de Java ni idea...

En línea

project 2501

Desconectado Desconectado

Mensajes: 137



Ver Perfil
Re: Ayuda con texto please!
« Respuesta #7 en: 25 Febrero 2008, 02:58 »

Pues la verdad es que no he programado mucho en java, pero por lo que se no es muy diferente, como todos los lenguages de programacion es cuestion de meterle horas.

;)
En línea

¿Y a dónde va el recién nacido desde aquí? La red es vasta e infinita
Páginas: [1] Ir Arriba Imprimir 
Ir a:  







Consolas     La Web de Goku     MilW0rm     MundoDivx

Hispabyte     Truzone     TodoReviews     ZonaPhotoshop

hard-h2o modding    Foros de ayuda    Yashira.org    Videojuegos    indetectables.net   

Noticias Informatica    Seguridad Informática    ADSL    Foros en español    eNYe Sec

Todas las webs afiliadas están libres de publicidad engañosa.

Powered by SMF 1.1.5 | SMF © 2006-2008, Simple Machines LLC