Kezdőoldal » Számítástechnika » Programozás » Ebben az egyszerű c++ programb...

Ebben az egyszerű c++ programban miért működik a páros, páratlan megállapíts?

Figyelt kérdés

#include <iostream>

#include <math.h>

using namespace std;

int main ()

{

setlocale(LC_ALL,"Hun");

int a;

cout<<"________________________________________________________________________________"<<endl;

cout<<"Feladatom ez volt: Kérj be egy számot, ha negatív vedd az abszolút értékét,"<<endl;

cout<<"utána döntsd el páros-e vagy páratlan és a végen szorozd meg 10-zel!"<<endl;

cout<<"________________________________________________________________________________"<<endl;

cout<<endl;

cout<<"Kérem a számot: ";

cin>>a;

if (a<0)

{

cout<<"Csak pozitív szám lehet, így az abszolút értéke: "<<a*-1<<endl;

}

else

{

cout<<"A szám pozitív, tehát nem változik: "<<a*1<<endl;

}


if (a%2)

{

if (a>0)

{

cout<<"A megadott szám: PÁRATLAN!"<<endl;

}

if (a==0)

{

cout<<"A megadott szám: PÁROS!"<<endl;

}


}


cout<<"Végül a szám szorozva 10-zel: "<<a*10<<endl;



return 0;

}


2015. márc. 24. 11:37
1 2
 1/11 Tengor ***** válasza:
76%
Mert ha egy számnak képzed a 2-es maradékát, akkor 0-át vagy 1-et kapsz. A C/C++ nyelvben a 0 felel meg a hamis értéknek és minden más az igaznak.
2015. márc. 24. 11:42
Hasznos számodra ez a válasz?
 2/11 anonim ***** válasza:
23%
Ez egy elég szar kód.
2015. márc. 24. 12:56
Hasznos számodra ez a válasz?
 3/11 A kérdező kommentje:
Örülök, hogy van hol kiélned magad.
2015. márc. 24. 13:35
 4/11 anonim ***** válasza:
23%
Hát még én.
2015. márc. 24. 13:38
Hasznos számodra ez a válasz?
 5/11 anonim ***** válasza:
100%

Nemtom', ki hogy van vele, de szerintem ez nem korrekt:


if (a%2)

{

..if (a>0)

..{

....cout<<"A megadott szám: PÁRATLAN!"<<endl;

..}


..if (a==0)

..{

....cout<<"A megadott szám: PÁROS!"<<endl;

..}

}


(a%2) feltétellel eleve csak páratlanokra fut le, belül meg az előjel alapján dönti el a paritást, aminek nem sok értelme van.


Szóval a kérdést úgy módosítanám, hogy miért NEM működik ez az egyszerű kód. Válasz 2 sorral feljebb.

2015. márc. 24. 16:36
Hasznos számodra ez a válasz?
 6/11 anonim ***** válasza:
31%
Há' ezt írtam én is.
2015. márc. 24. 17:25
Hasznos számodra ez a válasz?
 7/11 anonim ***** válasza:

Jah...

"Ez egy elég szar kód." De indoklás hol marad?

Érted... Most mit értsünk "szar kód" alatt?


Mellesleg ez nem szar kód, hanem szemantikai hiba. Hívjuk nevén, ha már van rá szakszó.

2015. márc. 25. 07:51
Hasznos számodra ez a válasz?
 8/11 iostream ***** válasza:

Szerintem nem szemantikai hanem logikai hiba. A szemantika az a típusrendszer meg egyéb, a szintaktikára ráépülő szarok.


"A C/C++ nyelvben a 0 felel meg a hamis értéknek és minden más az igaznak."


Ez meg hazugság. C-ben igen. C++-ban van egy bool típus. A számok KONVERTÁLÓDNAK a fent említett szabályok alapján bool-lá.

2015. márc. 25. 09:38
Hasznos számodra ez a válasz?
 9/11 anonim ***** válasza:

@iostream


Tévedsz... A bool-t is számként ábrázolja háttérben, de sebaj.


Probáld ki:

int i = 0;

bool b = false;

if(i == b) { ... }

2015. márc. 25. 11:11
Hasznos számodra ez a válasz?
 10/11 iostream ***** válasza:

Ezzel most mit akartál bizonyítani? Mert nekem úgy tűnik, hogy össze akarsz hasonlítani két különböző típusú elemet, amik először közös típusra lesznek hozva (valószínűleg intre, de utána kéne nézni pontosan), majd össze lesznek hasonlítva. Bool konvertálódik intre: true -> 1, false -> 0.


Az, hogy a HÁTTÉRBEN hogy van ábrázolva, a legkevésbé sem érdekel, legalábbis abból a szempontból, hogy

"A C/C++ nyelvben a 0 felel meg a hamis értéknek és minden más az igaznak."


C++-ban bool van, aminek két lehetséges értéke van, próbáld ki:

bool b(200);

int x(b);

if (x == 200)

{

system("format c:");

}

2015. márc. 26. 16:13
Hasznos számodra ez a válasz?
1 2

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!