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?
js-ben:
<script>
var ertek = new Array('páros','páratlan');
var szam = prompt('szam');
alert(ertek[szam%2]);
</script>
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.
nem hagytam le mert nem is kell oda *
picit még álmos vagyok, nemrég keltem
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;
}
#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;
}
Á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.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!