Kezdőoldal » Számítástechnika » Programok » Ez a program miért nem működik...

Ez a program miért nem működik C++-ban?

Figyelt kérdés

#include <iostream>

#include <cmath>


using namespace std;


int main()

{

string valasz;

int celsius;

int kelvin;


cout << "Celsiust akarsz Kelvinre, vagy Kelvit Celsiusra valtani?" << endl;

cin >> valasz;


if(valasz == "Celsiust Kelvinre"){

cout << "C: ";

cin >> celsius;


celsius += 273;


cout << celsius << " K" << endl;

} else if(valasz == "Kelvint Celsiusra"){

cout << "K: ";

cin >> kelvin;


kelvin -= 273;


cout << kelvin << " C" << endl;

} else {

cout << "?";

}


return 0;

}


Ugye felteszi a kérdést, ha írom hogy "Celsiust Kelvinre" vagy a "Kelvint Celsiusra" akkor viszont csak az "else"-t, a "?"-t írja ki.


De ez meg működik:


#include <iostream>

#include <cmath>


using namespace std;


int main()

{

int celsius;


cout << "CELSIUS - KELVIN" << endl;

cout << "C: ";

cin >> celsius;


celsius += 273;


cout << celsius << " K" << endl;


return 0;

}


(Bocs, nem tudtam hogy hogy kell feltölteni máshogy a kodot, remelem olvashato. Azt hozza kell tennem, hogy elegge kezdo vagyok a temaban.)


2021. febr. 11. 20:06
 1/6 anonim ***** válasza:

Sajnálatosan ennek a magyarázata haladó szintű, te nem is fogod érteni, a többiek kedvéért írom, hogy az a baja, hogy a windows hozzáb.. egy sorvége jelet a bevitelhez, mert sorbufferelt, és entert ugye nyomsz.

Ilyen jellegű mondatot amúgy sem szabad várni bemeneten, mert nem ismeri a nyelvtant a program, és ha a felhasználó nem tudja, hogy betűre pontosan ezt kell írnia...

Mivel kezdő vagy, és tanulni szeretnél még csak, ezért azt javaslom a bekérdezésre: a válasz legyen egy char, és egyetlen karaktert olvass be.

Ez lehet például az is, hogy 1 vagy 2, és akkor első meg második opciót jelent (karakter és számnál persze figyelni kell, hogy aposztrófok között legyen, azaz '1' az nem ugyanaz mint 1)


Egyéb észrevételeim a kóddal kapcsolatban, amikből tanulhatsz:

1: A cmath include-olása felesleges, nem használod.

2: A helyedben lebegőpontos számokkal (double például) dolgoznék int helyett, több lehetőséget ad a felhasználónak.

3: megtévesztő, ahogy a kelvin és a celsius változót használod, mert mindkettőbe betöltheted utána a másikat. Inkább célszerűbb lenne azt csinálnod, hogy az "átváltás" eredményét a másik változóba írod.

Tehát így:

celsius = kelvin-273;

2021. febr. 11. 20:35
Hasznos számodra ez a válasz?
 2/6 anonim ***** válasza:

Inkább használd az std::string::compare-t:

[link]

szóval:

valasz.compare("Celsiust Kelvinre") == 0

illetve

valasz.compare("Kelvint Celsiusra")

2021. febr. 11. 20:39
Hasznos számodra ez a válasz?
 3/6 anonim ***** válasza:
#2: attól még ott van a sorvége jel, és amúgy is nehezebb megérteni a compare és equals jellegű függvényeket egy kezdőnek, c++-ban úgyis a string operátor == meg van írva, hadd használja.
2021. febr. 11. 20:47
Hasznos számodra ez a válasz?
 4/6 A kérdező kommentje:

Köszi a válaszokat. végülis #1 javaslatai alapján ilyen lett a kódom: (működik amugy, köszi)


#include <iostream>

using namespace std;

int main()

{

char valasz;

double celsius, celsius_;

double kelvin, kelvin_;


cout << "Celsiust akarsz Kelvinre /1/, vagy Kelvit akarsz Celsiusra /2/ valtani?" << endl;

cin >> valasz;


if(valasz == '1'){

cout << "C: ";

cin >> celsius;


kelvin_ = celsius + 273.15;


cout << kelvin_ << " K" << endl;

} else if(valasz == '2'){

cout << "K: ";

cin >> kelvin;


kelvin -= 273.15;


cout << kelvin << " C" << endl;

} else {

cout << "?";

}

return 0;

}


Ez a kelvin_ és a celsius_ valtozo bevezetése nem tudom hogy mennyire volt okos, de mukodik :"D

egyebkent tenyleg koszi a segitseget. Valami ilyesmi kaliberu projekteket tudnatok ajanlani meg?

2021. febr. 11. 20:53
 5/6 A kérdező kommentje:

Hopsz, a az else if-ben nem irtam at a valtozokat. igy mar elvileg jo:


#include <iostream>

using namespace std;

int main()

{

char valasz;

double celsius, celsius_;

double kelvin, kelvin_;


cout << "Celsiust akarsz Kelvinre /1/, vagy Kelvit akarsz Celsiusra /2/ valtani?" << endl;

cin >> valasz;


if(valasz == '1'){

cout << "C: ";

cin >> celsius;


kelvin_ = celsius + 273.15;


cout << kelvin_ << " K" << endl;

} else if(valasz == '2'){

cout << "K: ";

cin >> kelvin;


celsius_ = kelvin - 273.15;


cout << celsius_ << " C" << endl;

} else {

cout << "?";

}

return 0;

}

2021. febr. 11. 21:32
 6/6 tabaki ***** válasza:

Nem egészen értem az alulvonásra végződő változók szerepét. Én is megpróbálkoztam egy hasonló programmal, de már fáradt vagyok a lelkiismeretesebb átvizsgálásához:

[link]

2021. febr. 12. 02:09
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!