Zdravim, ako zistim nasledujucu vec:
mam pole ktore ma hodnoty napr. [20,16,25,19,6] ako vypisem ktory prvok pola je najmensi a este jedna vec, tie jednotlive prvky pola su riesenia. napr. Riesenie1=20, atd.... a chcem aby mi to vypisalo jednak ktore z tych cisel je najmensie a ktore riesenie to je napr. z uvedenych cisel by to bola 6. Cize program by vypisal najemensie je cislo 6, riesenie 5.
Dakujem za odpovede!
Fórum › Pascal
Problem s array
Na čo triedené pole? Stačí 1 cyklus:
min_ind:=1;
for i:=2 to pocet_prvkov do if pole[i]<pole[min_ind] then min_ind:=i;
writeln(min_ind, pole[min_ind]);
To je len taký hrubý náčrt, daj si tam vlastné premenné a uprav výstupný text...
ja by som to potreboval zahrnut do nasledovneho prikladu
potrebujem zistit otimalny resp. minimalny pocet pocet pouzitych sudov.
ked si spustite program tak to optimalne riesenie by malo byt Riesenie c 1. pretoze je tam pouity najmensi pocet sudov. Ja potrebujem vypisat optimalny/minimalny pocet sudov cize je to 6 sudov a potrebujem vypisat aj to ze optimalne riesenie je jedno cize len 6 pretoze v jednotlivych rieseniach mi vyjde sucet sudov=6 len 1 krat.
Skusal som si nahrat jednotlive sucty pouzitych sudov do pola a podla toho nejako spravit , ale aj tak sa mi to stale nejako nepodarilo .
program sudy;
uses crt;
const PocetSudov : Array[1..4,1..2] of byte = (
(19,2), { (pocet,objem) }
(3,5),
(1,6),
(3,10)
);
LitrovVina = 46;
var kombinacie, SudTyp1 , SudTyp2, SudTyp3, SudTyp4 : byte;
begin
clrscr;
writeln('Celkovy objem vina: 46 litrov');
writeln('1. typ sudku - objem: 2 L, pocet sudkov: 19');
writeln('2. typ sudku - objem: 5 L, pocet sudkov: 3');
writeln('3. typ sudku - objem: 6 L, pocet sudkov: 1');
writeln('4. typ sudku - objem: 10 L, pocet sudkov: 3');
writeln;
kombinacie:=0;
for SudTyp1:=0 to LitrovVina do
for SudTyp2:=0 to LitrovVina do
for SudTyp3:=0 to LitrovVina do
for SudTyp4:=0 to LitrovVina do
if ((SudTyp1 * PocetSudov[1,2]) + (SudTyp2 * PocetSudov[2,2])
+ (SudTyp3 * PocetSudov[3,2]) + (SudTyp4 * PocetSudov[4,2]) = LitrovVina)
AND (SudTyp1<=PocetSudov[1,1]) AND (SudTyp2<=PocetSudov[2,1])
AND (SudTyp3<=PocetSudov[3,1]) AND (SudTyp4<=PocetSudov[4,1]) then
begin
kombinacie:=kombinacie+1;
writeln('Riesenie c. ',kombinacie,': (',SudTyp1,', ',SudTyp2,', ', SudTyp3,', ',SudTyp4,')');
end;
writeln;
writeln('Celkovy pocet rieseni:',kombinacie:4);
writeln('Optimalny pocet sudkov:');
writeln('Optimalne riesenia:');
readln;
end.
Co takhle se podívat o pár vláken zpátky, kde se tahle úloha řešila? http://programujte.com/index.php?akce=diskuze&kam=vlakno&tema=6673-uloha-v-pascale#55386
Moje stránka.
To mylan4 : toto funguje az na jednu malickost, ked budu v poli ulozene 2 take iste najmensie hodnoty tak sa vypise iby jedna z nich, ako to mam spravit aby napr. ked mam v poli 2 najmensie hodnoty aby sa mi vypisali obi dve napr pole[2]:=2;
pole[5]:=2;
program vypise 2. 2 a 5.2, uz si nad tym lamem hlavu dlho skusal som ten min_ind spravit ako dalsie pole ale neja mi to to nejde... dik za odpoved.
To jozo0025 : V tom prípade prejsť pole a nájsť najmenšiu hodnotu, t.j.
najmensie:=pole[1];
for i:=2 to pocet do if pole[i]<najmensie then najmensie:=pole[i];
writeln(najmensie);
a potom príde 2. cyklus, v ktorom prejdeme prvky a ak ich hodnota je najmensia (moze byt viac), tak vypiseme index:
for i:=1 to pocet do if pole[i]=najmensie then write(i,' ');
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Problém s array a while loopom — založil Nayram
Array of array of array — založil Yuffie
$a[], [], array[] — založil Rudolf
Moderátoři diskuze