Acum, să profite de atenția utilizatorului, acesta vypol-test scurt. Vom afișa două numere în ordine numerică și va cere utilizatorului să ghicească-suflare urmează valorile în secvența. De exemplu,
Valorile 2,3 din două elemente consecutive ale unei secvențe numerice. Care este valoarea următoare?
Aceste valori - al treilea și al patrulea elemente din următoarele Fibonacci succesive -: .. 1, 1, 2, 3, 5, 8, 13, etc. Secvența ratei Fibonacci Flow începe cu două elemente - unități. Fiecare element succesiv este suma precedentă două constituent.
În cazul în care utilizatorul introduce un 5, îl felicit și întrebați dacă el vrea să încerce un alt adept numeric-Ness. Orice altă valoare de intrare - este greșită, și noi cerem utilizatorului dacă vrea să spună încă averi.
Pentru a menține interesul în program, vom păstra contul curent, în funcție de raportul dintre otve-ing corect la numărul de încercări.
Programul necesită cel puțin cinci facilitati: clasa obiect string pentru a salva numele de utilizator-la, trei facilități de întreaga clasă pentru stocarea de încercări de a transforma, numărul de încercări, numărul de încercări reușite, și numere de clasă obiecte plutitoare să-și amintească contul.
Pentru a determina obiectele de date, trebuie să introduceți numele și tipul de date. Numele pot fi orice combinație de s-litere, cifre, subliniere. Literele sunt sensibile la litere. Fiecare dintre nume_utilizator nume, USER_NAME, user_name și user_name se referă la diferite obiecte.
Numele nu poate începe cu un număr. De exemplu, L_NAME greșit, name_l - corect. Numele nu trebuie să fie co-toamna cu cuvintele cheie ale limbii. De exemplu, ștergeți - cuvântul cheie al limbii, astfel încât să nu ar trebui să-l folosească în programul nostru. (Acest lucru explică de ce operatorul elimina caracterul din clasa string - șterge (), dar nu a fost ștearsă).
Fiecare obiect trebuie să fie un anumit tip de date. Numele obiectului ne permite să i se adreseze în mod direct. Tipul de date determină intervalul de valori stocate obiectului, iar cantitatea de memorie necesară pentru stocarea depozitelor acestei valori.
Am văzut în USER_NAME definiția anterioară le-Sec. Noi transporta aceeași definiție în noul program:
#include
Clasa - definit de software de tip de date. C ++ sprijină astfel încât același set de tipuri predefinite de date: bu-Leva, întreg, virgulă mobilă și șir. Cuvintele cheie asociate cu fiecare dintre ele, ne permit să se determine tipul de date. De exemplu, pentru a stoca valorile-TION introduse de către utilizator, vom defini integrala primul tip:
Int - limbaj de cuvinte cheie specifică faptul că usr_val obiect - tip întreg. Ambele obiecte: numărul de încercări efectuate de utilizator-TION și numărul de răspunsuri corecte - obiecte de tip. Singura diferență este că am dori să le dea o valoare inițială de „O“. Putem deduce din fiecare businesslike on-line:
Int num_.trіes = 0; int num_right = 0;
Sau le definesc într-o singură linie, separate prin virgulă:
Int num_tries = 0, num_right = 0;
În general, este mai bine să urmeze regula-cuva inițializează un obiect de date, chiar dacă valoarea indică doar faptul că obiectul nu are nici o valoare utilă. Nu init-lizată usr_val, deoarece valoarea va fi obținute direct de la datele introduse de utilizator înainte de programul utilizează un obiect într-un fel.
Opțiunea de inițializare alternativă - pentru a utiliza sintaxa structurală așa-numitele
num_.tries Int (0);
De ce există două sintaxă de inițializare? Mai rău, de ce vorbesc despre asta? Ei bine, să vedem dacă explicația mea este responsabil pentru ambele întrebări.
Folosind o declarație de atribuire pentru inițializare, ea-TION limbajului C. Aceasta funcționează bine cu obiecte de date construite în tipuri și clase de obiecte care pot fi inițializat cu o singură valoare, cum ar fi o clasă șir:
String sequence_name = "Fibonacci";
Cu toate acestea, această metodă nu este atât de bun pentru clasa de obiecte care necesită valori multiple pentru inițializarea, de exemplu, biblioteca de clasă standard a numerelor complexe, în cazul în care fiecare necesită două valori: prima - pentru partea reală dei, al doilea - pentru imaginar. sintaxa structurală alternativă a fost introdus pentru a sprijini evaluate-set-inițializarea:
#include
paranteze notație ciudate după complex, ceea ce înseamnă este faptul că clasa numerelor complexe - clasă de șabloane. clasa șablon ne permite să definim o clasă fără specificul-TION tip de date a unuia sau toți membrii clasei.
Clasa de numere complexe, de exemplu, este format din doi membri, noul obiect de date. Una dintre ele este o parte reală a Num-La, al doilea - imaginar. Acești membri sunt numărul de tipul de date float, dar ce? C ++ acceptă trei tipuri de numere cu virgulă mobilă: o singură precizie prezentat float cuvinte cheie; precizie dublă, reprezentată de cuvântul cheie dublă; și extins
Precizia, cu condiția două cuvinte cheie duble lungi.
Clasa de șablon motor permite programatorului pe impune definirea tipului de date utilizând clasa șablon. Acest lucru îi dă posibilitatea de a introduce un „capac“, pe care mai târziu umple un tip de date reale. Exemplul anterior utilizează tipul de date de clasă complexe de selecție numere de talie dublu.
Ei bine, poate că există mai multe întrebări decât răspunsuri semi-chaetsya. Aceasta provine din faptul că modelele sub der viață C ++, două sintaxă de inițializare pentru built-in tipuri de date. În cazul în care built-in tipurile de date și tipuri de clasă specifice de programe au diferite sintaxa alizatsionny ini-, este imposibil de a scrie un șablon, suport co-Tory și-a construit în clasă, și un tip de date de clasă. Sintaxa Unificarea simplifică șabloanele de proiectare. Din păcate, sintaxa divulgarea conduce la mai multă confuzie!
un cont de utilizator trebuie să fie o valoare în virgulă mobilă, deoarece nu există un raport întreg. Am definit divizați în tipul său dublu:
usr_score Double = 0,0;
De asemenea, trebuie să păstreze un loc pentru utilizator Răspunsurile Spune-da / pe: Fa-o altă încercare? Încercați o altă secvență?
Putem salva răspunsurile de utilizator în obiectul de date de caractere:
Cout « "Încearcă altă secvență Y / N ??"; cin »usr_more;
char cuvinte cheie se referă la un tip de caracter. Mărginit simbolul apostrof care indică „o“, „7“, „; “Etc. Neko-torye destinație specială caractere construit pentru vedeny de mai jos (uneori numită secvență de evacuare) ..:
newline n“(rând nou) fila "t"(tab)"