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.
Fórum › Visual Basic
Nevím si rady s tímto programem...
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 :)
http://jakub.lajmon.name
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
OLE s Excelom som este nepouzival (a ani to neplanujem), ale skusim nieco vymysliet, ale dajte cas ok?
http://jakub.lajmon.name
este mi napis, ci maju byt rozmery a prvky matice vygenerovane nahodne, alebo na vstupe. ale to je detail, uz na tom pracujem :ok:
http://jakub.lajmon.name
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 .... :?
http://jakub.lajmon.name
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.
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:?
http://jakub.lajmon.name
JMM, co si ty myslíš o tom kódu?
http://jakub.lajmon.name
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
http://jakub.lajmon.name
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.
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
Nevim si rady — založil tom
Nevím si rady s WinAPI — založil radaplech
Python nevím si rady — založil Doktor
C# Quicksort - nevím si rady — založil cagy
No to je bezva,zase si nevim rady. — založil Felen
Moderátoři diskuze