Páginas: [1]
|
 |
|
Autor
|
Tema: Ayuda con texto please! (Leído 249 veces)
|
Morriganx
Desconectado
Mensajes: 25
|
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...  #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
Mensajes: 137
|
Creo que era esto lo que estabas buscando: #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
Mensajes: 25
|
 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
Mensajes: 137
|
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
Mensajes: 25
|
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 !!  esto es lo que tengo... igual no lo vas a poder correr en linux.. pero por si sirve de algo... #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
Mensajes: 137
|
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
Mensajes: 25
|
Ya lo he solucionado project2501, gracias por el interés  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
Mensajes: 137
|
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]
|
|
|
|