Yksinkertaisen laskinkomentorivin rakentaminen
Rakenna komentorivilaskin, joka jäsentää operaattoreita ja laskee lausekkeiden arvot.
Yksinkertaisen laskinkomentorivin rakentaminen on ilmainen C++ Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu C++ Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. C++ Academy-kurssilla on yhteensä 4 oppituntia.
Projektin tavoite
Rakentakaa komentorivilaskin, joka lukee lausekkeen, kuten 3 + 4, ja tulostaa tuloksen. Pidämme sen suppeana mutta hyvin jäsenneltynä.
Tarvittavat otsaketiedostot
Tarvitsemme iostream-otsaketiedoston syötettä ja tulostusta varten sekä string-otsaketiedoston syötettä varten.
#include <iostream>
#include <string>
#include <sstream>Pääsilmukan runko
Lukekaa rivi, jäsentäkää se, laskekaa tulos ja tulostakaa se. Lopettakaa tiedoston lopussa.
int main() {
std::string line;
while (std::getline(std::cin, line)) {
if (line == "quit") break;
double result = evaluate(line);
std::cout << "= " << result << "\n";
}
}Jäsentäminen stringstreamillä
Kahdelle operandille ja yhdelle operaattorille stringstream-pohjainen merkkijonon jakaminen osiin on yksinkertainen ja luotettava ratkaisu.
double evaluate(const std::string& line) {
std::stringstream ss(line);
double a, b;
char op;
ss >> a >> op >> b;
return apply(op, a, b);
}Operaattorin käsittely
Käyttäkää operaattorimerkin perusteella tehtävää switch-rakennetta.
double apply(char op, double a, double b) {
switch (op) {
case '+': return a + b;
case '-': return a - b;
case '*': return a * b;
case '/': return b != 0 ? a / b : 0;
default: return 0;
}
}Virheenkäsittely
Mitä tapahtuu, jos käyttäjä kirjoittaa jotakin virheellistä? Tarkistakaa streamin tila ja ilmoittakaa asiasta selkeästi.
if (!(ss >> a >> op >> b)) {
std::cout << "Invalid input\n";
return 0;
}Nollalla jakaminen
Käsitelkää nollalla jakaminen erikseen. Tulostakaa virheilmoitus tai heittäkää poikkeus — valitkaa suunnitteluunne sopiva tapa.
if (op == '/' && b == 0) {
throw std::runtime_error("division by zero");
}Lisää operaattoreita
Laajentakaa switch-rakennetta tukemaan uusia operaatioita: %, potenssiin korotukseen käytettävä ^ tai nimettyjä funktioita, kuten sqrt.
Tilan ylläpitäminen
Haluatteko juoksevan summan? Tallentakaa viimeisin tulos ja antakaa käyttäjän aloittaa lauseke merkillä +.
double last = 0;
// if first token is an operator, use `last` as the first operandKäyttökokemuksen viimeistely
Tulostakaa kehote ennen jokaista syötettä, hyväksykää lopetuskomennoksi quit tai tiedoston loppu ja ohittakaa tyhjät rivit.
Useampi kuin kaksi operandia
Usean operandin lausekkeita, kuten 3 + 4 * 2, varten tarvitsette lausekejäsentimen. Shunting-yard-algoritmi on vakiintunut lähestymistapa.
Laskimen testaaminen
Ohjatkaa syöte tiedostosta, jotta voitte testata ohjelmaa nopeasti.
echo "3 + 4\n10 / 2" | ./calcPikakertaus
Mikä standardikirjaston ominaisuus sopii välilyönneillä eroteltujen osien, kuten 3 + 4, jäsentämiseen?
Kertaus
Pieni komentorivilaskin havainnollistaa syötettä ja tulostusta, stringstreamillä jäsentämistä sekä switch-rakenteeseen perustuvaa käsittelyä. Laajentakaa sitä virheenkäsittelyllä, uusilla operaattoreilla, tilalla ja lopulta lausekejäsentimellä.
Opi C++ tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 51
- Oppitunnit
- 203
Usein kysytyt kysymykset
Onko oppitunti ”Yksinkertaisen laskinkomentorivin rakentaminen” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa C++ Academy-oppimispolun 3 oppituntia, myös oppitunnin “Yksinkertaisen laskinkomentorivin rakentaminen”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. C++ Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Yksinkertaisen laskinkomentorivin rakentaminen”?
Rakenna komentorivilaskin, joka jäsentää operaattoreita ja laskee lausekkeiden arvot. Harjoittelet C++ Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni C++ Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin C++ Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.
Kuinka kauan ”Yksinkertaisen laskinkomentorivin rakentaminen”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä C++ Academy-oppitunnilla?
Kyllä. Jokainen C++ Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Yksinkertaisen laskinkomentorivin rakentaminen
- CSV-tiedostojen lukeminen ja kirjoittaminen
- Lukujen arvauspeli
- Sanojen esiintymislaskuri