Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Dibujar Rombo

Estas en el tema de Dibujar Rombo en el foro de C/C++ en Foros del Web. Hola, llevo un par de dias programando en C, he empezado a utilizar c++ builder porque en clase nos han pedido que nos vayamos familiarizando. ...
  #1 (permalink)  
Antiguo 26/11/2011, 09:06
 
Fecha de Ingreso: febrero-2010
Mensajes: 7
Antigüedad: 14 años, 1 mes
Puntos: 0
Dibujar Rombo

Hola, llevo un par de dias programando en C, he empezado a utilizar c++ builder porque en clase nos han pedido que nos vayamos familiarizando.
He conseguido hacer todas las figuras que me pedian hacer en pseudocodigo en el c++ builder y acabo de hacer el rombo pero me gustaria saber si se puede simplificar mas el codigo.
Yo he conseguido sacarlo haciendolo de esta manera.

Código C:
Ver original
  1. #include<stdio.h>
  2. #include<conio.h>
  3. void main()
  4. { int nl,i,j,h,k,a,c1,c2;
  5. printf("Dame un numero de lineas");
  6. scanf("%d",&nl);
  7.  
  8. //Rombo exacto
  9.      if(nl>=7)
  10.      {
  11.       while(nl>=7)
  12.       {
  13.         for(i=1;i<=4;i++)
  14.         {
  15.                 for(j=3;j>=i;j--)
  16.                 {
  17.                 printf("-");
  18.                 }
  19.                 for(h=1;h<=i;h++)
  20.                 {
  21.                 printf("*");
  22.                 }
  23.                 for(k=1;k<i;k++)
  24.                 {
  25.                 printf("*");
  26.                 }
  27.                 for(j=4;j>i;j--)
  28.                 {
  29.                 printf("-");
  30.                 }
  31.         printf("\n");
  32.         }
  33.  
  34.         for(i=1;i<=3;i++)
  35.         {
  36.                 for(j=1;j<=i;j++)
  37.                 {
  38.                 printf("-");
  39.                 }
  40.                 for(h=3;h>=i;h--)
  41.                 {
  42.                 printf("*");
  43.                 }
  44.                 for(k=2;k>=i;k--)
  45.                 {
  46.                 printf("*");
  47.                 }
  48.                 for(j=1;j<=i;j++)
  49.                 {
  50.                 printf("-");
  51.                 }
  52.         printf("\n");
  53.         }
  54.         nl=nl-7;
  55.         }
  56.  
  57.       }
  58. //Rombo no exacto
  59. if (nl<7)
  60. {
  61.        c1=4;
  62.        if(c1<nl)
  63.        {
  64.                 for(i=1;i<=c1;i++)
  65.                 {
  66.                         for(j=3;j>=i;j--)
  67.                         {
  68.                         printf("-");
  69.                         }
  70.                         for(h=1;h<=i;h++)
  71.                         {
  72.                         printf("*");
  73.                         }
  74.                         for(k=1;k<i;k++)
  75.                         {
  76.                         printf("*");
  77.                         }
  78.                         for(j=4;j>i;j--)
  79.                         {
  80.                         printf("-");
  81.                         }
  82.                 printf("\n");
  83.                 }
  84.                 c2=nl-c1;
  85.         }
  86.         else
  87.         {
  88.                 for(i=1;i<=nl;i++)
  89.                 {
  90.                         for(j=3;j>=i;j--)
  91.                         {
  92.                         printf("-");
  93.                         }
  94.                         for(h=1;h<=i;h++)
  95.                         {
  96.                         printf("*");
  97.                         }
  98.                         for(k=1;k<i;k++)
  99.                         {
  100.                         printf("*");
  101.                         }
  102.                         for(j=4;j>i;j--)
  103.                         {
  104.                         printf("-");
  105.                         }
  106.                 printf("\n");
  107.                 }
  108.                 c2=nl-c1;
  109.         }
  110.         if(c2>0)
  111.         {
  112.                 for(i=1;i<=c2;i++)
  113.                 {
  114.                         for(j=1;j<=i;j++)
  115.                         {
  116.                         printf("-");
  117.                         }
  118.                         for(h=3;h>=i;h--)
  119.                         {
  120.                         printf("*");
  121.                         }
  122.                         for(k=2;k>=i;k--)
  123.                         {
  124.                         printf("*");
  125.                         }
  126.                         for(j=1;j<=i;j++)
  127.                         {
  128.                         printf("-");
  129.                         }
  130.                 printf("\n");
  131.                 }
  132.      }
  133. }
  134. }


Lo que me piden es hacer un rombo con un numero máximo de 7 lineas, el dibujo seria asi:

- - - * - - -
- - * * * - -
- * * * * * -
* * * * * * *
- * * * * * -
- - * * * - -
- - - * - - -


Lo que yo he entendido del ejercicio es que si meto numero de lineas 8 el rombo volveria a empezar pero solo dibujando la primera linea, y asi si metiera 9, o 10, pues dibujaria otras lineas mas.
A ver si alguien saber hacerlo evitando usar el while, aunque nose si es imprescindible, voy un poco adelantado en clase y nose si exactamente me pedian eso o simplemente dibujar 1 rombo, pero ya que he conseguido sacarlo a ver si se puede depurar un poco.
Un saludo y gracias.

Última edición por elputoamo65; 26/11/2011 a las 09:34

Etiquetas: clase, dibujar, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:02.