VORBITOR 1: Să vorbim despre apă. În această problemă, vom cere utilizatorului să spună ne cât de mult timp în câteva minute de duș lor a fost și apoi vom calcula echivalentul Numărul de sticle de apă dușul lor utilizate. Deci, ce sunt noastre de a-Do pentru această problemă? În primul rând, vom dori să solicite și apoi să validați de intrare pe care utilizatorul ne dă. Odată ce ne asigurăm că au intrare de utilizator valid, vom merge pentru a calcula număr echivalent de sticle de apă că utilizatorul a avut în timpul duș lor, și apoi suntem O să le spun de imprimarea acel număr. Așa că haideți să abordeze primul nostru sarcină, fapt care ia determinat și validarea introduse de utilizator. Pentru aceasta ne-am scris o Funcția pentru tine numit get_int situat în Biblioteca CS50. get_int asigură faptul că intrările de utilizator un număr întreg, astfel încât orice numere pozitive, numere negative, sau zero, toate sunt acceptate. Dar, în cazul în care utilizatorul introduce orice altceva, astfel încât orice combinație de litere sau cifre sau numere zecimale, atunci utilizator se va cere să încerce din nou iar funcția nu va accepta nimic până când utilizatorul le dă un întreg. Deci, cum folosim get_int? Dacă deschideți spațiul de lucru și a crea un fișier numit integer.c să tastați următoarele. Hashtag includ cs50.h. Acest lucru este necesar deoarece get_int este o funcție de bibliotecă CS50, așa că trebuie să includă hashtagul declarația în ordine pentru a utiliza funcția. Și apoi, în principal mea funcționa Mă duc pentru a apela pur și simplu get_int funcția. Deci să fugim acest lucru și a vedea cum funcționează. Am compilat deja, așa că hai doar du-te mai departe și a alerga acest program, ./întreg. Aici am un prompt și aici e în cazul în care valoarea de intrare am. Spun că am pus în doar câteva întreg, 50 de ani, excepts program și quit și cu asta. Dar, spun am alerga din nou și Am introdus ceva. Poate că, Bună ziua lume. Asta nu este un număr întreg așa Programul mă va cere să încerce din nou. Să încercăm din nou, cu probabil, o zecimală de această dată. 0.5, din nou, nu este un număr întreg, astfel programul nu va accepta și să-mi spună să încerci din nou. Deci, să-i dăm un alt număr. Programul acceptă, se închide, și am terminat. Deci, acum avem o funcție care ne permite și asigură că utilizatorul introduce un întreg, dar cum putem fapt păstrează o evidență a număr întreg de către utilizator introdus? Ei bine, tot ce vom face este magazin această valoare într-o variabilă, să zicem n. Așa că, dacă declar un număr întreg n, și am stabilit că valoarea la get_int, atunci n va stoca atunci orice valoarea utilizatorului introdus. Bine, așa că acum ne-am asigurat că utilizatorul ne va da un număr întreg și știm cum să urmăriți din întreg, dar amintiți-vă, întregi sunt atât pozitive, cât și negative. Așa că nu prea are sens în contextul acestei probleme că utilizatorul ia un duș a spune negativ de 12 minute. Deci, avem nevoie să ne asigurăm că utilizatorul de fapt, ne dă un număr întreg pozitiv. Acum nu avem doar un Funcția unică pentru că, așa că vom avea pentru a crea noi înșine că. Așa că vrem să continuu solicita utilizatorului până când ne dau un număr întreg pozitiv. În cazul în care fac ceva în mod continuu, atunci care este înrudită cu o buclă, o repetiție. Deci, una dintre construcțiile pe care le folosim în c pentru a pune în aplicare repetarea și bucle este o buclă în timp. Deci, o buclă în timp ce, după cum prezentat aici, se va executa tot ceea ce este în corpul buclei ca atâta timp cât dat condiție evaluează true. De îndată ce această condiție evaluează la fals, atunci programul va proceda la orice vine după ce corpul buclei. Așa că în timp ce buclele vor să fie într-adevăr util în CS50. Dar, în această special caz, știm că suntem va solicita utilizatorului cel puțin o dată și apoi numai în buclă, dacă este necesar. Așa că aici am ajuns la o construct special și asta foarte similar cu timp buclă numită o buclă do-în timp ce. Deci, o bucla do-în timp ce execută corpul buclei cel puțin o dată și apoi se verifică pentru a vedea dacă ar trebui să execute, spre deosebire de o buclă în timp, care va verifica starea și apoi executați din organism. Deci, într-o buclă în timp ce do-am putea faceți este prompt utilizator pentru un număr întreg, și apoi verificați dacă este nevalid sau nu. Dacă este nevalid, atunci vom repeta procesul cere utilizatorului pentru a ne da un alt număr întreg, și apoi numai atunci când acest număr întreg este valabil, vom continua să orice vine după aceea. Acum vei observați că declararea n întreg este puțin diferită față de ceea ce noi făcut înainte în exemplul anterior iar acest lucru este din cauza domeniului de aplicare. Dacă am fi declarat n interiorul întreg a corpului buclei do-în timp ce, atunci nu s-ar putea accesa că valoarea lui n afara celor creț bretele care indică corpul buclei. Dar noi, de fapt, vor să acceseze Valoarea lui n mai târziu în programul nostru. OK, deci acum hai să vorbim despre ceea ce ar trebui să fie această condiție. Dorim să reprompt numai utilizator, atâta timp cât n este nevalid. Deci, gândiți-vă la ce invalid valoare întreagă ar arata ca și apoi a crea un boolean expresie pentru a exprima acest lucru. Aproape am terminat cu subactivitate nostru de fapt care ia determinat și validarea introduse de utilizator. Așa că hai să facem acest lucru un pic bit mai ușor de utilizat și să dea utilizatorului un pic biți mai multe informații din ceea ce le-a determinat pentru ce. Așa că hai cere utilizatorului, conform spec, cu minutele șir. Deci, folosind declarațiile dumneavoastră printf, face sigur că acest lucru se potrivesc exact. In regula. Așa că acum avem un utilizator valid de intrare, un număr întreg pozitiv valoare pentru cât de multe minute au petrecut în duș. Ce urmează este de a calcula numărul echivalent de sticle. Ceea ce vom face aici s-ar putea să fie foarte evident pentru tine la început, și asta e în regulă. Ceea ce vrem să facem este noi doresc să înceapă practicarea ideea de detectare a modelelor și elaborarea de formule pentru problema. Așa că ne-a spus pe spec că un minut la duș este echivalent cu aproximativ 12 sticle de apă. Așa că atunci două minute ar să fie echivalentă cu 24, și cinci minute ar să fie echivalentă cu 60. Deci, acum, dacă crezi le-ați luat-o, atunci hai vezi dacă poți veni cu un model sau formula să-și exprime dacă am spune, n minute, cât de multe sticle de apă care va fi exprimată în termeni de n? Din nou, chiar dacă acest lucru ar putea fi simplu la început, mai târziu, când vom ajunge la probleme mai complicate vom dori să intre în practica de identificare modele și formule de dezvoltare pentru a descoperi aceste lucruri. În c aveți acces la operații aritmetice standard, adunare, scădere, înmulțirea și împărțirea. Așa că am să-l las vă acum să dau seama cum să-și exprime număr echivalent de sticle că utilizatorul consumat în timpul lor de duș. Bine, suntem aproape gata. Ne-am determinat utilizatorul pentru introducerea lor, ne-am asigurat că este o intrare validă, și apoi ne-am dat seama cum pentru a calcula echivalentul numărul de sticle pe care au consumat. Așadar, ultimul lucru de făcut este să ieșire numărul echivalent de sticle și, sperăm, să încurajeze le pentru a economisi niște apă. Valoarea va scoate să fie o declarație printf. Dacă aș fi vrut să-ți spun că am au trei animale de companie sunt, de exemplu, S-ar putea folosi o declarație printf care arată ceva de genul asta. Am trei animale de casă, și un nou line pentru formatare frumos. Acum, noi nu vrem să cod simplu, greu de lucruri. Spun numărul meu animale de companie sunt se schimbă în timp. Apoi am de gând să facă uz de Substituenți în declarația mea printf. Deci, aici numărul meu este un număr întreg. Așa că am de gând să fac un înlocuitor pentru un număr întreg, utilizând% i. Am de gând să scrie șirul, și apoi, după șirul Am scrie o virgulă și apoi variabilă pe care vreau să le imprimați. Astfel ca valoarea va fi imprimată în locul acelui substituent,% i. Aveți posibilitatea să utilizați Substituenți, ca bine, pentru flotoarele cu un% f. Puteți avea, de asemenea, mai multe Substituenți într-un șir de caractere. De exemplu, dacă am ceva număr de câini și unele număr de pisici, Am pus două Substituenți aici și apoi mele cele două variabile, în ordinea respectivă. Deci, acum că știm cum să imprimați valorile stocate în variabile, ultimul lucru la face este de a se asigura că imprima valoarea în formatul exact indicate în caietul de sarcini. Cu aceasta, ne-am determinat utilizator și validate de intrare a acestora. Apoi ne-am calculat echivalentul Numărul de sticle de apă pe care le consuma in timpul lor de duș, și ne-am acea valoare scoasă lor. Și așa, am terminat cu apă. Numele meu este [? Zamila,?] iar acest lucru este CS50.