Kezdőoldal » Számítástechnika » Programozás » Hogy kell olyan programot...

San1111 kérdése:

Hogy kell olyan programot írni, ami eldönti egy számról hogy páros vagy páratlan, mindezt az if;? : és switch parancsok nélkül?

Figyelt kérdés

2016. okt. 6. 13:09
1 2
 1/11 anonim ***** válasza:
Nem lehet akkor is kell egy if hogy kiírathasd páros,páratlan e.
2016. okt. 6. 13:13
Hasznos számodra ez a válasz?
 2/11 anonim ***** válasza:
100%

js-ben:


<script>

var ertek = new Array('páros','páratlan');

var szam = prompt('szam');

alert(ertek[szam%2]);

</script>

2016. okt. 6. 13:18
Hasznos számodra ez a válasz?
 3/11 anonim ***** válasza:

Hát nyelvet is kéne mondanod.

Dehogynem lehet.


PHP-ben:


function parosvparatlan ($szam) {

$parosvparatlan = array(0=>"páros", 1=>"páratlan");

return $parosvparatlan[$szam%2];


}


echo parosvparatlan(5);


javascriptben:


function parosvparatlan (szam) {

var parose = {

0:"paros",

1:"paratlan"


};

return parose[szam%2];


}


console.log(parosvparatlan(5));


És még szerintem sok más nyelvben.

2016. okt. 6. 14:03
Hasznos számodra ez a válasz?
 4/11 anonim ***** válasza:
Előzőnél az echonál (php) lehagytam a $-t véletlen :D bocsi
2016. okt. 6. 14:09
Hasznos számodra ez a válasz?
 5/11 anonim ***** válasza:
100%
dsadsado nem nem hagytam lexDD nvm
2016. okt. 6. 14:09
Hasznos számodra ez a válasz?
 6/11 anonim ***** válasza:

nem hagytam le mert nem is kell oda *

picit még álmos vagyok, nemrég keltem

2016. okt. 6. 14:10
Hasznos számodra ez a válasz?
 7/11 SimkoL ***** válasza:

Mivel a kulcsszavak között a C nyelv szerepelt:


#include <stdio.h>


int main(){

int n;

printf("Adje meg egy egesz szamot: ");

scanf("%d", &n);

n % 2 == 0 ? printf("Paros\n") : printf("Paratlan\n");

system("PAUSE");

return 0;

}

2016. okt. 6. 15:30
Hasznos számodra ez a válasz?
 8/11 anonim ***** válasza:

#7 a kérdésben szerepel, hogy ?: sem használható. Engedelmeddel átdolgoztam a kódod.


#include <stdio.h>


int main(){

int n;

const char* answers[2] = {"Páros","Páratlan"};

printf("Adj meg egy egesz szamot: ");

scanf("%d", &n);

printf("%s",answers[n%2]);;

system("PAUSE");

return 0;

}

2016. okt. 6. 17:20
Hasznos számodra ez a válasz?
 9/11 SimkoL ***** válasza:
Igen, benéztem a kérdőjelet :(
2016. okt. 6. 18:16
Hasznos számodra ez a válasz?
 10/11 anonim ***** válasza:

Általánosan megfogalmazva: mivel elágazás nem használható a programban semmilyen formában, ezért alternatív megoldáshoz kell folyamodni. Jelen példában a legegyszerűbb ha a modulo műveletre építed fel a megoldásodat. A feladat, hogy egy szám paritását kell meghatározni, más szóval osztható-e kettővel. Az a szám, ami osztható 2-vel, 2-vel 0 maradékot fog adni (n mod 2 = 0), míg ami nem osztható 2-vel, az 1 maradékot fog adni (n mod 2 = 1). Semmi más feladat nincs hát, mint egy tárolót (tömböt) létrehozni, ahol a 0 illetve 1 indexen eltárolod a megfelelő kimenetet, majd az (n mod 2) indexen levő értéket írod ki.


VAn azonban egy másik megközelítés is, amit én érdekesebbnek tartok, és ami talán nem működik minden nyelven, de a C-ben, és társaiban bizonyosan, valamint ez nem csak maradékos osztással használható hatékonyan, hanem bármilyen egyszerű elágazás kiváltható vele. Ez pedig azon tulajdonság kihasználása, hogy a logikai kifejezések számmá alakíthatók. C-ben nevezetesen a true 0-ra, a false pedig 1-re értékelődik ki. Az elv hasonló, mint a maradékos osztásnál, ugyanúgy kell egy tömb, feltöltve a kimeneti értékekkel, csak a modulo által kiköpött maradék helyett magának az egyenlőségvizsgálatnak az eredményét használod indexnek. (n mod 2 == 0 => ha igaz, a kifejezés 0-ra értékelődik ki, ha hamis, 1-re). Ennek a szépsége (azon felül, hogy szép), hogy bármilyen más egyszintes elágazásnál használható metodika, míg az előbbi példa csak ott alkalmazható, ahol tudsz modulo értékekkel számolni.

2016. okt. 6. 18:43
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!