Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Drewermerc en 10 Abril 2014, 16:40 pm



Título: com imprimir varibles varias veces
Publicado por: Drewermerc en 10 Abril 2014, 16:40 pm
Hola a todos.
Bueno queria ver si me pueden ayudar es que lo que quiero hacer es lo siguiente.
es que quiero que es usuario ingrese un numero de veces que quiere que se repita el signo y el numero de espacios que quiere a la izquierda y dependiando de eso quiero que se imprima cualquier signo como por ejemplo # y el numero de espacion lo e intentado con for pero solo .
ejemplo.
Que numero de espacios quieres que se deje a la izquierda antes de imprimir el signo:
3
que numero de veces quieres que se imprima el signo:
4

se veria asi:
___#### (hay tres espacios que son los guines bajos 'por que al publicar el tema se quitan por eso puse mejor _' y despues los signos).

bueno ya lo estaba intentado hacer pero al compilar medice que no puedo guardar ese caracter en una variable char y tambien intente introducirlo pero no al momento de imprimirlo me dice vilacion de segmento bueno espero que me puedan ayudar.


Título: Re: com imprimir varibles varias veces
Publicado por: eferion en 10 Abril 2014, 16:42 pm
Sin código es complicado corregir errores... podemos ser buenos, pero no hemos llegado a dominar la telekinesia ( al menos yo ).


Título: Re: com imprimir varibles varias veces
Publicado por: amchacon en 10 Abril 2014, 16:49 pm
Sin código es complicado corregir errores... podemos ser buenos, pero no hemos llegado a dominar la telekinesia ( al menos yo ).
Es telepatia noob ;D

En C++ tienes setwidth y setfill. Con esas dos puedes hacerlo del tiron, busca la referencia en google.


Título: Re: com imprimir varibles varias veces
Publicado por: eferion en 10 Abril 2014, 16:57 pm
Cierto... es hora de hacer un descanso antes de que me explote la cabeza


Título: Re: com imprimir varibles varias veces
Publicado por: Drewermerc en 10 Abril 2014, 17:08 pm
bueno es que de echo no tengo mucho por eso pense que no era nesesario ponerlo pero bueno esto es lo que tengo pero no funciona.

Código
  1. #include <stdio.h>
  2.  
  3. int main (void)
  4. {
  5. char sig = "#", es = " ";
  6. int esp, sign, n, i;
  7. esp = sign = 0;
  8. printf("introduce el numero de espacios que quieres dejar a la izquierda");
  9. scanf("%d", &esp);
  10. printf("introduce el numero de veces que quieres repetir el signo");
  11. scanf("%d", &sign);
  12. for (i = 0 ; i <=  esp; i++)
  13. {
  14.       printf(" %s", es);
  15.      for (n = 0; n <= sign; n ++)
  16.      {
  17.            printf(" %s",sign);
  18.       }
  19. }
  20.  
  21. }
  22.  
bueno eso es lo que tengo espero que me peudan ayudar.


Título: Re: com imprimir varibles varias veces
Publicado por: rir3760 en 10 Abril 2014, 17:35 pm
Solo necesitas dos bucles, uno despues de otro, de esta forma:
Código
  1. for (i = 0; i < esp; i++)
  2.   putchar(' ');
  3. for (i = 0; i < sign; i++)
  4.   putchar('#');
  5. putchar('\n');

Un saludo


Título: Re: com imprimir varibles varias veces
Publicado por: leosansan en 10 Abril 2014, 17:51 pm

O un solo for con un printf previo:

Citar
Que numero de espacios quieres que se deje a la izquierda antes de imprimir el signo:
10
Que numero de veces quieres que se imprima el signo:
5
          #####


Código
  1. scanf .....................
  2. printf("%*c",esp,' ');
  3.  for (i=0;i<sign;i++ )
  4.    putchar('#');
  5. ........................
  6.  

Salu2!.


Título: Re: com imprimir varibles varias veces
Publicado por: Drewermerc en 10 Abril 2014, 18:27 pm
Hola leosansan y rir3760.
gracias por responder y buenoe spero que me puedan ayudar es el mismo codigo solo que ahora quiero que haga esto.
      #  #
    ##  ##
  ###  ###
####  ####
 esto es lo que tengo no e logrado hacer que se repita el signo  y gracias de nuevo.

Código
  1.  
  2. #include <stdio.h>
  3.  
  4.    int main (void)
  5.    {
  6.  
  7.    int esp, sign, n, i = 0;
  8.    esp = sign = 0;
  9.    printf("introduce el numero de veces que quieres repetir el signo");
  10.    scanf("%d", &sign);
  11. esp = sign ;
  12. for (i = 0; i < sign; i++)
  13.  
  14. {
  15. printf("%*c",esp,' ');
  16. putchar('#');
  17. putchar('\n');
  18. esp--;
  19.  
  20. }
  21. return 0;
  22. }
  23.  


Título: Re: com imprimir varibles varias veces
Publicado por: noele1995 en 10 Abril 2014, 19:11 pm
Tienes que ir reduciendo los espacios y aumentado los signos todo el rato para hacer lo de la izq:

Código
  1. for (int i = 1; i <= sign; i++)
  2. {
  3. esp = sign -i;
  4. if (esp > 0)
  5. printf("%*c",esp,' ');
  6.  
  7. for(int j = esp; j < sign; j++)
  8. putchar('#');
  9.  
  10. putchar('\n');
  11. }
  12.  
Ahora intenta terminarlo tu


Título: Re: com imprimir varibles varias veces
Publicado por: leosansan en 10 Abril 2014, 20:01 pm

¿Algo como esto?:

Código
  1. Que numero de veces quieres que se imprima el signo:
  2. 10
  3.  
  4.          # #
  5.         ## ##
  6.        ### ###
  7.       #### ####
  8.      ##### #####
  9.     ###### ######
  10.    ####### #######
  11.   ######## ########
  12.  ######### #########
  13. ########## ##########
  14.  
  15.  

Con un array se simplifican las cosas, basta un for y un printf.... un tanto especial:

Código
  1. ............................
  2. scanf.....sign..............
  3. char signo[sign+1];
  4. for (i = 0; i <= sign; i++)
  5.  signo[i]='#';
  6. signo[i]='\0';
  7. for (i = 0; i <=sign; i++)
  8.  printf("%*c%.*s%*c%.*s\n", sign+1-i, ' ', i, signo, 1, ' ', i, signo);
  9.  

¡¡¡¡ Saluditos! ..... !!!!


(http://st.forocoches.com/foro/images/smilies/dancer2.gif)


Título: Re: com imprimir varibles varias veces
Publicado por: Drewermerc en 11 Abril 2014, 03:37 am
hola noele1995.
muchas gracias por responder.

hola leosansan.
muchas graciaspor responer y bueno voy a tratarte de explicar el codigo y si me equivoco en algo espeor me corrigas.


Código
  1. /*se captura el numero por ejemplo 5 */
  2. scanf.....sign..............
  3. /*iniciamos una variable tipo array llamada signo la cual  tendra un 6 espacios de memoria  */
  4. char signo[sign+1];
  5.  
  6. /* Aqui se  analiza cada espacio de memoria y se remplaza por el signo # */
  7. for (i = 0; i <= sign; i++)
  8. signo[i]='#';
  9.  
  10. /* como todo los espacios del array tienen el signo # se nesessita que el programa sepa donde termina  y por eso en el espacio 6 se cambia por  \0 */
  11. signo[i]='\0';
  12.  
  13. for (i = 0; i <=sign; i++)
  14.  
  15. /* Aqui se dividen asi  las especificaciones de imprecion  en el primero le decimos que se imprimira 5 veces el  carcater ' ', despues que se imprimira 1 ves el signo #, despues le decimos que se imprimira un caracter y sera el caracter ' ' y por ultimo  volvemos a imprimir el signo una vez y asi susesibamente dependiendo de como va incrementado i */
  16.  
  17. /*lo que no entiendo es porque en unos usas .* y en otros solo * espeor que me puedas aclarar esa duda*/
  18. printf(" %*c   %.*s     %*c    %.*s     \n", sign+1-i, ' ', i, signo, 1, ' ', i, signo);
  19.  
  20.  

bueno de nuevo muchas gracias por responer  y si me euivo con algo o confundo terminos haganmelo saber.
y bueno ya por ultimo nose si me podrias decir como se llama la tabla de carcateres especiales donde viene.
\n valor 10 y asi susesivamente es que ya no la encuentro.


Título: Re: com imprimir varibles varias veces
Publicado por: rir3760 en 11 Abril 2014, 06:03 am
lo que no entiendo es porque en unos usas .* y en otros solo *
Se utiliza el asterisco para evitar usar un valor entero directamente, en su lugar este se toma de la lista de argumentos. Por ejemplo en la llamada:
Código
  1. printf("%*c\n", 3, 'X');
El carácter 'X' se imprime en un campo de tres caracteres de ancho.

Con el especificador de formato "%s" se puede utilizar la forma "%N.Ms", donde "N" indica la anchura del campo y "M" el numero máximo de caracteres a imprimir (por supuesto siempre y cuando no se encuentre antes el '\0'). Por ejemplo la llamada:
Código
  1. printf("%*.*s\n", 5, 3, "abcde");
Imprime como máximo los tres primeros caracteres de la cadena (en este caso "abc") en un campo cuya anchura es de cinco caracteres.

nose si me podrias decir como se llama la tabla de carcateres especiales donde viene. \n valor 10 y asi susesivamente es que ya no la encuentro.
Supongo te refieres a ASCII (http://es.wikipedia.org/wiki/ASCII)

Un saludo


Título: Re: com imprimir varibles varias veces
Publicado por: Drewermerc en 11 Abril 2014, 06:17 am
hola rir3760.
Bueno entonces si se usa el asterisco no importa cuantos caracteres se imprimiran y cuando se usa *.* se limita el ancho y no se pueden imprimir mas de lo lo asignado al ancho.
gracias por tu respuesta y si es esa tabla nada mas que yo la habia encontradocon los simbolos para ya no leer y  rapido identificarlos con la simbologia pero gracias me servira.


Título: Re: com imprimir varibles varias veces
Publicado por: leosansan en 11 Abril 2014, 21:39 pm
....................................
 si es esa tabla nada mas que yo la habia encontradocon los simbolos para ya no leer y  rapido identificarlos con la simbologia pero gracias me servira.


table of Extended ASCII (http://digital.ni.com/public.nsf/allkb/F518C8909412383E862579590072BD9E)

Al final de la página encuentras el enlace a los 127 primeros caracteres o tabla no extendida de ASCII.


Título: Re: com imprimir varibles varias veces
Publicado por: Drewermerc en 12 Abril 2014, 02:31 am
gracias leosansan si es esa con la simbologia y gracias de nuevo a todo lo que me ayudaron saludos.