[GIOCO MUSICA] ROB BOWDEN: io, Rob. Camminiamo attraverso il modo ad attuare Mario. Quindi la prima cosa che dobbiamo fare è richiedere all'utente per l'ingresso. Dobbiamo chiedere loro esattamente come altezza della piramide dovrebbe essere. Così qui, vediamo che stiamo facendo height = GetInt. Un E ricordate che la funzione GetInt è implementato nel CS50 biblioteca, così in alto, abbiamo bisogno di ricordarsi di # include cs50.h. Allora perché abbiamo questa avvolto in un ciclo do-while? Beh, dobbiamo anche ricordare che l'input dell'utente deve essere valido. Che cosa è un input non valido? Beh, la spec pset dice espressamente che un'altezza minore di 0 o maggiore a 23 non è valido. Quindi qui, vediamo che stiamo definendo una costante detta MAX_HEIGHT con l' valore di 23. Questo ciclo do-while continuerà mentre altezza è minore di 0 o MAX_HEIGHT è meno di altezza, il che significa che 23 è inferiore all'altezza. Quindi, se l'altezza è di 24 o superiore, noi siamo intenzione di continuare il ciclo. Ricorda che do-while sono abbastanza utile ogni volta che vogliamo ottenere input dell'utente e poi convalidate, poiché abbiamo inevitabilmente bisogno di chiedere all'utente in almeno una volta per il valore che vogliono. Quindi, una volta che abbiamo il loro contributo, abbiamo possono ora costruire la piramide. Uno dei trucchi di questo problema stabiliti è che dobbiamo iniziare in cima la piramide. Non è possibile printf il fondo del piramide e poi costruire il vostro senso. Quindi cerchiamo di guardare l'esempio dalla specifica pset. Vediamo qui che quando entriamo in un altezza 8, il fondo della piramide stampa nove hash. Un livello da quel stampe uno spazio e otto hash. Un livello dal quale dista due spazi e sette hash, tutta la strada fino a quando non raggiungere la cima della piramide, che è otto livelli in su, che stampa sette spazi e due hash. Quindi ricorda che dobbiamo fare questo livello superiore per primo. Qui stiamo iterando dal livello superiore, fila 8, continuando fino fila raggiunge lo 0. Così come molti spazi abbiamo bisogno per stampare in quella riga superiore? Abbiamo stampato sette spazi e due hash. Così il numero di spazi che vogliamo è la riga che erano in meno 1. Se la riga è 8, 8 meno 1 ci dà sette spazi. Poi abbiamo un ciclo che verrà stampata su ciascuno spazio alla volta. Così, quando gli spazi sono 7, questo ciclo sette volte, stampa sette spazi individuali. Così ora abbiamo bisogno di stampare queste hash alla fine della piramide. Così qui, dobbiamo calcolare il numero di hash. Vediamo che stiamo facendo altezza fila minus più 2. Così come siamo arrivati ​​che? Ricordate che la parte superiore della piramide è riga 8, e l'altezza è 8. E abbiamo ancora stampato due hash. Così, almeno, 8 meno 8 più 2 ci dà la risposta giusta. E quindi prendere in considerazione il fondo della piramide, riga 1. Fila Altezza meno ci darà 7, e poi più 2 ci dà nove hash, che è esattamente il numero di hash che abbiamo stampato. Quindi questa è la formula che vogliamo utilizzare per calcolare il numero hash in ogni riga. Usando quel numero, abbiamo poi un altro per ciclo, molto simile al per il ciclo che abbiamo usato per gli spazi, che scorre numero di hash volte la stampa di un singolo hash ogni volta. Sulla riga superiore, che sarà stampare due hash. Nella riga in basso, che sarà stampare nove hash. E ogni altra riga stamperà ogni numero di hash in mezzo. E poi alla fine, abbiamo bisogno di stampare la nostra nuova linea per andare alla prossima remare nella piramide. Infine, abbiamo bisogno di stampare la nuova linea alla fine della riga per proseguire verso il successivo riga della piramide. E alla fine del nostro programma, abbiamo il return 0. Come per la pset spec, il ritorno 0 non è strettamente necessario. Ma non significa che il principale è fatto. Il mio nome è Rob, e questo era Mario. [GIOCO MUSICA]