Typowe środowisko C++
Formułowanie algorytmów (zagnieżdżone struktury sterujące)
Uczelnia opracowuje kurs, który przygotowuje studentów do egzaminu na maklerów nieruchomości. W poprzednim roku kilkoro studentów, którzy zaliczyli kurs przystąpiło do 4egzaminu na licencję. Naturalne, uczelnia chce wiedzieć, jak dobrze jej studenci poradzili sobie na nim. Zostałeś poproszony o napisanie programu do zsumowania wyników. Dano ci spis 10 studentów. Po każdym imieniu jest napisane 1, jeżeli student zdał egzamin, i 2, jeśli nie zdał.
Twój program powinien analizować wyniki egzaminu w następujący sposób:
Wprowadź wyniki każdego testu (np. 1 lub 2). Wyświetl komunikat „Wprowadź wynik” na ekranie za każdym razem, kiedy program prosi o podanie wyniku następnego testu.
Zlicz liczbę wyników testu każdego typu.
Wyświetl podsumowanie wyników testu wskazując liczbę studentów, którzy zdali i liczbę tych, którzy nie zdali.
Jeżeli więcej niż 8 studentów zdało egzamin, wyświetl komunikat „Podwyższyć czesne”.
Po przeanalizowaniu tego problemu, można podsumować następujące obserwacje:
Program musi przetworzyć 10 wyników testu. Pętla kontrolowana przez licznik zostanie użyta.
Każdy wynik testu jest liczbą - albo 1, albo 2. Za każdym razem, kiedy program odczytuje wynik testu, musi określić czy liczba wynosi 1, czy 2.
Wykorzystywane są dwa liczniki - jeden do zliczania liczby studentów, którzy zdali egzamin i jeden do zliczania liczby tych, którzy go nie zdali.
Po przetworzeniu wszystkich wyników, program musi zdecydować, czy więcej niż 8 studentów zdało egzamin.
Inicjuj sukcesy wartością zero
Inicjuj porażki wartością zero
Inicjuj licznik studentów wartością jeden
Dopóki licznik studentów jest mniejszy niż lub równy dziesięć
Wprowadź następny wynik egzaminu
Jeżeli student zdał
Dodaj jeden do sukcesów
w przeciwnym razie
Dodaj jeden do porażek
Dodaj jeden do licznika studentów
Wyświetl liczbę sukcesów
Wyświetl liczbę porażek
Jeśli więcej niż 8 studentów zdało
Wyświetl „Podwyższyć czesne”
// Fig. 2.11: fig02_11.cpp
// Analysis of examination results
#include <iostream.h>
int main()
{
// initialize variables in declarations
int passes = 0, // number of passes
failures = 0, // number of failures
studentCounter = 1, // student counter
result; // one exam result
// process 10 students; counter-controlled loop
while ( studentCounter <= 10 ) {
cout << "Enter result (1=pass,2=fail): ";
cin >> result;
if ( result == 1 ) // if/else nested in while
passes = passes + 1;
else
failures = failures + 1;
studentCounter = studentCounter + 1;
}
// termination phase
cout << "Passed " << passes << endl;
cout << "Failed " << failures << endl;
if ( passes > 8 )
cout << "Raise tuition " << endl;
return 0; // successful termination
}
Struktury wielokrotnego wyboru switch z instrukcją break
Edytor
Program jest utworzony w edytorze i zapamiętany na dysku
Dysk
Program preprocesora przetwarza kod
Dysk
Preprocesor
Kompilator tworzy kod obiektowy i przechowuje go na dysku
Dysk
Kompilator
Program jest utworzony w edytorze i zapamiętany na dysku
Dysk
Program łączący
Program ładujący umieszcza program w pamięci
Dysk
Program ładujący
Pamięć podstawowa
Pamięć podstawowa
CPU pobiera każdą instrukcję i wykonuje ją, ewentualnie przechowuje nowe wartości danych uzyskane w trakcie wykonywania programu
breake
CPU
breake
prawda
działanie
przypadku a
przypadek a
prawda
działanie
przypadku b
fałsz
fałsz
przypadek b
fałsz
breake
prawda
działanie
przypadku z
przypadek z
działanie domyślne