>> [Παίζει μουσική]
>> ROB BOWDEN: Εγώ είμαι, Rob.
Ας δούμε πώς για την εφαρμογή Mario.
Έτσι, το πρώτο πράγμα που πρέπει να κάνουμε είναι προτρέπει το χρήστη για την είσοδο.
>> Πρέπει να τους ρωτήσω πώς ακριβώς ψηλά η πυραμίδα θα πρέπει να είναι.
Μέχρι εδώ, βλέπουμε κάνουμε height = GetInt.
Ένα Και να θυμάστε ότι η λειτουργία GetInt υλοποιείται στο CS50
βιβλιοθήκη, έτσι ώστε επάνω στην κορυφή, θα πρέπει να θυμηθείτε να # include cs50.h.
>> Έτσι, γιατί έχουμε αυτό το τυλιγμένο σε ένα do-while loop;
Λοιπόν, θα πρέπει επίσης να θυμόμαστε ότι είσοδο του χρήστη πρέπει να είναι έγκυρη.
Τι είναι ένα μη έγκυρο εισόδου;
Καλά το spec το chipset λέει συγκεκριμένα ότι ένα ύψος μικρότερο από 0 ή μεγαλύτερο
από 23 είναι άκυρη.
>> Έτσι, εδώ, βλέπουμε ότι είμαστε ορισμό μια σταθερά που ονομάζεται MAX_HEIGHT με το
αξίας 23.
Αυτή η do-while loop θα συνεχιστεί, ενώ το ύψος είναι μικρότερο από μηδέν ή είναι MAX_HEIGHT
λιγότερο από ό, τι ύψος, το οποίο σημαίνει ότι 23 είναι μικρότερο από το ύψος.
Έτσι, αν το ύψος είναι 24 ή μεγαλύτερο, είμαστε πρόκειται να συνεχίσει looping.
Να θυμάστε ότι η do-while loops είναι αρκετά χρήσιμο όταν θέλουμε να
εισόδου του χρήστη και στη συνέχεια να επικυρώσει, δεδομένου αναπόφευκτα πρέπει να ζητήσει από το χρήστη σε
τουλάχιστον μία φορά για την τιμή που θέλουν.
>> Έτσι, τη στιγμή που έχουμε τη συμβολή τους, εμείς μπορεί πλέον να στηριχθεί στην πυραμίδα.
Ένα από τα κόλπα του προβλήματος αυτού που είναι ότι θα πρέπει να ξεκινούν από την κορυφή του
η πυραμίδα.
Δεν μπορείτε να printf το κάτω μέρος του πυραμίδα και στη συνέχεια να οικοδομήσουν το δρόμο σας επάνω.
Έτσι, ας δούμε το παράδειγμα από το spec το chipset.
>> Βλέπουμε εδώ ότι όταν μπαίνουμε σε ένα ύψος 8, το κάτω μέρος του
πυραμίδα εκτυπώνει εννέα hashes.
Ένα επίπεδο πιο πάνω από ότι οι εκτυπώσεις ένα χώρο και οκτώ hashes.
Ένα επίπεδο πιο πάνω από ότι είναι δύο χώρων και επτά hashes, σε όλη τη διαδρομή μέχρι να
να φτάσουμε στην κορυφή της πυραμίδας, η οποία είναι οκτώ επίπεδα επάνω, η οποία εκτυπώνει επτά
χώρους και δύο hashes.
Έτσι, να θυμάστε ότι πρέπει να κάνει αυτό το κορυφαίο επίπεδο πρώτα.
>> Εδώ είμαστε επανάληψη από το κορυφαίο επίπεδο, σειρά 8, συνεχίζοντας
μέχρι την γραμμή φτάσει στο 0.
Έτσι, πόσες θέσεις δεν χρειαζόμαστε να εκτυπώσετε σε αυτό πάνω σειρά;
Εμείς τυπωμένα επτά θέσεις και δύο hashes.
Έτσι, ο αριθμός των χώρων που θέλουμε είναι η σειρά που ήταν στο μείον 1.
>> Εάν η κορυφαία σειρά είναι 8, 8 μείον 1 μας δίνει επτά θέσεις.
Στη συνέχεια έχουμε μια θηλιά που θα εκτυπωθούν έξω κάθε χώρο, ένα κάθε φορά.
Έτσι, όταν χώρους είναι 7, αυτός ο βρόχος επτά φορές, εκτύπωση
επτά επιμέρους χώρων.
>> Έτσι τώρα πρέπει να εκτυπώσετε αυτές τις hashes στο τέλος της πυραμίδας.
Μέχρι εδώ, πρέπει να υπολογίσουμε ο αριθμός των hashes.
Βλέπουμε ότι κάνουμε ύψος μείον σειρά συν 2.
Λοιπόν, πώς θα πάρει αυτό;
>> Να θυμάστε ότι η κορυφή της πυραμίδας είναι σειρά 8, και το ύψος είναι 8.
Και είμαστε ακόμα εκτυπωθεί δύο hashes.
Έτσι, τουλάχιστον, 8 μείον 8 συν 2 μας δίνει τη σωστή απάντηση.
Και στη συνέχεια να εξετάσει το κάτω μέρος της πυραμίδας, σειρά 1.
Ύψος μείον σειρά θα μας δώσει 7, και Στη συνέχεια συν 2 μας δίνει εννέα hashes,
που είναι ακριβώς ο αριθμός από hashes ότι εκτυπωθεί.
Έτσι, αυτό είναι ο τύπος που θέλουμε να χρησιμοποιούν για να υπολογίσουν τον αριθμό
hashes σε κάθε σειρά.
>> Χρησιμοποιώντας τον αριθμό αυτό, τότε έχουμε μια άλλη για βρόχο, πολύ παρόμοιο με το
για το βρόχο που χρησιμοποιείται για τους χώρους, ότι επαναλαμβάνει τον αριθμό των hashes φορές
εκτύπωση σε έναν μόνο hash κάθε φορά.
Στην κορυφή γραμμή, που θα εκτύπωση δύο hashes.
Στην κάτω σειρά, που θα εκτύπωση εννέα hashes.
Και κάθε άλλη σειρά θα εκτυπώσει κάθε αριθμός των hashes στο μεταξύ.
>> Και στη συνέχεια, στο τέλος, θα πρέπει να εκτύπωση νέα γραμμή μας για να πάει στο επόμενο
γραμμή στην πυραμίδα.
Τέλος, θα πρέπει να εκτυπώσετε τη νέα γραμμή στο τέλος της σειράς, ώστε να
συνεχίστε με το επόμενο σειρά της πυραμίδας.
Και στο τέλος του προγράμματός μας, έχουμε την επιστροφή 0.
>> Σύμφωνα με το το chipset spec, την επιστροφή 0 δεν είναι απολύτως απαραίτητο.
Αλλά δεν σημαίνει ότι το κύριο γίνεται.
Το όνομά μου είναι Rob, και αυτό ήταν Mario.
>> [Παίζει μουσική]