[Música tocando] ROB BOWDEN: Son eu, o Rob. Imos examinar como aplicar Mario. Entón o primeiro que temos que facer é solicitar ao usuario para a entrada. Necesitamos preguntar-lles exactamente como altura da pirámide debe ser. Entón, aquí vemos que estamos facendo height = GetInt. Unha E lembre de que a función GetInt é aplicado no CS50 biblioteca, a encima, necesitamos lembre de # include cs50.h. Entón, por que temos este envolto en un loop do-while? Ben, nós tamén precisamos lembrar que entrada do usuario ten que ser válido. ¿Que é unha entrada válida? Ben, a especificación pset di especificamente que unha altura menor que 0 ou máis de 23 non é válido. Entón, aquí vemos que estamos definindo unha constante chamada max_height co valor de 23. Este loop do-while continuará mentres altura é menor que 0 ou max_height é menos que a altura, o que significa que 23 é menor que a altura. Entón, se a altura é de 24 ou maior, estamos continuará looping. Lembre que do-while son bastante útil cando queremos chegar entrada do usuario e, a continuación, válida-lo, xa que inevitablemente que preguntar ao usuario a menos unha vez ao valor que eles queren. Así, unha vez que teñen a súa entrada, que poden agora construír a pirámide. Un dos trucos deste conxunto de problemas é que temos que comezar na parte superior da da pirámide. Non se pode printf parte inferior da pirámide e, a continuación, construír o seu camiño cara arriba. Entón, imos ollar para o exemplo da especificación pset. Vemos aquí que cando entramos unha altura de 8, a parte inferior da pirámide imprime nove hashes. Un nivel por riba do que as impresións un espazo e oito hashes. Un nivel por riba do que é de dous espazos e sete hashes, todo o camiño ata nós chegar ao cumio da pirámide, o que é oito niveis para arriba, que imprime sete espazos e dous hashes. Entón lembre de que debemos facelo de nivel superior en primeiro lugar. Aquí estamos iteración do nivel superior, liña 8, continuando ata cola chega a 0. Entón, como moitos espazos que necesitamos para imprimir nesa liña top? Imprimimos sete espazos e dous hashes. Así, o número de espazos que queremos é a liña que estaban en menos 1. Se a liña superior é de 8, 8 menos 1 dános sete espazos. Entón temos un loop que ha imprimir para cada un espazo de cada vez. Así, cando os espazos é 7, este ciclo sete veces, a impresión sete espazos individuais. Entón, agora necesitamos imprimir eses hashes ao final da pirámide. Entón, aquí, necesitamos calcular o número de hashes. Vemos que estamos facendo altura liña menos 2. Entón como é que nós conseguiu iso? Lembre que o cumio da pirámide É liña 8, e a altura é de 8. E aínda imprimiu dous hashes. Entón, como mínimo, 8 menos 8 máis 2 dános a resposta correcta. E, a continuación, considerar o fondo da pirámide, a liña 1. Liña Altura menos daranos 7 e logo máis 2 dános nove hashes, que é o número de hashes que impreso. Polo tanto, esta é a fórmula que queremos empregar para calcular o número hashes en cada liña. Usando este número, temos entón un outro loop, moi semellante ao loop que usan para os espazos, que itera número de hashes veces imprimindo un único hash de cada vez. Na parte superior de liña, que vai imprimir dúas hashes. Na liña de fondo, que vai imprimir nove hashes. E cada outra liña imprimirá todo número de hashes no medio. E entón, ao final, necesitamos imprimir a nosa nova liña para ir á seguinte remar na pirámide. Por último, hai que imprimir a nova liña ao final da liña, a fin de continuar á seguinte liña de pirámide. E, ao final do noso programa, temos o regreso 0. Segundo a especificación pset, o regreso 0 non é estrictamente necesario. Pero iso non significa que o principal está feito. O meu nome é Rob, e esta foi a Mario. [Música tocando]