com imprimir varibles varias veces

Iniciado por Drewermerc, 10 Abril 2014, 16:40 PM

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

Drewermerc

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.

eferion

Sin código es complicado corregir errores... podemos ser buenos, pero no hemos llegado a dominar la telekinesia ( al menos yo ).

amchacon

Cita de: 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 ).
Es telepatia noob ;D

En C++ tienes setwidth y setfill. Con esas dos puedes hacerlo del tiron, busca la referencia en google.
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

eferion

Cierto... es hora de hacer un descanso antes de que me explote la cabeza

Drewermerc

#4
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.


#include <stdio.h>

int main (void)
{
char sig = "#", es = " ";
int esp, sign, n, i;
esp = sign = 0;
printf("introduce el numero de espacios que quieres dejar a la izquierda");
scanf("%d", &esp);
printf("introduce el numero de veces que quieres repetir el signo");
scanf("%d", &sign);
for (i = 0 ; i <=  esp; i++)
{
       printf(" %s", es);
     for (n = 0; n <= sign; n ++)
     {
           printf(" %s",sign);
      }
}

}

bueno eso es lo que tengo espero que me peudan ayudar.

rir3760

Solo necesitas dos bucles, uno despues de otro, de esta forma:
for (i = 0; i < esp; i++)
   putchar(' ');
for (i = 0; i < sign; i++)
   putchar('#');
putchar('\n');


Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

leosansan


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 (cpp) [Seleccionar]

scanf .....................
printf("%*c",esp,' ');
  for (i=0;i<sign;i++ )
    putchar('#');
........................


Salu2!.

Drewermerc

#7
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.



#include <stdio.h>
   
   int main (void)
   {
 
   int esp, sign, n, i = 0;
   esp = sign = 0;
   printf("introduce el numero de veces que quieres repetir el signo");
   scanf("%d", &sign);
esp = sign ;
for (i = 0; i < sign; i++)

{
printf("%*c",esp,' ');
putchar('#');
putchar('\n');
esp--;

}
return 0;
}

noele1995

Tienes que ir reduciendo los espacios y aumentado los signos todo el rato para hacer lo de la izq:

Código (cpp) [Seleccionar]
for (int i = 1; i <= sign; i++)
{
esp = sign -i;
if (esp > 0)
printf("%*c",esp,' ');

for(int j = esp; j < sign; j++)
putchar('#');

putchar('\n');
}

Ahora intenta terminarlo tu

leosansan


¿Algo como esto?:

Código (cpp) [Seleccionar]

Que numero de veces quieres que se imprima el signo:
10

          # #
         ## ##
        ### ###
       #### ####
      ##### #####
     ###### ######
    ####### #######
   ######## ########
  ######### #########
########## ##########



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

Código (cpp) [Seleccionar]

............................
scanf.....sign..............
char signo[sign+1];
for (i = 0; i <= sign; i++)
  signo[i]='#';
signo[i]='\0';
for (i = 0; i <=sign; i++)
  printf("%*c%.*s%*c%.*s\n", sign+1-i, ' ', i, signo, 1, ' ', i, signo);


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