Matlab fórum
Vyvojovy diagram programu - Verzia pre tlač

+- Matlab fórum (http://matlab.sk)
+-- Fórum: Matlab (/forumdisplay.php?fid=4)
+--- Fórum: Programovanie / Programming (/forumdisplay.php?fid=5)
+--- Téma: Vyvojovy diagram programu (/showthread.php?tid=14)



Vyvojovy diagram programu - miro1 - 01-22-2013 23:30

Zdravim mam otazku.
Pripravil som si maly program, ale potrebujem k nemu spravit aj vyvojovy diagram. Ake postupne kroky vypoctu a podmienok robi.
Je niekde nejaky navod ako sa to robi? Nejake predpisane tvary? Dalej mi z cca 5 vzorcov, ktore su rovnake, lisia sa vzdy len jednym cislom. chcem aby nasiel minimalnu hodnotu a potom vypisal spravu aku budem potrebovat.
Ako sa v matlabe hlada min hodnota? Ale tak aby som s nou nepocital dalej, iba mi na zaklade toho ci ta minimalna hodnota bola v prvom, druhom tretom - piatok vzorci vypise urcitu spravu, ktora je pre kazdy vzorec ina, ale chcem aby sa ibjavila vzdy len ta, kde vo vzorci bude najmensia hodnota.
Potom k tomu vyvojovemu grafu - ako by som spravil v nom ze hlada min hodnotu?
Dakujem Miro


RE: Vyvojovy diagram programu - Martin Foltin - 01-23-2013 11:54

Nie celkom sa v tej úlohe orientujem. Skús napísať viac, prípadne sem hoď ten kód.


RE: Vyvojovy diagram programu - miro1 - 01-23-2013 12:05

no mam napriklad taketo vztahy v programe
one=abs(Lz1_Dv1-Lzm_Dvm);
two=abs(Lz2_Dv2-Lzm_Dvm);
three=abs(Lz3_Dv3-Lzm_Dvm);
four=abs(Lz4_Dv4-Lzm_Dvm);
five=abs(Lz5_Dv5-Lzm_Dvm);
six=abs(Lz6_Dv6-Lzm_Dvm);

chcem, aby po prejdeni vypoctu vybralo z tychto 6 vztahov najmensiu hodnotu a vypisalo spravu napr one, two atd.
priklad: Najmensia hodnota bude najdena vo vztahu "one" - potom by som chcel aby vypisalo spravu "one" atd.
ale neviem ako to mam spravit, viem to len velmi primitivne :
if one<two && one<three && one<four && one<five && one<six;
sprava='one';
end
vies mi poradit nieco profesionalnejsie? a ako by som potom vo vyvojomvom grafe nakreslil ze prave halda min. hodnotu zo vztahov?
Dakujem za odpoved


RE: Vyvojovy diagram programu - Martin Foltin - 01-23-2013 12:17

Jasné. Idem na to.


RE: Vyvojovy diagram programu - Martin Foltin - 01-23-2013 13:57

Tak a tu je riešenie v .m kóde


Kód:
%náhodné naplnenie hodnotami
Lz1_Dv1=rand;
Lz2_Dv2=rand;
Lz3_Dv3=rand;
Lz4_Dv4=rand;
Lz5_Dv5=rand;
Lz6_Dv6=rand;
Lzm_Dvm=rand;

%samotné porovnanie
one=abs(Lz1_Dv1-Lzm_Dvm);
two=abs(Lz2_Dv2-Lzm_Dvm);
three=abs(Lz3_Dv3-Lzm_Dvm);
four=abs(Lz4_Dv4-Lzm_Dvm);
five=abs(Lz5_Dv5-Lzm_Dvm);
six=abs(Lz6_Dv6-Lzm_Dvm);

%hľadanie minima
x_name={'one' 'two' 'three' 'four' 'five' 'six'};
x=[one two three four five six];
[min_val pos]=min(x);
disp('Minimálna hodnota je')
min_val

disp('V premennej')
x_name{pos}



RE: Vyvojovy diagram programu - miro1 - 01-23-2013 15:17

waw, super to funguje, ale vobec tomu nechapem Smile
ak mas prosim ta cas, mozes vysvetlit co znamenaju jednotlive vztahy od "%hľadanie minima"?
Aby som popripade to vedel zmodifikovat pokail sa nieco zmeni.
Dakujem velmi za ochotu


RE: Vyvojovy diagram programu - Martin Foltin - 01-23-2013 17:36

Tak tie prvé riadky sú hádam jasné. To som len vygeneroval náhodne čísla, aby som tam niečo mal. Potom nasleduje tvoj kód. A potom ide zas môj. Pozrime sa na to riadok po riadku.

x_name={'one' 'two' 'three' 'four' 'five' 'six'};
Vytvoril som si pole (nie je to terminologicky správne, ale pre naše potreby toto pomenovanie stačí) ktoré má 6 prvkov. Prvky sú typu string a majú svoje poradové čísla. Takže ak si dáš x_name{1}, tak to vráti one. To budeme potrebovať v budúcom výpise.

x=[one two three four five six]
Do vektoru x som vložil všetky hodnoty, ktoré si získal svojim výpočtom.

[min_val pos]=min(x);
Toto je asi kľúčový riadok. Najskôr pravá strana. Je tam použitý príkaz min. Tento príkaz zistí minimálnu hodnotu vo vektore. V tomto prípade x. To presne chceme. Hľadáme minimálnu hodnotu. Túto hodnotu uloží do premennej na ľavej strane do min_val. Funkcia min, ale vie vrátiť dve hodnoty. Jednu už máme. Tou druhou je poradové miesto minimálneho prvku. Takže ak je to na prvom mieste, tak to vrári 1 , ak na treťom 3. Túto informáciu vkladám do premennej pos.

disp('Minimálna hodnota je')
min_val
tieto dva riadky sú len výpis minimálnej hodnoty

disp('V premennej')
x_name{pos}
No a toto je výpis toho kde sa nachádzala minumálna hodnota.

Odporúčam prejsť si to riadok po riadku. Neboj sa zadávať aj do príkazového riadku, aby si to pochopil hlbšie.

Veľa šťastia a sleduj nás na facebooku Wink
TechnicalComputing