Hogy tudom ezt FreePascal-ban megcsinálni? (több lent)
Van 10 kérdés mind a 10 kérdéshez tartozzon 3 válasz.
Esetünkben legyen a 3 válasz "1" "2" és "3".
Hogy leget megoldani hogy a 10 kérdésnél amelyik számot a legtöbbször választod azt kiirja végén?
Én arra gondoltam hogy úgy meglehet csinálni hogy:
if a=1 then begin
if b=1 then
if c=1 then
if d=1 then...
és így tovább csak így minden kombinációt fel kell sorolni és az úgy nagyon sok.
A választ előre is köszönöm.
Hát tanulni kéne még. :) Ciklusokról és tömbökről. Meg algoritmusokról.
Pl. eltárolhatod egy 10 elemű tömbben a válaszokat, és azon futtatsz egy maximum kiválasztást.
Szia.
Igen, tényleg tanulni kéne, még neked is kedves #1-es válaszoló, ugyanis itt a maximum kiválasztásnak, szerintem nem sok szerepe van (a többit amit írtál az teljesen korrekt), mert mit tudsz meg egy maximum kiválasztásnál, azt hogy mely az a kérdés amelyikre először válaszoltak a 3-as számmal. (Ez nem játszik a feladatban - szerintem)
Tehát az #1-es válaszoló által leírt, több és ciklus az tényleg játszik. A válaszokat letárolod egy 10 elemű tömbben. Lenullázol 3 változót (Ez is lehet egy 3 elemű tömb - ebben lesznek az 1,2,3 válaszok darab számai.) Indítasz egy ciklust 1-től 10-ig, és ha az adott válasz száma 1 akkor az első változó értékét növeled eggyel (vagy első tömbelemet növeled), ha 2 akkor a második változó (második tömbelem növelése), ha 3-as akkor a harmadik változó (harmadik tömbelem növelése), azért jobb a tömbös megoldás, mert akkor nem kell feltétel ahhoz, hogy eldöntsd milyen válasz lett adva a kérdésre (feltételezve, hogy amikor bekéred a válaszokat leellenőrzöd, hogy a válasz nem lehet csak az 1,2 vagy a 3-as szám).
Na a duma után nézzünk egy kis programozást is :
Vala : array [1..10] of byte ; { ebben vannak a válaszok }
stat : array [1..3] of byte ; { ebben lesz a darabszám }
{ Kérdések kiirása, válaszok bekérése itt. EZ gondolom valamilyen szinten már meg van irva. }
.
.
.
{ Statisztika nullázása}
Stat[1]:=0;
Stat[2]:=0;
Stat[3]:=0;
{ Először az feltételes módszer : }
For i:=1 to 10 do begin
_ _if Vala[I]=1 then Stat[1]:=Stat[1]+1;
_ _if Vala[I]=2 then Stat[2]:=Stat[3]+1;
_ _if Vala[I]=3 then Stat[3]:=Stat[3]+1;
end ;
{ Most pedig a tömb kihasználása : }
For i:=1 to 10 do begin
_ _Stat[Vala[I]]:=Stat[Vala[I]]+1;
end ;
Bármelyiket is használod fel (a feltételest vagy a tömböst) a Stat[1] változó fogja tartalmazni a válaszokra adott 1-sek darabszámát. A Stat[2] változó a 2-es válaszok darabszámát, mig a Stat[3] változó, a 3-as válaszok darabszámát tartalmazza.
Sok sikert.
üdv.
Most, hogy mégegyszer átolvastam a feladatod, elnézést kérek az #1-es válaszolótól, mert a végére tényleg kellhet a maximum kiválasztás (arra, hogy 3 számból eldöntsd melyik a legnagyobb), de ezt ezért if -el is meg lehet oldani.
Üdv.
#1 vagyok
> mit tudsz meg egy maximum kiválasztásnál, azt hogy mely az a kérdés amelyikre először válaszoltak a 3-as számmal
Való igaz, (nem tanulatlanságból, hanem kapkodásból) kihagytam egy közbülső lépést, a válaszlehetőségek előfordulásainak megszámolását. Vagyis ezt:
> egy 3 elemű tömb - ebben lesznek az 1,2,3 válaszok darab számai
> 3 számból eldöntsd melyik a legnagyobb), de ezt ezért if -el is meg lehet oldani
3 számra valóban meg lehet oldani if-el, de ha később több válaszlehetőséget szeretne, akkor jobb a max.kiv.
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!