programando en c

Iniciado por megadethrust1, 22 Abril 2016, 02:37 AM

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

megadethrust1

como podria hacer un rombo de asteriscos en c de dimension arbitraria pero en el eje x=0 poner "+" y el el punto (0,0) poner "&".



engel lex

movido... las preguntas de c, van en el subforo de c
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

HardForo

#2
Cuál es la duda ? se nota es una tarea que te dieron pero igual te ayudo desde la algoritmica: un rombo esta formado por 4 lineas diagonales, y ......


- Cada linea se hace con un simple bucle (solo una variable de control de bucle)

- El punto final de una, es el punto inicial de la otra

- Las pendientes son -1 o +1 (o sea... subes +1 en Y por cada 1 de variacion de X o bajas 1 en Y)


* Hay formas incluso mas simples de hacerlo con solo 2 bucles
HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *

MAFUS

¿Así?

&  *
+ ***
+*****
+ ***
+  *


¿O así?

& *
+***
+****
+***
+ *

HardForo

#4
No queda claro si es lleno o vacio el rombo y lo que interpreto es que los ++++++ atraviesan el rombo al medio y el & esta justo en su centro (aunque tampoco esta bien especificado el origen de coordenadas)

MAFUS: trocaste el eje X con el Y
HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *

MAFUS


HardForo

#6
MAFUS Tenes toda la razon  ;D




Tengo poco tiempo... pero me pude poner un rato y lo saqué  :xD


int main(void) {
int diag = 6;

make_board(diag+1,diag+1,' ');

// rombo
line(diag/2,0,1,1,diag/2,'a');
line(diag,diag/2,-1,1,diag/2,'b');
line(diag/2,diag,-1,-1,diag/2,'c');
line(0,diag/2,1,-1,diag/2,'d');

// linea para x=0
yblock(0,0,diag+1,'+');

//centro
yblock(0,0,1,'&');

render();

release();
   return 0;
}



Uso una implementación similar a la del problema de la pirámide y la definicion de line() es esta:


// Las lineas pueden ser discontinuas con deltas <> -1,0,+1 (por diseño)
void line(int x1, int y1, int delta_x, int delta_y, int len, char c = '*'){


Otras implementaciones de lineas que me hice fueron para:


void sline(int x1,int y1, int x2, int y2, char c = '*');
void xblock(int x, int y, int len, char c = '*');
void yblock(int x, int y, int len, char c = '*')


Obviamente todo se puede hacer con line() y no se necesita más pero para lineas verticales y horizontales usar yblock() y xblock() puede ser mas comodo.

Si lo tuviera que re-hacer, dejaria un cursor en la posicion final de cada punto, linea, figura dibujada para no tener que calcular a mano ese valor de nuevo como punto de inicio de otras subsiguientes.

Obviamente el programa no compila porque no lo posté completo haciendo caso a recomendaciones del staff
HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *

megadethrust1

Cita de: boctulus en 22 Abril 2016, 15:08 PM
No queda claro si es lleno o vacio el rombo y lo que interpreto es que los ++++++ atraviesan el rombo al medio y el & esta justo en su centro (aunque tampoco esta bien especificado el origen de coordenadas)

MAFUS: trocaste el eje X con el Y
En realidad queria un reloj de arena.
Ya hice mi codigo use for, if,else, pero quiero que en el eje x=0 imprima + y en el punto (0,0) imprima &.

HardForo

Creo puedes hacer el reloj de arena más facil que con bucles, mirá aqui

Si le hago la funcion Pintar(), y borras y redibujas la pantalla.... hasta puede tener movimiento tu reloj de arena (que creo es lo que quieres hacer en ultimo caso)

Si lo miras...... la forma de trabajar se ha simplificado del todo
HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *