Necesito ayuda con este perfil de montaña
Hola, tengo que resolver este problema:
Crear un programa que genere un perfil de montaña, sabiendo que entre
cada peldaño de la misma sólo puede haber un unidad de diferencia
(positiva o negativa). Utilizaremos la función gotoxy(x,y) para posicionar
cada elemento en pantalla y la función rand() para generar números
aleatórios. El número máximo de peldaños es MAX_PELDANOS y la
altura del nuevo peldaño estará entre MAX_ALTURA_PELDANO y
MIN_ALTURA_PELDANO. Crear todos los tipos y variables que se
requieran.
La idea es hacer un perfil que recuerde una montaña con altos y bajos y totalmente aleatoria.
Para crear cada peldaño deberemos primero generar un número aleatorio entre
MIN_ALTURA_PELDANO y MAX_ALTURA_PELDANO. Una vez tenemos esta altura
debemos hacer una iteración para cada nuevo peldaño hasta llegar a los MAX_PELDANOS de
nuestra montaña.
Es aconsejable hacer este proceso en dos pasos, primero calcular los números aleatorios
según esta condición y después imprimir en pantalla los cuadrados que formen visualmente la
montaña.
Para posicionar un cuadrado en pantalla utilizaremos la función gotoxy(x,y) y para trabajar
con colores utilizaremos la librerÃa conio.h y sus funciones (textcolor(COLOR) y cprintf() que
funciona igual que printf).
Yo lo he intentado hacer con turbo C, y al compilar no me da ningun error pero no consigo que el programa me genere columnas...sino que me hace una L solamente, y no se de que puede ser. Si alguien me pudiese ayudar? GRACIAS y SALU2.
Crear un programa que genere un perfil de montaña, sabiendo que entre
cada peldaño de la misma sólo puede haber un unidad de diferencia
(positiva o negativa). Utilizaremos la función gotoxy(x,y) para posicionar
cada elemento en pantalla y la función rand() para generar números
aleatórios. El número máximo de peldaños es MAX_PELDANOS y la
altura del nuevo peldaño estará entre MAX_ALTURA_PELDANO y
MIN_ALTURA_PELDANO. Crear todos los tipos y variables que se
requieran.
La idea es hacer un perfil que recuerde una montaña con altos y bajos y totalmente aleatoria.
Para crear cada peldaño deberemos primero generar un número aleatorio entre
MIN_ALTURA_PELDANO y MAX_ALTURA_PELDANO. Una vez tenemos esta altura
debemos hacer una iteración para cada nuevo peldaño hasta llegar a los MAX_PELDANOS de
nuestra montaña.
Es aconsejable hacer este proceso en dos pasos, primero calcular los números aleatorios
según esta condición y después imprimir en pantalla los cuadrados que formen visualmente la
montaña.
Para posicionar un cuadrado en pantalla utilizaremos la función gotoxy(x,y) y para trabajar
con colores utilizaremos la librerÃa conio.h y sus funciones (textcolor(COLOR) y cprintf() que
funciona igual que printf).
Yo lo he intentado hacer con turbo C, y al compilar no me da ningun error pero no consigo que el programa me genere columnas...sino que me hace una L solamente, y no se de que puede ser. Si alguien me pudiese ayudar? GRACIAS y SALU2.
El codigo que tengo es este:
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<stdlib.h>
void main()
{
int max_peldanos=15;
int max_altura_peldano,min_altura_peldano,d,x,i,y,num,j,k=0;
int a=10;
int b=20;
clrscr();
printf(\"Programa que genera un perfil de monta¤a con valores aleatorios\\n\\n\");
printf(\"Introduce el valor de m xima altura del pelda¤o:\\n\");
scanf(\"%d\",&max_altura_peldano);
printf(\"Introduce el valor de m¡nima altura del pelda¤o:\\n\");
scanf(\"%d\",&min_altura_peldano);
d=(max_altura_peldano - min_altura_peldano)+1;
x=(rand()%d)+min_altura_peldano;
num=x;
while (x!=0)
{
gotoxy(a,b);
printf(\"±\");
b=b-1;
x=x-1;
}
x=num;
for(i=1;i<=max_peldanos;i=i+1)
{
a=a+1;
b=20;
y=rand()%2;
if (y!=0)
{
gotoxy(a,b);
x=x+1;
for (j=0;j<=x;j++)
{
printf(\"±\");
b=b-1;
}
} else
gotoxy(a,b);
x=x-1;
for (k=0;k<=x;k++)
{
printf(\"±\");
b=b-1;
}
}
fflush(stdin);
}
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<stdlib.h>
void main()
{
int max_peldanos=15;
int max_altura_peldano,min_altura_peldano,d,x,i,y,num,j,k=0;
int a=10;
int b=20;
clrscr();
printf(\"Programa que genera un perfil de monta¤a con valores aleatorios\\n\\n\");
printf(\"Introduce el valor de m xima altura del pelda¤o:\\n\");
scanf(\"%d\",&max_altura_peldano);
printf(\"Introduce el valor de m¡nima altura del pelda¤o:\\n\");
scanf(\"%d\",&min_altura_peldano);
d=(max_altura_peldano - min_altura_peldano)+1;
x=(rand()%d)+min_altura_peldano;
num=x;
while (x!=0)
{
gotoxy(a,b);
printf(\"±\");
b=b-1;
x=x-1;
}
x=num;
for(i=1;i<=max_peldanos;i=i+1)
{
a=a+1;
b=20;
y=rand()%2;
if (y!=0)
{
gotoxy(a,b);
x=x+1;
for (j=0;j<=x;j++)
{
printf(\"±\");
b=b-1;
}
} else
gotoxy(a,b);
x=x-1;
for (k=0;k<=x;k++)
{
printf(\"±\");
b=b-1;
}
}
fflush(stdin);
}
