C programozásnál az megoldható, hogy addig szorozzon egy számot 0,2-vel amíg el nem éri az x számot és aztán kiírja, hogy hányszor kellett neki beszorozni ahhoz, hogy elérje az x számot? Do while ciklussal próbálkozok de valahogy nem akarja kiírni.
Így állok eddig nagyjából. (Ez a programomnak a lényege).
ora =0.2,i=0;
Do {
ora=(ora*x)
i++;
}while (ora==x);
printf ("%d",ora);
Annak a programnak ami azt csinálja amit leírtál, valahogy így kéne kinézni...
int iAlapSzam = // ?? - először legyenek meg valahonnan azok a számok amikkel dolgozni akarsz
float fMaxSzam = // [...]
int i = 1;
while((float)(iAlapSzam * (i * 0.2f)) < fMaxSzam) i++;
printf("%d", i);
A kérdezőnek: most nem foglalkozom a közben adott válaszokkal, csak a kérdésben írt megoldásodról írok.
Kell lennie egy kezdőszámnak, a 0.2-nek, egy x-nek és egy 'i' számlálónak. Te az 'ora' értékét állítod be 0.2-re, tehát a kezdőszámnak is ezt vetted. Utána ciklikusan szorzod x-szel, és lényegében azt várod, hogy a 0.2*x egyenló legyen x-szel. Ez csak x=0 esetben fog teljesülni.
Külön elvi hiba, hogy te egy számmal való EGYENLŐSÉGET szabsz meg kilépési feltételként. Biztos, hogy a szám a foyamatos csökkenés közben egyszer pont eltalálja az x-et? Inkább azt kellene nézned, hogy a szám kisebb vagy egyenlő lett-e x-szel.
input k
input x
i=0
Ciklus amíg k>x
k=k*0.2
i=i+1
Ciklus vége
output i
Ha x megadott értéke nagyobb a kezdőszám megadott értékénél, akkor az eredmény 0 lesz, mert az "elérje", mint feltétel azonnal teljesült.
Egy kis matek után:
n = ahányszor szorozni kell
a = amennyivel szorozni kell
b = amit szorozni kell
x = amennyinek lennie kell
n = lg(x/b)/lg(a)
Példák:
Hányszor kell 0,2-vel szorozni az 500-at, hogy 0,8 legyen?
n az ismeretlen
a = 0,2
b = 500
x = 0,8
Behelyetesítve:
n = lg(0,8/500)/lg(0,2)
n = 4, tehát 4-szer kell szorozni az 500-at 0,2-vel, hogy 0,8-at kapj.
Ha n nem lesz egész szám azzal igény szerint azt csinálsz amire szükséged van.
A gép azt csinálja, amit leírtál. A ciklus azért nem fut le többször, mert az ora véletlenül sem egyezik az x-szel.
A lebegőpontos számoknál nem lehet arra számítani, hogy pontosan egyenlők lesznek. Vagy használj körülbelüli összehasonlítást (sajnos tudtommal ezt le kell programoznod), vagy használj egészeket!
"Egy kis matek után: "
A legjobb válasz az egész thread-ben! Sokan feleslegesnek tartják az egyetemi matekot, és nyilván ők lennének azok, akik írnának egy olyan ciklust, ami mondjuk 1 milliószor lefut ahelyett, hogy egy kis matekkel behelyettesítenének egy képletbe. Szuper volt a megoldás, és a legtöbb itt kommentelő tanulhat belőle!
#16
Azért ez még nagyon nem egyetemi matek.:D
Sok felesleges lexikális tudást kérnek számon az iskolában amit dolgozat után már el is felejt az ember, így nem marad elég idő olyan tárgyak tanulására ahol fontos a megértés.
Ha nem történész (más ehhez hasonló tantárgyat is írhatnék) lesz valaki, még a seggét se tudja kitörölni a bemagolt évszámok és uralkodók neveivel. Amíg számítógépet/okostelefont minden nap használ az ember, illetve sokan játszanak böngészős építgetős játékkal, a matek ott is jól jön a termelés kimaximalizására stb.
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!