[Música tocando] ROB BOWDEN: Sou eu, o Rob. Vamos examinar como implementar Mario. Então a primeira coisa que precisamos fazer é solicitar ao usuário para a entrada. Precisamos perguntar-lhes exatamente como altura da pirâmide deve ser. Então, aqui, vemos que estamos fazendo height = GetInt. Uma E lembre-se de que a função GetInt é implementado no CS50 biblioteca, para em cima, precisamos lembre-se de # include cs50.h. Então, por que temos esta envolto em um loop do-while? Bem, nós também precisamos lembrar que entrada do usuário tem que ser válida. O que é uma entrada inválida? Bem, a especificação pset diz especificamente que uma altura menor do que 0 ou maior de 23 é inválido. Então, aqui, vemos que estamos definindo uma constante chamada max_height com o valor de 23. Este loop do-while continuará enquanto altura é menor que 0 ou max_height é menos do que a altura, o que significa que 23 é menor do que a altura. Então, se a altura é de 24 ou maior, estamos vai continuar looping. Lembre-se que do-while são bastante útil quando queremos chegar entrada do usuário e, em seguida, validá-lo, uma vez que inevitavelmente precisa perguntar ao usuário a menos uma vez para o valor que eles querem. Assim, uma vez que têm a sua entrada, que podem agora construir a pirâmide. Um dos truques deste conjunto de problemas é que nós temos que começar no topo da da pirâmide. Não é possível printf parte inferior da pirâmide e, em seguida, construir o seu caminho para cima. Então, vamos olhar para o exemplo da especificação pset. Vemos aqui que quando entramos uma altura de 8, a parte inferior da pirâmide imprime nove hashes. Um nível acima do que as impressões um espaço e oito hashes. Um nível acima do que é de dois espaços e sete hashes, todo o caminho até nós chegar ao topo da pirâmide, o que é oito níveis para cima, que imprime sete espaços e dois hashes. Então lembre-se de que temos de fazer isso de nível superior em primeiro lugar. Aqui nós estamos iteração do nível superior, linha 8, continuando até fila chega a 0. Então, como muitos espaços que nós precisamos para imprimir nessa linha top? Imprimimos sete espaços e dois hashes. Assim, o número de espaços que queremos é a linha que estavam em menos 1. Se a linha superior é de 8, 8 menos 1 dá-nos sete espaços. Então nós temos um loop que irá imprimir para cada um espaço de cada vez. Assim, quando os espaços é 7, este ciclo sete vezes, a impressão sete espaços individuais. Então, agora nós precisamos imprimir esses hashes no final da pirâmide. Então, aqui, precisamos calcular o número de hashes. Vemos que estamos fazendo altura linha menos mais 2. Então como é que nós conseguiu isso? Lembre-se que o topo da pirâmide É linha 8, e a altura é de 8. E ainda imprimiu dois hashes. Então, no mínimo, 8 menos 8 mais 2 nos dá a resposta certa. E, em seguida, considerar o fundo da pirâmide, a linha 1. Linha Altura menos nos dará 7 e em seguida, mais 2 nos dá nove hashes, que é exatamente o número de hashes que impresso. Portanto, esta é a fórmula que queremos utilizado para calcular o número hashes em cada linha. Usando esse número, temos então um outro loop, muito semelhante ao loop que usamos para os espaços, que itera número de hashes vezes imprimindo um único hash de cada vez. No topo de linha, que vai imprimir duas hashes. Na linha de fundo, que vai imprimir nove hashes. E cada outra linha irá imprimir todos os número de hashes no meio. E então, no final, precisamos imprimir a nossa nova linha para ir para a próxima remar na pirâmide. Finalmente, é preciso imprimir a nova linha no fim da linha, a fim de continuar para a próxima linha de pirâmide. E, no final do nosso programa, temos o retorno 0. De acordo com a especificação pset, o retorno 0 não é estritamente necessário. Mas isso não significa que o principal está feito. Meu nome é Rob, e esta foi a Mario. [Música tocando]