C#, milyen kóddal érhető el az alábbi művelet?
Fogós, ravasz kérdés ez.
Talán valami nagyon okos senior fejlesztő apja, nagyapja tudja rá a választ.
const limit = 800;
var
summa : integer = 0;
nums : array[0..9] of integer;
index : byte = 0;
begin
while (summa < limit) or (index < 10) do
begin
summa := summa + array[i];
inc(index);
end;
writeln(index+1,' db szamra volt szukseg');
end.
// A kódból a tömb feltöltése hiányzik.
Tényleg, most nézem, hogy a legnagyobbakat kell előbb összeadni.
Akkor kell elé még egy sort.
Az mit takar, hogy a legnagyobb számokat összeadom? A tömbben levő legnagyobb szám hányszor kell ahhoz, hogy elérje a 800-at?
int legnagyobb = 0;
for(int i=0;i<9;i++) {
if(legnagyobb < tomb[i])
legnagyobb = tomb[i];
}
int ertek = 0;
int szamlalo = 0;
do {
ertek += legnagyobb;
szamlalo++;
} while(ertek < 800);
Működnie kéne ha úgy gondolod, ahogy leírtam.
Bontsd lépésekre a feladatot:
1. A tömböt csökkenő sorrendbe rendezed.
2. Egy ciklussal elkezded összeadogatni a tömbben lévő számokat és bevezetsz egy változót, amivel számlálod hány számot adtál össze. Ha az összeg eléri a 800-at, akkor leállítod ezt a számlálót is kilépsz a ciklusból.
3. Ha az összeg elérte a 800-at, akkor kiírod a számláló értékét. Ha nem, akkor nem írsz ki vagy semmit vagy csak annyit, hogy "a tömbben lévő számok összege nem érte el a 800-at".
Tehát pl.:
Eljárás
rendez(tomb, "desc")
osszeg:=0
szamlalo:=0
ciklus i:=1-től 10-ig
osszeg := osszeg + tomb(i)
ha osszeg<800 akkor
szamlalo := szamlalo+1
fv.
cv.
ha osszeg<800 akkor
ki "A tömbben lévő számok összege nem érte el a 800-at!"
egyébként
ki szamlalo + "db. számot kellett összeadni a tömbből, hogy elérje a 800-at!"
fv.
Eljárás vége
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!