Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Celsius - Fahrenheit -laskuri

Sivun loppuun

hallux2 [15.08.2004 19:04:55]

#

Moi. Olen vielä aloittelija ohjelmoimisessa ja päätin huvinvuoksi tehdä laskurin, joka muuttaa celsius-arvot fahrenheit-arvoiksi. Tässä on koodini, joka toimii hyvin.

float Kaava(float);
int main()
{
	float FerTemp;
	float CelTemp;

   cout << "Tämä on yksinkertainen C++:lla koodattu celsius - fahrenheit -laskuri.";
	cout << "\n\nMuuta celsiuksista fahrenheiteiksi arvo: ";
	cin >> CelTemp;
	FerTemp = Kaava(CelTemp);
	cout << "Antamasi arvo fahrenheitteina: ";
	cout << FerTemp << endl;
	return 0;
}
	float Kaava(float CelTemp)
{
	float FerTemp;
	FerTemp = ((CelTemp * 9) / 5) + 32;
	return FerTemp;
}

Ongelma on siinä, että haluaisin nyt laajentaa tätä ohjelmaani niin, että laskuri kysyisi "Muuta celsiuksista fahrenheiteiksi arvo: ":n LISÄKSI kysymyksen toisinpäin, "Muuta fahrenheiteistä celsiuksiksi arvo: ". Eli mihin kohtaan tuo toinen kysymys pitäisi koodata? Jotenkin yritin toisen kysymyksen sinne sovittaa, mutta ohjelma näytti kysymyksen vasta sen jälkeen, kun ensimmäiseen kysymyksen on syöttänyt arvon ja ohjelma on laskenut sen. Molemmat kysymykset pitäisi näkyä samaan aikaan näytöllä ja molempiin pitäisi pystyä kirjoittamaan arvo samaan aikaan. Kiitos.

rndprogy [15.08.2004 19:31:01]

#

Siis tarkoititko että "celsuksista" kysymyksen jälkeen kysytään "fahrenheit" kysymyksen jälkeen. No laitat

cout << "\n\nMuuta fahrenheiteista celsuiksiksi arvo: ";
cin >> FerTemp;

Cin kohdan jälkeen. Vai tarkoititko että miten todella pystyy kirjoittamaan kahdelle riville yhtä aikaan?

hallux2 [15.08.2004 19:40:15]

#

Sitä, että voi kirjoittaa kahteen kysymykseen (kahdelle riville) yhtä aikaa.

Meitsi [15.08.2004 19:41:21]

#

Siis tarkoititko jotakin systeemiä joka kysyisi:
Fahrenheit --> celsius vai celsius --> fahrenheit.

Metabolix [15.08.2004 19:45:39]

#

Komentoriville ei voi tehdä systeemiä, jossa olisi kaksi kysymystä saman aikaisesti, koska DOSissa (komentorivillä) ei ole kunnollista tapaa siirtyä näiden välillä. Yleensä paras toteutus on tehdä ohjelma, joka aluksi kysyy laskutoimituksen ja vasta sitten arvon, tarkistaa, mikä laskutoimitus valittiin ja tulostaa sen mukaisesti. Tässä epätäydellinen esimerkki:

int main()
{
  int Toimitus, A, B;
  // Toistetaan, kunnes valitaan nolla
  while (true)
  {
    cout << "Mitä tehdään:" << endl;
    cout << "1. Yhteenlasku" << endl;
    cout << "2. Vähennyslasku" << endl;
    cout << "3. Poistutaan" << endl;
    cin >> Toimitus;

    if (Toimitus == 3) break;
    // Jos valittiin 3, poistutaan

    if (Toimitus != 2 || Toimitus != 1) continue;
    // Jos ei ole 1 eikä 2, palataan alkuun

    cout << "Anna 1. arvo:" << endl;
    cin >> A;
    cout << "Anna 2. arvo:" << endl;
    cin >> B;
    if (Toimitus == 1)
      cout << "Lukujen summa on " << A + B;
    else
      cout << "Lukujen erotus on " << A - B;
  }
  return 0;
}

hallux2 [15.08.2004 19:46:18]

#

No suurinpiirtein tällaista tarkoitin että siinä lukisi:

Muuta celsiuksista fahrenheiteiksi arvo:(tähän kirjoitetaan arvo)

Muuta fahrenheiteista celsiuksiksi arvo:(tähän kirjoitetaan arvo)

Eli siis kahdelle riville tekstiä samanaikaisesti.

Meitsi [15.08.2004 19:50:32]

#

No silloin varmaan paras tapa olisi tehdä siitä windows-ohjelma. Jos kerta olet vielä aloittelija (niin kuin minäkin) niin suosittelen lämpimästi harjoittelemaan perus c++:saa kunnolla. Itse hyppäsin suoraan windows-ohjelmointiin ja sen huomaa, kun koodi on yhtä sotkua ja erroria pukkaa kokoajan.

Heikki [15.08.2004 19:53:01]

#

Voit tehdä esim. näin:

cout << "Muuta celsiuksista fahrenheiteiksi arvo: ";
cin >> celsius;

cout << "Muuta fahrenheiteista celsiuksiksi arvo: ";
cin >> farenheit;

//muunnos ja tulostus

Konsolissa ei ole kätempää tapaa kuin tuo Metaboliksen näyttämä.

Metabolix [15.08.2004 20:06:26]

#

Niin, tuossa Heikin esimerkissä kysytään ja suoritetaan ensin C => F ja sitten F => C.

rndprogy [15.08.2004 20:07:30]

#

Sanoinhan tuon saman jo alussa :)


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta