existence hodnoty v Poli   zodpovězená otázka

VB.NET

Zdravím,

mám 1-dimenzionální pole o velikosti 70 (tedy 0-69)

potřeboval bych v něm ověřit zda tam existují určité číselné hodnoty...Pokud ano pak zobrazit zprávu o nálezu, a v případě že ne pak provést Funkci

Zkoušel jsem to pomocí cyklu ale to se mi při kontrole každé hodnoty provedla ona funkce... Potřebuji ověřit nejdřív hodnoty a pak podle toho zda v poli jsou či nejsou jednat. Nemáte někdo tušení co s tím? Děkuji

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Koukněta třeba na

System.Array.IndexOf(pole,cohledam,indexpocatkuhledani)
'nebo
System.Array.Find
System.Array.FindAll
'apod

s pomocí těchto metod nebude problém vaše zadání splnit

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět

tak se mi nakonec podařilo tohle, a funguje to přesně jak potřebuji

Imports System.Xml
Public Class Form1

    Dim ZasobnikCest() As Integer = {2, 3, 4, 5, 6, 11, 6, 8, 0, 8} 'pouze pro test... jinak bude naplneno za behu
    Dim MuzuStavet As Boolean = True
    
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim docCross As New XmlDocument()
        docCross.Load("cross.xml")

        'nacte cestu s cislem...
        Dim nodes As XmlNodeList = docCross.SelectNodes("/Kolize/Cesta[@id=" & TextBox1.Text & "]")

        'precte zakazy postupne...
        For Each nC As Xml.XmlNode In docCross.SelectNodes("/Kolize/Cesta[@id=" & TextBox1.Text & "]/Zakaz")



            'projdi pole a porovnej zakazane s hodnotami pole
            For i = 0 To 9 'pro test jen 10 hodnot
                If ZasobnikCest(i) = nC.Attributes("cislo").Value Then
                    MuzuStavet = False 'pokud narazis na shodu pak nastav False
                End If

            Next

        Next
        If MuzuStavet = False Then
            MessageBox.Show("nemuzes")
            MuzuStavet = True
        Else
            MessageBox.Show("muzes")
        End If
    End Sub



End Class
nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

A to je právě věc, podle které se pozná dobrý a špatný programátor. Přestože předchozí příspěvek vám příslušné metody naservíroval až pod nos a pomocí nich byste mohl hodnotu v poli najít na jeden řádek a celý váš kód brutálně zjednodušit, raději jste si to vymyslel a napsal celé sám. Z výukového hlediska je pro začátečníky dobré si tyhle věci umět napsat sám, ale pokud to takhle chcete používat všude, tak to opravdu není ideální - neustále rozepisovat triviální operace kód akorát znepřehledňuje.

Přepsat se to dá takto:

'precte zakazy postupne...
For Each nC As Xml.XmlNode In docCross.SelectNodes("/Kolize/Cesta[@id=" & TextBox1.Text & "]/Zakaz")

    If Array.IndexOf(ZasobnikCest, nC.Attributes("cislo").Value) >= 0 Then
        MuzuStavet = False
        Exit For    'pokud jsem nalezl shodu, dál už nemusíme ani hledat
    End If
Next

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Tak teď jste mne dostal! Na jednu stranu se profesionálové dívají z vejšky na všechny, kteří 99,5% kódu opíšou pomocí strejdy googla odjinud (přičemž každý ví, že tahle cesta vede do pekel, protože se pak bezmyšlenkovitě opisuje a nic netvoří) a na druhou stranu píšou tohle. Před časem jsem zaslechl od profíka hlášku:"Ale barák taky nestavíš domrtě z vlastního. Koupíš cihly,dřevo, ... No a pak to poskládáš, jak potřebuješ." Tak to jsem koukal stejně. To ale není moc daleko od kréda běžného hackera:"Vymýšlet něco, co už bylo vymyšleno, je blbost."

A proto se crackuje. Líbí se mi, jak se pak oficiální programátorská scéna rozčiluje na Tučňáky a příznivce OpenSource. Chápu, že použít několik řádků svého kódu, když můžu použít funkci z knihovny, je hloupost, ale ten člověk na něco přišel a funguje mu to. Tak proč se do něj navážet? Měli bychom být za takový lidi vděčný, protože to jsou ti, kteří se fakt chtěj něco naučit a něco udělat. Váš přístup mi přijde úplně mimo, vzhledem k tomu, že školíte. Mimochodem, použití kterékoli cizí knihovny je defacto totéž, jako najít kus kódu na googlu a použít ho.Jenom opravdu málokdo si dovede představit, jak kolikrát vypadají metody oficiálních knihoven zevnitř. A pak se nedělá nic jiného, než funkce z funkcí, které někdo někde vymyslel. Kdyby takhle přemýšleli staří programátoři, asi bychom tu dnes neměli If Array.IndexOf ... nebo strlen a spol.

Ten kluk by měl dostat metál, že svý poznání obohatil o svůj kód. A když mu to funguje a jinde nedělá bordel, tak je to jedině ok. V tomto kontextu chápu céčkaře a ještě víc machry v JSA. O těch, co dělají v LISPu ani nemluvě.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

I když váš dlouhý text čtu po desáté, pořád tak nějak nechápu, co tím vlastně míníte. Takže popořadě:

Na jednu stranu se profesionálové dívají z vejšky na všechny, kteří 99,5% kódu opíšou pomocí strejdy googla odjinud (přičemž každý ví, že tahle cesta vede do pekel, protože se pak bezmyšlenkovitě opisuje a nic netvoří)

Pozor, je opisování a opisování. Není nic špatného na tom zkopírovat kus kódu, kterému rozumíte, posíváte se, jak funguje, a zaintegrujete ho do své aplikace. To je správné kopírování.

Špatné kopírování je takové, když člověk něco najde na Googlu, zkopíruje to do projektu, a pak na fórum napíše dotaz, co mu tam nejede, ze kterého vyplývá, že ani netuší, co je to proměnná. To naštěstí není tento případ.

Ale barák taky nestavíš domrtě z vlastního. Koupíš cihly,dřevo, ... No a pak to poskládáš, jak potřebuješ

I to je jedna možnost, jak vyvíjet aplikace, a přiznejme si, že provgramátoři v .NETu ji používají hodně. Ono je to efektivní - někdo chytrý vymyslí knihovny tak, aby se daly používat obecně, a ostatní je pak používají k různým účelům. Jen v ojedinělých případech je výhodné a smysluplné si vše psát odznova, většinou to dělají lidé, kteří jsou líní naučit se nějakou knihovnu, případně se snaží napsat si knihovnu vlastní (což se jim ne vždy povede, většinou to skončí tím, že z toho vznikne bastl obsahující jen funkce, které autor potřeboval, a pořádně neotestované).

To ale není moc daleko od kréda běžného hackera: "Vymýšlet něco, co už bylo vymyšleno, je blbost."

Tak tohle tvrzení nechápu. Hackeři se snaží využít hlouposti uživatelů k vydělání peněz anebo dělají cracky pro aplikace, což jsou hodiny a hodiny hrabání se v assembleru a následné změny pár bajtíků. Mimochodem vymýšlet něco, co už bylo vymyšleno, je opravdu blbost, ať už to říká kdokoliv.

Líbí se mi, jak se pak oficiální programátorská scéna rozčiluje na Tučňáky a příznivce OpenSource.

Co je to oficiální programátorská scéna? Já třeba tučňáky rozčiluju a open source moc nemusím, což ale vůbec neznamená, že je to obecný světonázor (ono je to spíš opačně - open source je přece to dobro a světový mír, díky kterému se budeme mít všichni dobře, protože nebudeme už podporovat tu zlou moci a penězchtivou organizaci; prostě všechno bude všech).

Kdyby takhle přemýšleli staří programátoři, asi bychom tu dnes neměli If Array.IndexOf ... nebo strlen a spol.

Vy děláte, jako kdyby ti mladí programátoři žádné knihovny nepsali a jenom používali to, co napsali ti staří (to je šílená demagogie, když se nad tím zamyslíte). Copak dneska nevznikají nové knihovny? Copak mladý člověk nemůže napsat svou vlastní knihovnu? To je výsada starých?

Ten kluk by měl dostat metál, že svý poznání obohatil o svůj kód. A když mu to funguje a jinde nedělá bordel, tak je to jedině ok.

To, že někdo umí For cyklus a podmínku (jakože tazatel je umí) a správně je použije, to opravdu není na metál. To je naprosto základní znalost. Už v předchozím příspěvku jsem napsal, že je dobré si to ze začátku zkusit napsat ručně, aby se člověk procvičil, ale neustálým opakováním konstrukcí If a For se právě naopak tazatel už nikam dál neposune, bude jen opakovat to, co už umí. Vymyslet 3 řádky kódu není opravdu nějaká zázračná programátorská schopnost, to je nutnost od úplného začátku. Ten, kdo tohle neumí, nemůže programovat.

V tomto kontextu chápu céčkaře a ještě víc machry v JSA. O těch, co dělají v LISPu ani nemluvě.

Oni céčkaři nepoužívají knihovny? Jo, maximálně když píšou pro nějaká malá embedded zařízení nebo ovladače do jádra, jinak se knihovny normálně používají. A neznám nikoho, kdo by psal něco užitečného v LISPu, tohle jsou jazyky spíš pro akademické a výukové účely než pro praktické programování (netvrdím, že se v nich nedá napsat normální aplikace, ale obecně se používají naprosto minimálně).

Na závěr bych ještě zdůraznil, že předchozí příspěvek jsem napsal tak, jak jsem ho napsal, proto, že tazateli někdo poradil funkce IndexOf, Find a FindAll, které tady na pár místech na webu již máme popsané, ale tazatel byl líný si o nich něco zjistit a vymyslel si své řešení. Opakuji ještě jednou - pro naučení se je to velmi dobré, pro praktické použití na stopadesáti místech v aplikaci je vlastní řešení For cyklem a podmínkou nesmysl, když na to existuje knihovní funkce.

Dobrý programátor se pozná podle toho, že zná knihovny, zná jazyk a sám nepíše věci, které už základní knihovny obsahují. Jsou výjimky a speciální případy, kdy to má smysl, ale sem nepatří tento případ.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback