Hogyan kell a következő feladatot megoldani C-ben, illetve mi a hiba a megoldásomban?
Péter egy N-nél nem nagyobb pozitív egész számra gondolt. Ezen kívül azt is megmondta Pálnak, hogy a gondolt szám M-mel osztható. Mekkora valószínűséggel találja ki Pál elsőre a gondolt számot, ha jól tudja a matematikát?
Az én megoldásom ez lenne:
értem az alapelgondolást, hogy N-ig kéne egy ciklus, ami mindig növeli egy szám értékét, és növeli egy másikét, ha az osztható M-mel (tehát maradékosa 0 az eredmény)
(mivel a maradékos osztást csak egész számok esetén lehet elvégezni, így x és y egésznek lett deklarálva, de utána a normál osztást viszont csak már float-ban érdemes, hogy valós eredményt kapjak), azonban mindig 0-át kapok így is... hogyan lehetne ezt a lehető legegyszerűbben megoldani, illetve mit rontottam el a programomban?
igazából, ha próbaszerűen P helyére y-ot írok, hogy legalább a kedvező feltételeket kiírja-e jól, de akkor meg mindig 1-et kapok. Próbálkozni mindig N=6-al és M=2-vel szoktam, így P=0.5-nek kéne lennie.
Előre is köszönöm a segítséget!
#include <stdio.h>
int x=0, N, M, y=0;
float P, a,b;
int main()
{
printf("Ennél nem nagyobb: \n");
scanf("%f", &N);
printf("Ezzel osztható: \n");
scanf("%f", &M);
while (x<=N)
{
x++;
if ((x%M)==0.0) y++;
}
a=x;
b=y;
P=b/a;
printf("Valószínûség: %d\n", P);
return 0;
}
Nem néztem át az algoritmust, de "P=b/a;"
Mindig int lesz, ugyanis két intet osztasz.
Megoldás:
P=b/(float)a;
Janem, a és b is float.
Akkor nem szóltam.
"x%M)==0.0"
Ez mondjuk szintén csúnya.
Egyrészt int számot hasonlítasz lebegőpontossal. Minek?
Másrészt meg lebegőpontos számokat sosem hasonlítunk egyenlőséggel.
1/(n/m)
(a nevezőben egészosztás van)
Minek ide ciklus?
Elvileg a CodeBlocks is az nem?
Am Linux terminálban nyomjuk... :D
"nekem 1/(n/m) sem jön össze (hiszen ha egészosztás történik az már nem jó ott)"
Nézd, lehet nem jól értem a feladatot, de én erre gondoltam:
például N=22, M=3
N/M = 7
P = 1/(N/M) = 1/7
(3,6,9,12,15,18,21 közül gondolt valamelyikre)
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!