Programación General > C/C++

 Dibujar un rombo con asteriscos con Lenguaje C

(1/3) > >>

DanielC#:
Hola a todos y que tengan un muy buen día.


--- Código: C ---#include <stdio.h>     int main (int argc,char **argv){     char *a[] = {"    *", "   ***", "  *****", " *******", "*********"};     int i=0, j=2;             for(; i<9; i++){          if(i >= 0 && i <= 4){               printf("\n %s", a[i]);          }          else{               printf("\n %s", a[i-j]);               j+=2;          }     }          printf("\n\n");     return 0;}
Bueno al fin lo logre, sin copiar a las muchas versiones que debe haber en internet, solo que me parece innecesarios los espacios que tuve que poner en el array de punteros “a”, supongo que debe haber otra manera.-
La consulta es, se puede introducir entre “%s” una variable entera para que quede de esta manera:
Int b = 7;
printf("\n %bs", a);
Me da error y no logro hacerlo de otra manera, cualquier sugerencia será bienvenida.-

Desde ya muchas gracias por el tiempo.-

Saludos.
Daniel

chenech:
Hola, creo que la forma de ponerlo es:

Int b = 7;
printf("\n %i%s", b, a);

DanielC#:
Hola  chenech.
No obtengo el resultado esperado, parecería que no está contemplado en el prototipo de la función printf, de cualquier manera pude mejorar y de hecho optimizar mi código, sólo me falta hacerlo con el operador condicional (ternario), por el momento me falta un poco de práctica para lograrlo pero ya lo estoy intentando (si queréis darme una mano, te estaré muy agradecido).-   


--- Código: C ---#include <stdio.h> int main(){     int i=0, izq=5, der=5;     char ate[] = "          ";              for(; i<10; i++){          if(i<5){               ate[izq] = '*';ate[der] = '*';               izq--;der++;          }          else{               izq++;der--;               ate[izq] = ' ';ate[der] = ' ';          }          printf("\n %s", ate);     }              return 0;}
Saludos.
Daniel

chenech:
El operador ternario funciona se puede usar normalmente en un if/else, de la siguiente forma:

--- Código: ---in iValor, iResultado;
if(iValor == 0)
  iResultado = 1;
else
  iResultado = 0;

--- Fin del código ---
con el operador seria asi:

--- Código: ---int iValor;
int iResultado = (iValor == 0) ? 1 : 0;

--- Fin del código ---
O sea, se pregunta por la condición y se asigna el primer valor o el segundo según sea cierta o no.
Los ceros y uno pueden ser perfectamente variables, lo he puesto asi para reducir código.
Un saludo.

DanielC#:
Hola  chenech
Muchas gracias por la ayuda, un solo favor más te voy a pedir, tan sólo decime si lo que quiero hacer (con el código de dejo a continuación) es factible, practique de todas maneras con paréntesis, punto y coma y nada, con solo saber que se puede hacer voy a seguir leyendo y practicando hasta lograrlo.-
   

--- Código: C ---#include <stdio.h> int main(){     int i=0, izq=5, der=5;     char ate[] = "          ";              for(; i<10; i++){          (i<5) ? ate[izq] = '*' ate[der] = '*' izq-- der++ : izq++ der-- ate[izq] = ' ' ate[der] = ' ';      }          getchar();              return 0;}


Saludos.
Daniel

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa