1 00:00:00,000 --> 00:00:00,982 2 00:00:00,982 --> 00:00:11,293 >> [REPRODUCCIÓN DE MÚSICA] 3 00:00:11,293 --> 00:00:13,580 >> ROB BOWDEN: Soy yo, Rob. 4 00:00:13,580 --> 00:00:16,540 Vamos a caminar a través de la forma para implementar Mario. 5 00:00:16,540 --> 00:00:21,040 Así que lo primero que tenemos que hacer es solicitar al usuario la entrada. 6 00:00:21,040 --> 00:00:24,440 >> Tenemos que preguntarles exactamente cómo de altura de la pirámide debe ser. 7 00:00:24,440 --> 00:00:27,110 Así que aquí, vemos que estamos haciendo height = GetInt. 8 00:00:27,110 --> 00:00:32,479 Una Y recuerda que la función GetInt se implementa en el CS50 9 00:00:32,479 --> 00:00:38,060 biblioteca, por lo que hasta la parte superior, tenemos que recuerde # include cs50.h. 10 00:00:38,060 --> 00:00:41,360 >> Entonces, ¿por qué tenemos este envuelto en un bucle do-while? 11 00:00:41,360 --> 00:00:45,080 Bueno, también tenemos que recordar que entrada del usuario tiene que ser válido. 12 00:00:45,080 --> 00:00:46,910 ¿Qué es una entrada no válida? 13 00:00:46,910 --> 00:00:51,460 Bueno, la especificación pset dice específicamente que una altura menor que 0 o mayor 14 00:00:51,460 --> 00:00:54,530 que 23 no es válido. 15 00:00:54,530 --> 00:00:59,030 >> Así que aquí, vemos que estamos definiendo una constante llamada MAX_HEIGHT con la 16 00:00:59,030 --> 00:01:00,750 valor de 23. 17 00:01:00,750 --> 00:01:06,380 Este bucle do-while continuará mientras la altura es menor que 0 o es MAX_HEIGHT 18 00:01:06,380 --> 00:01:11,870 menos de altura, lo que significa que 23 es menor que la altura. 19 00:01:11,870 --> 00:01:15,390 Así que si la altura es 24 o mayor, estamos va a continuar bucle. 20 00:01:15,390 --> 00:01:18,300 Recuerde que hacer, mientras que los bucles son bastante útil cuando queremos conseguir 21 00:01:18,300 --> 00:01:22,070 la entrada del usuario y luego validarlo, ya inevitablemente necesitamos preguntar al usuario en 22 00:01:22,070 --> 00:01:25,010 menos una vez por el valor que ellos quieren. 23 00:01:25,010 --> 00:01:28,500 >> Así que una vez que tengamos sus opiniones, nos ahora puede construir la pirámide. 24 00:01:28,500 --> 00:01:31,940 Uno de los trucos de este problema es establecer que tenemos que empezar en la parte superior de 25 00:01:31,940 --> 00:01:32,750 la pirámide. 26 00:01:32,750 --> 00:01:36,800 No se puede printf la parte inferior de la pirámide y luego construir su camino hacia arriba. 27 00:01:36,800 --> 00:01:38,830 Así que echemos un vistazo a el ejemplo de la especificación pset. 28 00:01:38,830 --> 00:01:41,530 29 00:01:41,530 --> 00:01:45,430 >> Vemos aquí que cuando entramos en una altura de 8, la parte inferior de la 30 00:01:45,430 --> 00:01:48,660 pirámide imprime nueve hashes. 31 00:01:48,660 --> 00:01:52,990 Un nivel más arriba de que las impresiones un espacio y ocho hashes. 32 00:01:52,990 --> 00:01:58,250 Un nivel por encima de que está a dos espacios y siete hashes, todo el camino hasta que nos 33 00:01:58,250 --> 00:02:03,050 llegar a la cima de la pirámide, que es ocho niveles, que imprime hasta siete 34 00:02:03,050 --> 00:02:06,000 espacios y dos hashes. 35 00:02:06,000 --> 00:02:08,810 Así que recuerde que tenemos que hacer este nivel superior en primer lugar. 36 00:02:08,810 --> 00:02:11,620 37 00:02:11,620 --> 00:02:18,500 >> Aquí estamos iterando desde el nivel superior, la fila 8, continuando 38 00:02:18,500 --> 00:02:22,150 hasta que la fila llegue a 0. 39 00:02:22,150 --> 00:02:25,820 Entonces, ¿cómo muchos espacios qué necesitamos imprimir en la fila de arriba? 40 00:02:25,820 --> 00:02:29,310 Imprimimos siete espacios y dos hashes. 41 00:02:29,310 --> 00:02:34,450 Así que el número de espacios que queremos es la fila, cuando estuvieron menos 1. 42 00:02:34,450 --> 00:02:39,310 >> Si la fila superior es de 8, 8 menos 1 nos da siete espacios. 43 00:02:39,310 --> 00:02:43,770 Entonces tenemos un bucle que imprima a cabo cada uno un espacio a la vez. 44 00:02:43,770 --> 00:02:47,450 Así que cuando los espacios son 7, este bucle siete veces, la impresión 45 00:02:47,450 --> 00:02:50,300 siete espacios individuales. 46 00:02:50,300 --> 00:02:54,672 >> Así que ahora tenemos que imprimir estos hashes al final de la pirámide. 47 00:02:54,672 --> 00:02:57,930 Así que aquí, tenemos que calcular el número de hashes. 48 00:02:57,930 --> 00:03:01,930 Vemos que estamos haciendo altura fila menos más 2. 49 00:03:01,930 --> 00:03:04,170 Entonces, ¿cómo hemos llegado hasta eso? 50 00:03:04,170 --> 00:03:08,630 >> Recuerde que la parte superior de la pirámide es la fila 8, y la altura es de 8. 51 00:03:08,630 --> 00:03:10,890 Y todavía imprimimos dos hashes. 52 00:03:10,890 --> 00:03:15,420 Así, por lo menos, 8 menos 8 más 2 nos da la respuesta correcta. 53 00:03:15,420 --> 00:03:19,170 Y luego considerar la parte inferior de la pirámide, la fila 1. 54 00:03:19,170 --> 00:03:24,020 Fila Altura menos nos dará 7, y a continuación, más 2 nos da nueve hashes, 55 00:03:24,020 --> 00:03:26,620 que es exactamente el número de hashes que imprimimos. 56 00:03:26,620 --> 00:03:29,880 Así que esta es la fórmula que queremos utilizar para calcular el número 57 00:03:29,880 --> 00:03:32,220 hashes en cada fila. 58 00:03:32,220 --> 00:03:36,020 >> El uso de ese número, entonces tenemos otra para el bucle, muy similar a la 59 00:03:36,020 --> 00:03:41,270 para el bucle que se utilizó para los espacios, que se repite varias veces hashes 60 00:03:41,270 --> 00:03:43,720 la impresión de una sola almohadilla cada vez. 61 00:03:43,720 --> 00:03:46,010 En la fila superior, que va a imprimir dos hashes. 62 00:03:46,010 --> 00:03:48,390 En la fila de abajo, que va a imprimir nueve hashes. 63 00:03:48,390 --> 00:03:52,610 Y cada otra fila se imprimirá cada número de hashes en el medio. 64 00:03:52,610 --> 00:03:57,340 >> Y luego, al final, tenemos que imprimir nuestra nueva línea para ir a la siguiente 65 00:03:57,340 --> 00:03:59,400 remar en la pirámide. 66 00:03:59,400 --> 00:04:03,070 Por último, tenemos que imprimir la nueva línea al final de la fila con el fin de 67 00:04:03,070 --> 00:04:06,260 continuar con el siguiente fila de la pirámide. 68 00:04:06,260 --> 00:04:08,980 Y al final de nuestro programa, tenemos el retorno 0. 69 00:04:08,980 --> 00:04:12,770 >> De acuerdo con la especificación del conjunto de procesadores, el regreso 0 no es estrictamente necesario. 70 00:04:12,770 --> 00:04:15,710 Pero sí significa que el principal está hecho. 71 00:04:15,710 --> 00:04:17,610 Mi nombre es Rob, y esto era Mario. 72 00:04:17,610 --> 00:04:22,470 >> [REPRODUCCIÓN DE MÚSICA] 73 00:04:22,470 --> 00:04:25,558