Sedlové body matice – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Sedlové body matice – Java – Fórum – Programujte.comSedlové body matice – Java – Fórum – Programujte.com

 

michal čížek
~ Anonymní uživatel
4 příspěvky
17. 12. 2013   #1
-
0
-

Sedlové body: sedlový bod matice je takový prvek, který je největší ve svém řádku a nejmenší ve svém sloupci, nebo nejmenší ve svém řádku a největší ve svém sloupci. Napište program, který načte matici ze vstupního souboru a vyhledá její sedlové body.
Parametry: vstupní soubor. Ahoj nevíte se s tím někdo rady? :) děkuju za odpoveď

Nahlásit jako SPAM
IP: 160.217.218.–
17. 12. 2013   #2
-
+1
-
Zajímavé

V podstatě v zadání máš návod:
1. najdu v řádcích minimum a maximum a zapamatuji si, ve kterých sloupcích leží
2. najdu ve sloupcích minimum a maximum, zapamatuji si, ve kterých řádcích leží
3. projdu minima řádků a otestuji, zda se ve stejném prvku nachází maximum ze sloupce
4. projdu maxima řádků a otestuji, zda se ve stejném prvku nachází minimum ze sloupce

Body 3 a 4 by asi šli zpracovat jedním cyklem

hu

Nahlásit jako SPAM
IP: 195.178.67.–
ciza.1230
Duch
17. 12. 2013   #3
-
0
-

#2 hlucheucho
děkuju ti!:) hele ale pomohlo by mi spíš kdyby mi to někdo pomohl naprogramovat!:) vubec nevim jak začít !:)

Nahlásit jako SPAM
IP: 160.217.218.–
Flowy0
Věrný člen
17. 12. 2013   #4
-
0
-

#2 hlucheucho
v takomto algoritme by si pravdepodobne (ak som spravne pochopil) nenasiel spravne riesenie ... v prvom bode budes zapisovat nie stlpce ale riadky pripadne vice versa v druhom bode ...

Nahlásit jako SPAM
IP: 91.127.137.–
https://github.com/Flowy
17. 12. 2013   #5
-
0
-

#4 Flowy
měl jsem na mysli v každém řádku najít minimum a maximum a v každém sloupci najít minimum a maximum a pamatovat si, kde leží - vzniknou 4 seznamy extrémů: minima řádků, maxima řádků, minima sloupců a maxima sloupců (každý z těchto prvků splňuje jednu podmínku pro sedlový bod). Sedlové body jsou ty prvky matice, které se nacházejí v:
a) seznamu minima řádků a současně seznamu maxima sloupců
b) seznamu maxima řádků a současně seznamu minima sloupců

hu

Nahlásit jako SPAM
IP: 195.178.67.–
17. 12. 2013   #6
-
0
-

Ještě jedna možnost, jak na to:

1. vytvoř dvourozměrné pole stejně velké, jako původní matice
2. původní matici procházej po řádcích, do pomocného pole zapiš 0x01 do stejného místa, kde je minimum a 0x02 do stejného místa kde je maximum v řádku původní matice. Ostatní prvky pom. pole nastav na 0. Proveď pro každý řádek
3. původní matici procházej po sloupcích, do pomocného pole pomocí bitového OR vlož 0x10 do stejného místa, kde je minimum a 0x20 do stejného místa kde je maximum v původní matici. Ostatní prvky pom. pole nech nedotčené. Proveď pro každý sloupec.
4. Tam, kde se v pom. poli nachází hodnota 0x21 (řádek max, sloupec min) nebo 0x12 (řádek min, sloupec max), se v původní matici nachází sedlové body.

Jak začít - třeba načíst matici ze souboru do dvourozměrného pole. Chtělo by to vědět víc o organizaci zdrojového souboru (nebo si ji máš určit sám?).

hu

Nahlásit jako SPAM
IP: 195.178.67.–
Flowy0
Věrný člen
17. 12. 2013   #7
-
0
-

#6 hlucheucho
podobne riesenie napadlo aj mna a asi by bolo lacnejsie ... ak by to malo byt aj jednoduchsie tak by sa zapisovalo pri prechadzani riadku 1 pre max a -1 pre min a pri prechadzani stlpca by sa skontrolovalo ci v tabulke na danom mieste kde sme nasli min je 1 a na mieste kde sme nasli max tak je -1

tvoje riesenie by sa dalo celkom lahko preniest do objektov a usetrit tak pamet pri zbytocnom vytvarani celej kopie tabulky (ukladal si len dve premenne - ci je v nom max/min riadku a max/min stlpca ... nove objekty by sa vytvarali len pri prechadzani riadkov a pri prechadzani stlpcov by sa pripadne len dopisoval udaj pre stlpce (max/min) ak dany objekt bol uz vytvoreny)

Nahlásit jako SPAM
IP: 91.127.137.–
https://github.com/Flowy
ciza.1230
Duch
17. 12. 2013   #8
-
0
-

#6 hlucheucho
mám si jí určit sám! právě. tohle je zadání celý semestrální práce

Nahlásit jako SPAM
IP: 178.255.168.–
17. 12. 2013   #9
-
0
-

Tak něco osvědčeného, třeba csv. Možná i tady na fóru najdeš, jak ho přečíst.  V podstatě textový soubor, kde je řádek ukončen znaky CR LF a položky v řádku jsou odděleny ; (středníkem). Aby nebylo problém mít připravené pole správné velikosti, v prvním řádku souboru by mohl být rozměr. Další řádky by obsahovaly prvky matice - řádek souboru = řádek matice. Takový soubor snadno vytvoříš i v Notepadu - pro ladění programu budeš testovací soubor potřebovat.

hu

Nahlásit jako SPAM
IP: 195.178.67.–
ciza.1230
Duch
17. 12. 2013   #10
-
0
-

#9 hlucheucho
spíš mi to pomoze na programovat fakt si tim nevim rady! :)

děkuju vám stejnak i tak :)

Nahlásit jako SPAM
IP: 178.255.168.–
17. 12. 2013   #11
-
0
-

To by mě zajímalo, co na té škole děláš, když si ani neumíš do google napsat práce se soubory java a přečíst si jak alespoň otevřít a načíst data ze souboru.

http://www.sspbrno.cz/~lenka.hruskova/programovani/java/soubory/Java-prace-se-soubory.pdf

hu 

Nahlásit jako SPAM
IP: 195.178.67.–
ciza.1230
Duch
17. 12. 2013   #12
-
0
-

#11 hlucheucho
no promin. hele jako to vim ! jak to načíst ze souboru . ale musim hlavně pochopit to zadání tý práce ale děkuju kámoš mi s tim teď pomáhá!:) 

Nahlásit jako SPAM
IP: 178.255.168.–
17. 12. 2013   #13
-
0
-

  to je potom těžký. "Do jazyk můj kmen": načti matici ze souboru (třeba csv) a najdi v ní sedlové body. Aby to mělo smysl, tak ty někam vypiš (do souboru?) nebo vypiš matici s vyznačením sedlových bodů (jak má výstup vypadat v zadání chybí - asi vlastní tvořivost). Velkou část zadání představuje definice sedlového bodu.

To, co jsem tu pak rozepsal byl v hrubých rysech algoritmus, co udělat s načtenými daty aby byl požadovaný výsledek. Algoritmus pak napíšeš v programovacím jazyce ve kterém děláš - v tomto případě Java. K realizaci vyhledání sedlových bodů by ti mělo stačit několik cyklů (for) a podmínek (if).

hu

Nahlásit jako SPAM
IP: 195.178.67.–
Robin93
~ Anonymní uživatel
4 příspěvky
17. 12. 2013   #14
-
0
-

A měl by tu někdo nápad jak by vypadal kod v Javě ? KDyby jste to někdo sem dal, byl bych velmi vděčen

:)

Nahlásit jako SPAM
IP: 93.99.187.–
KIIV
~ Moderátor
+43
God of flame
18. 12. 2013   #15
-
+2
-
Zajímavé

#14 Robin93
Jak by vypadal vi kazdy, kdo tu psal (krom tebe). Ostatne se te snazi dokopat k predvedeni snahy. Kdyz tu budes davat kusy kodu a ptat se na konkretni dotazy, tak te urcite nekdo rad pomuze dostrkat spravnym smerem.

Ale zatim je tu jen snaha z nas vysockovat hotovej kod. Takze nase snaha za tebe neco naprogramovat odpovida tvoji snaze neco udelat.

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
ciza.1230
Duch
25. 12. 2013   #16
-
0
-

#15 KIIV
ok máte pravdu !:) musim stim zapracovat stejnak děkuju!:)

Nahlásit jako SPAM
IP: 178.255.168.–
Scrash0
Newbie
21. 1. 2014   #17
-
0
-

   

Pochopil jsem to správně?..
Výsledkem jsou tedy body:
[1, 2]  = 3
a [3, 3] = 3

A ještě by mě zajímalo, jestli je to správný postup, když mám například řádek 2 2 3 a mám vybrat minimum. Je správně, když vyberu obě dvojky?

Připojen obrázek.

Nahlásit jako SPAM
IP: 160.217.229.–
Flowy0
Věrný člen
21. 1. 2014   #18
-
0
-

medzi minimom a najmensim prvkom je rozdiel ... kazda mnozina ma svoje minimum ale nie kazda musi mat najmensi prvok (ak existuje najmensi prvok tak je zaroven aj minimom ... da sa povedat ze najmensi prvok je podmnozina minima ktora existuje len v pripade ak ma minimum prave jeden prvok) ... ale zase minimum a najnizsia hodnota v mnozine su si rovne (ak je mnozina usporiadana podla hodnoty) ... zalezi na tom ako to ma zadane pripadne podla definicie sedloveho bodu

podla zadania hladas len najmensie prvky ... budes hladat minimum a zaroven si zapisovat kolko krat si ho nasiel ... ak to bude prave 1 tak je to zaroven najmensi prvok

Nahlásit jako SPAM
IP: 95.102.43.–
https://github.com/Flowy
Scrash0
Newbie
21. 1. 2014   #19
-
0
-

Tím se to docela komplikuje.. Takže když mám množinu { 1 2 3 3 2 1 } tak zde minimum ani maximum neexistuje?

Nahlásit jako SPAM
IP: 160.217.229.–
Flowy0
Věrný člen
21. 1. 2014   #20
-
0
-

naopak minimum je 1 a maximum je 3 ... ale nema najvecsi a najmensi prvok ... pre trochu komplikacie by sa dalo povedat ze najmensia hodnota je 1 a najvecsia hodnota je 3

Nahlásit jako SPAM
IP: 95.102.43.–
https://github.com/Flowy
Scrash0
Newbie
21. 1. 2014   #21
-
0
-

Takže dejme tomu, že půjdu po jednotlivých prvcích matice a na každým ověřím, jestli je:

(nejmenší ve svém sloupci) && (největší ve svém řádku) && (nevyskytuje se víckrát pro tento sloupec a řádek)  ||  (největší ve svém sloupci) && (nejmenší ve svém řádku) && (nevyskytuje se víckrát pro tento sloupec a řádek)

když to splní, tak uložím pozici

Tímhle bych měl tedy získat sedlové body?

Nahlásit jako SPAM
IP: 160.217.229.–
Flowy0
Věrný člen
21. 1. 2014   #22
-
0
-

ano to su podmienky ale ak by si toto pocital pre kazdy prvok tak sa dostanes k extremne zbytocnej zlozitosti ... sposob akym si to hladal v tych obrazkoch bol o dost rychlejsi pretoze hladas najmensi a najvecsi prvok pre kazdy stlpec/riadok len raz 

Nahlásit jako SPAM
IP: 95.102.43.–
https://github.com/Flowy
Scrash0
Newbie
21. 1. 2014   #23
-
0
-

Jojo, ale aspoň už chápu, čeho je potřeba docílit.

Díky za rady :)

Nahlásit jako SPAM
IP: 160.217.229.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 2 hosté

Podobná vlákna

Body — založil body

C# primka mezi dvema body — založil Kryspin

Libcurl http post body — založil Michal

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý