>> [REPRODUCCIÓN DE MÚSICA]
>> ROB BOWDEN: Soy yo, Rob.
Vamos a caminar a través de la forma para implementar Mario.
Así que lo primero que tenemos que hacer es solicitar al usuario la entrada.
>> Tenemos que preguntarles exactamente cómo de altura de la pirámide debe ser.
Así que aquí, vemos que estamos haciendo height = GetInt.
Una Y recuerda que la función GetInt se implementa en el CS50
biblioteca, por lo que hasta la parte superior, tenemos que recuerde # include cs50.h.
>> Entonces, ¿por qué tenemos este envuelto en un bucle do-while?
Bueno, también tenemos que recordar que entrada del usuario tiene que ser válido.
¿Qué es una entrada no válida?
Bueno, la especificación pset dice específicamente que una altura menor que 0 o mayor
que 23 no es válido.
>> Así que aquí, vemos que estamos definiendo una constante llamada MAX_HEIGHT con la
valor de 23.
Este bucle do-while continuará mientras la altura es menor que 0 o es MAX_HEIGHT
menos de altura, lo que significa que 23 es menor que la altura.
Así que si la altura es 24 o mayor, estamos va a continuar bucle.
Recuerde que hacer, mientras que los bucles son bastante útil cuando queremos conseguir
la entrada del usuario y luego validarlo, ya inevitablemente necesitamos preguntar al usuario en
menos una vez por el valor que ellos quieren.
>> Así que una vez que tengamos sus opiniones, nos ahora puede construir la pirámide.
Uno de los trucos de este problema es establecer que tenemos que empezar en la parte superior de
la pirámide.
No se puede printf la parte inferior de la pirámide y luego construir su camino hacia arriba.
Así que echemos un vistazo a el ejemplo de la especificación pset.
>> Vemos aquí que cuando entramos en una altura de 8, la parte inferior de la
pirámide imprime nueve hashes.
Un nivel más arriba de que las impresiones un espacio y ocho hashes.
Un nivel por encima de que está a dos espacios y siete hashes, todo el camino hasta que nos
llegar a la cima de la pirámide, que es ocho niveles, que imprime hasta siete
espacios y dos hashes.
Así que recuerde que tenemos que hacer este nivel superior en primer lugar.
>> Aquí estamos iterando desde el nivel superior, la fila 8, continuando
hasta que la fila llegue a 0.
Entonces, ¿cómo muchos espacios qué necesitamos imprimir en la fila de arriba?
Imprimimos siete espacios y dos hashes.
Así que el número de espacios que queremos es la fila, cuando estuvieron menos 1.
>> Si la fila superior es de 8, 8 menos 1 nos da siete espacios.
Entonces tenemos un bucle que imprima a cabo cada uno un espacio a la vez.
Así que cuando los espacios son 7, este bucle siete veces, la impresión
siete espacios individuales.
>> Así que ahora tenemos que imprimir estos hashes al final de la pirámide.
Así que aquí, tenemos que calcular el número de hashes.
Vemos que estamos haciendo altura fila menos más 2.
Entonces, ¿cómo hemos llegado hasta eso?
>> Recuerde que la parte superior de la pirámide es la fila 8, y la altura es de 8.
Y todavía imprimimos dos hashes.
Así, por lo menos, 8 menos 8 más 2 nos da la respuesta correcta.
Y luego considerar la parte inferior de la pirámide, la fila 1.
Fila Altura menos nos dará 7, y a continuación, más 2 nos da nueve hashes,
que es exactamente el número de hashes que imprimimos.
Así que esta es la fórmula que queremos utilizar para calcular el número
hashes en cada fila.
>> El uso de ese número, entonces tenemos otra para el bucle, muy similar a la
para el bucle que se utilizó para los espacios, que se repite varias veces hashes
la impresión de una sola almohadilla cada vez.
En la fila superior, que va a imprimir dos hashes.
En la fila de abajo, que va a imprimir nueve hashes.
Y cada otra fila se imprimirá cada número de hashes en el medio.
>> Y luego, al final, tenemos que imprimir nuestra nueva línea para ir a la siguiente
remar en la pirámide.
Por último, tenemos que imprimir la nueva línea al final de la fila con el fin de
continuar con el siguiente fila de la pirámide.
Y al final de nuestro programa, tenemos el retorno 0.
>> De acuerdo con la especificación del conjunto de procesadores, el regreso 0 no es estrictamente necesario.
Pero sí significa que el principal está hecho.
Mi nombre es Rob, y esto era Mario.
>> [REPRODUCCIÓN DE MÚSICA]