Nevím si rady s tímto programem... – Visual Basic – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Nevím si rady s tímto programem... – Visual Basic – Fórum – Programujte.comNevím si rady s tímto programem... – Visual Basic – Fórum – Programujte.com

 

Cece0
Duch
29. 10. 2006   #1
-
0
-

Tímto bych chtěl požádat o pomoc.
Zadání:
Na vstupu jsou dvě čísla M a N
M - má být velikost matice (např. 4) tak potom bude matice velká 4 x 4 pole
N - má být libovolné číslo, které když zadám tak najde v matici takový počet min a max čísel (např. 3) tak potom mi vytiskne 3 min a 3 max čísla z matice
Matice má být náhodně vygenerovaná v intervalu od 1 do 100.
Mělo by to být v excelu.
Předem děkuji.

Nahlásit jako SPAM
IP: ...–
Jakub Lajmon0
Věrný člen
29. 10. 2006   #2
-
0
-

ak to ma byt v exceli, tak neviem, preco si to dal do Visual Basicu na fore. vo visual basicu by som na to nasiel postup, tak sa vyjadri, ci to ma byt vo VB alebo MS Excel. Lebo v exceli, kym nemusim, tak nerobim :)

Nahlásit jako SPAM
IP: ...–
Jan Malý
~ Redaktor
0
Grafoman
29. 10. 2006   #3
-
0
-

hmm sem to tak nějak patří je to VBA... ale nikdy sem s tim nedělal tak radit nemohu...
Binary_ranger zkus sem dát ten kod a uvidí se

Nahlásit jako SPAM
IP: ...–
Jan Malý | web: www.malyphoto.cz, @malyphoto
Cece0
Duch
29. 10. 2006   #4
-
0
-

Ja myslel jako ve Visual Basicu ale pres Excel jako tam se mi pak zobrazi ta matice (je to přehlednejší než ve wordu). Staci mi to normalne ve VB. Diky.

Nahlásit jako SPAM
IP: ...–
Jakub Lajmon0
Věrný člen
29. 10. 2006   #5
-
0
-

OLE s Excelom som este nepouzival (a ani to neplanujem), ale skusim nieco vymysliet, ale dajte cas ok?

Nahlásit jako SPAM
IP: ...–
Jakub Lajmon0
Věrný člen
29. 10. 2006   #6
-
0
-

este mi napis, ci maju byt rozmery a prvky matice vygenerovane nahodne, alebo na vstupe. ale to je detail, uz na tom pracujem :ok:

Nahlásit jako SPAM
IP: ...–
Jakub Lajmon0
Věrný člen
29. 10. 2006   #7
-
0
-

Tak tu je nejaky ten zaciatocy navrh:

Public Function MaticeMinMax(x As Integer, m As Integer)

Dim pole(x - 1, x - 1)
Dim polemax(2)
Dim polemin(2)
Dim pocet As Integer
pocet = (x - 1) * (x - 1) 'celkovy pocet prvkov
Dim prvky(pocet)'zoradene 1x pole
Dim a, b As Integer

For i = 1 To x: For y = 1 To x:
prvky(i + y - 2)=pole(i - 1, y - 1)'do jedneho pola, sa nacitaju vsetky hodnoty
: Next: Next
For i = 1 To pocet:

If prvky(i - 1) > prvky(i) Then
a = prvky(i - 1)
prvky(i - 1) = prvky(i) 'zoradenie vsetkych prvkov
prvky(i) = a

For i = 1 To m:
polemin(i - 1) = prvky(i - 1) ' nacitanie do jedneho pola minimalne hodnoty
polemax(i - 1) = prvky(pocet - i + 1) '... a maximalne hodnoty
End Function

...este si dories nacitanie hodnot do matice
:pc: RESUME: vobec som to neskusal, bolo to len tak narychlo napisane, tak za pripadne chyby ma nezabite :D a keby to neslo tak je to aj popisane, tak ak sa budes drzat tych krokov v popise tak z toho nieco vyvod a mozes to doopravovat


Este sa k tomu vyjadrite, nech viem, ci som pomohol .... :?

Nahlásit jako SPAM
IP: ...–
Petr Drl0
Duch
30. 10. 2006   #8
-
0
-

Nemate uplnou pravdu, v Excelu je skoro plnohodnotny VB,samozrejme bez moznosti vytvareni spustitelneho kodu. Druha vec je, pouzivani a prevedeni pro excel tabulky. Al eje to jednodussi, nez pouzivat funce bunek excelu a nekdy i jedine mozne reseni. Navic, pokud si clovek v Excelu zvykne psat i texty, je to vhodnejsi nez ten pasquil Word.

Nahlásit jako SPAM
IP: ...–
Kdyby se bříza nestyděla, tak hoří i pod vodou
Jakub Lajmon0
Věrný člen
30. 10. 2006   #9
-
0
-

ja som sa pytal, ci to ma byt len pre VB alebo ako presne, len nikto nepisal, tak som skusil napisat funkciu , ktora by mohla tento problem vyriesit. ?:pc:?

Nahlásit jako SPAM
IP: ...–
Jakub Lajmon0
Věrný člen
30. 10. 2006   #10
-
0
-

JMM, co si ty myslíš o tom kódu?

Nahlásit jako SPAM
IP: ...–
Cece0
Duch
30. 10. 2006   #11
-
0
-

No jeste nevim jak to bude fungovat, chybi mi hlavni program nemuzu ho nijak dat dohromady furt to dela chyby. Zkus sem prihodit i ten hlavni prosim.

Nahlásit jako SPAM
IP: ...–
Jakub Lajmon0
Věrný člen
30. 10. 2006   #12
-
0
-

ja som tymto chcel iba navodit strukturu, takze neviem, ale ide tam iba o to, ze musis tam po vytvoreni matice nacitat hodnoty a vyde ti vysledok

Nahlásit jako SPAM
IP: ...–
31. 10. 2006   #13
-
0
-

Excel - vlo? na list p??kazov? tla??tka (4 kusy) a pak si otev?i editor VBA (ALT+F11) a do k?du listu, kde m?? ty tla??tka napi?:

Option Explicit
Option Base 1

Private Sub CommandButton1_Click()
'vytvo?? matici a vytiskne ji
Dim strana As Integer
Dim i As Integer
Dim j As Integer

strana = CInt(InputBox("Velikost matice???", "Nadpis"))

Cells(1, 1) = strana ' tady do bu?ky A1 ulo?? velikost strany matice
' aby p?i hled?n? minima a maxima nebylo nutn? hledat i tenhle ?daj

For i = 10 To strana + 9 'za?neme na des?t?m ??dku
For j = 1 To strana
Randomize
Cells(i, j) = Int(Rnd() * 100) + 1 ' 1 - 100
Next 'j
Next 'i

Cells.Select 'uprav? ???ku sloupce a vycentruje text v bu?ce na st?ed
Cells.EntireColumn.AutoFit
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
Range("A1").Select

CommandButton2.Enabled = True

End Sub

Private Sub CommandButton2_Click()
' vyp??e minima a maxima
Dim pocet As Integer
Dim strana As Integer
Dim i As Long
Dim j As Long
Dim k As Long
Dim pole() As Long

strana = Cells(1, 1)
pocet = CInt(InputBox("Po?et t?ch ?imp?k????", "po?et"))

ReDim pole(strana * strana)
Cells(1, 7) = pocet

k = 0
For i = 1 To strana
For j = 1 To strana
k = k + 1
pole(k) = Cells(i + 9, j)
Next 'j
Next 'i

'se?adit pole podle velikosti
'
For i = 1 To (strana * strana) - 1
For j = i + 1 To strana * strana
If pole(j) > pole(i) Then
k = pole(j): pole(j) = pole(i): pole(i) = k
End If
Next 'j
Next 'i

' vypsat hodnoty pole
For i = 1 To pocet
Cells(5, i) = pole(i) ' do ??dku 5 vyp??e prvn?ch 'pocet' nejv?t??ch prvk?
Next

j = 0
For i = strana * strana To 1 Step -1
j = j + 1
Cells(3, j) = pole(i) 'do ??dku 3 vyp??e 'pocet' prvk? odzadu
If j = pocet Then Exit For
Next

CommandButton3.Enabled = True
CommandButton4.Enabled = True

Range("A1").Select

End Sub


Private Sub CommandButton3_Click()
'vyma?e matici a nastav? barvu pozad? a p?sma
'
Rows("10:65536").Select
Selection.ClearContents
Selection.Interior.ColorIndex = xlNone
Selection.Font.ColorIndex = 0
Range("A1").Select
Selection.ClearContents
Range("G1").Select
Selection.ClearContents
Rows("3:3").Select
Selection.ClearContents
Selection.Interior.ColorIndex = xlNone
Selection.Font.ColorIndex = 0
Rows("5:5").Select
Selection.ClearContents
Selection.Interior.ColorIndex = xlNone
Selection.Font.ColorIndex = 0
Range("A1").Select

CommandButton1.Enabled = True
CommandButton2.Enabled = False
CommandButton3.Enabled = False
CommandButton4.Enabled = False

End Sub

Private Sub CommandButton4_Click()
' zv?razn? vyhledan? ??sla v matici
'

Dim i As Long
Dim j As Long
Dim k As Integer
Dim pocet As Long
Dim strana As Long
Dim cislo() As Long

pocet = Cells(1, 7)
strana = Cells(1, 1)

ReDim cislo(pocet)

For i = 1 To pocet
cislo(i) = Cells(3, i)
Next
For i = 10 To strana + 9
For j = 1 To strana
For k = 1 To pocet
If Cells(i, j) = cislo(k) Then
'zv?raznit
Cells(i, j).Select
Selection.Font.ColorIndex = 3
With Selection.Interior
.ColorIndex = 34
.Pattern = xlSolid
End With
Selection.Font.Bold = True
Exit For
End If
Next 'k
Next 'j
Next 'i

For i = 1 To pocet
cislo(i) = Cells(5, i)
Next
For i = 10 To strana + 9
For j = 1 To strana
For k = 1 To pocet
If Cells(i, j) = cislo(k) Then
'zv?raznit
Cells(i, j).Select
Selection.Font.ColorIndex = 5
With Selection.Interior
.ColorIndex = 36
.Pattern = xlSolid
End With
Selection.Font.Bold = True
Exit For
End If
Next 'k
Next 'j
Next 'i

End Sub


Mo?n? by to ?lo ud?lat jednodu?ejc, ale tohle mi funguje.

Nahlásit jako SPAM
IP: ...–
Cece0
Duch
4. 11. 2006   #14
-
0
-

Diky.

Nahlásit jako SPAM
IP: ...–
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, 9 hostů

Podobná vlákna

Nevim si rady — založil tom

Nevím si rady s WinAPI — založil radaplech

Python nevím si rady — založil Doktor

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ý