Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Program na vypocet matematickych uloh ze srovnanim vysledku

Krasny den preji vsem.
Predem dekuji za jakoukoli radu.
Potrebuji prosim pomoct s jednim programkem. Nebo spise zdali takovy vlastne je. Mam ruzne dva priklady ktere je potreba vypocitat a najit stejny vysledek. Prvni pozice cisel se ale vzdy meni. Priklad: kombinace cisel 2 3 6 5 4 *65 2,3,6,5,4 jsou cisla kterym by mel program menit pozice. Ale i cisla treba po dvou tedy pr. 45 54 76 67 *3 Snad se vyjdruji zpravne.
Budu moc rada za kazdou radu.

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Dobre trosku to priblizim. Mam priklad. Treba 33 99 63 56 *98/6 Podotikam ze se nesmi zmenit hodnota…
Katkaa 15.08.2015 14:38
Katkaa
Takže... Pokud do programu zadáš například 3 čísla číslo A, B, C tak ti program má vyplivnout A+B+C…
MašinkaTomáš 15.08.2015 14:43
MašinkaTomáš
Chci zadat treba cislo abc *n/m a ono mi to vypocita vysledky vsech moznych variaci. Tedy abc*n/m ac…
Katkaa 15.08.2015 14:54
Katkaa
Akurát, že si ešte nenapísala, koľko tých dvojčísel má byť, lebo píšeš o 6, potom o 10... Nie je to…
robert13 15.08.2015 15:08
robert13
Ne neni to dane, muze jich byt i deset ale i jen tri. Ale na tri bych nepotrebovala program. :-)
Katkaa 15.08.2015 15:19
Katkaa
uff, chcel som výpis permutácií cez excel ale nejde mi to, sorry
robert13 15.08.2015 16:03
robert13
pre robert13: skús toto (zdroj: http://www.mrexcel.com/forum/excel-questions/46997 9-permutation-exc… nový
mzmz 18.08.2015 09:10
mzmz
Takovej program neznám, excel by to měl umět, ale ten neumím zas já, až budu mít čas, zkusím ti něco…
MašinkaTomáš 16.08.2015 11:03
MašinkaTomáš
Pockam i dva. :-) Jsem vdecna za jakoukoli pomoc. Dekuji nový
Katkaa 17.08.2015 08:41
Katkaa
Skúšal som ten VBA kód, ktorý som sem už skôr vložil v Exceli 2010. Permutáciu 7 čísiel excel ešte z… nový
mzmz 20.08.2015 08:48
mzmz
Urcite ano!! nový
Katkaa 20.08.2015 14:32
Katkaa
vložiť VBA kód do Excelu: klávesová zkratka Alt+F11 --> v menu VBA: Insert --> Module --> do prázdné… nový
mzmz 20.08.2015 14:55
mzmz
Priklad: pre hodnoty aa, bb, cc urobí tento kód toto: aa bb cc aa bb aa cc bb aa bb cc cc aa cc bb… nový
mzmz 20.08.2015 15:04
mzmz
do stĺpca A vložiť pod seba čísla, ktoré chceš zamienať a potom spustiť makro (klávesovou skratkou A… nový
mzmz 20.08.2015 14:57
mzmz
Vyzkousela jsem, je to super. Ale ma to chibicku. Kdyz zadam napr cisla 1,1,2,3 vyhodi mi to kombina… nový
Katkaa 23.08.2015 08:15
Katkaa
mzmz díky, prelúskam si to dodatočne, to volanie s viacerými argumentami a ich využitie je pre mňa z… poslední
robert13 23.08.2015 09:26
robert13

Dobre trosku to priblizim. Mam priklad. Treba 33 99 63 56 *98/6 Podotikam ze se nesmi zmenit hodnota dvojcisla jen umisteni. tedy 33996456*98/6 nebo 33995664*98/9 atd
Jde o to ze tech kombinaci pri sesti dvojcisel je 720 a treba deseti cisel nespocetne,a vse pocitat rucne bych delala vecnost. Chci jen jednoduchy program do ktereho zadam moznou kombinaci cisel matematicky ukon a vyjedou mi vsechny vysledky. Snad uz jsem trochu priblizila.

Chci zadat treba cislo abc *n/m a ono mi to vypocita vysledky vsech moznych variaci. Tedy abc*n/m acb*n/m cba*n/m cab*n/m bca*n/m bac*n/m
Cisla ktera jsem uvedla jsou jen priklad. Jedin co musi jit ze variace cisel jsou po dvou. Tedy napr, a=52 b= 65 c=56 tedy 526556*n/m atd
Jak jinak vysvetlit uz nevim. :-(

pre robert13: skús toto (zdroj: http://www.mrexcel.com/forum/excel-questions/46997 9-permutation-excel.html):

Sub Perm()
Dim rSets As Range, rOut As Range
Dim vArr As Variant, lrow As Long

Set rSets = Range("A1").CurrentRegion
ReDim vArr(1 To rSets.Columns.Count)
Set rOut = Cells(1, rSets.Columns.Count + 2)
Perm1 rSets, vArr, rOut, 1, lrow
End Sub

Sub Perm1(rSets As Range, ByVal vArr As Variant, rOut As Range, ByVal lSetN As Long, lrow As Long)
Dim j As Long

For j = 1 To rSets.Rows.Count
If rSets(j, lSetN) = "" Then Exit Sub
vArr(lSetN) = rSets(j, lSetN)
If lSetN = rSets.Columns.Count Then
lrow = lrow + 1
rOut(lrow).Resize(1, rSets.Columns.Count).Value = vArr
Else
Perm1 rSets, vArr, rOut, lSetN + 1, lrow
End If
Next j
End Sub

vložiť VBA kód do Excelu:
klávesová zkratka Alt+F11 --> v menu VBA: Insert --> Module --> do prázdného okna vpravo kopírujte nasledujúci kód:

Option Explicit

' PGC Jan 2014
' Calculates all possible permutations without repetition of a set
' Set in A1, down. Result in C1, down and accross. Clears C:Z.
Sub PermutationsWRAll()
Dim vElements As Variant, vresult As Variant
Dim lRow As Long, i As Long

vElements = Application.Transpose(Range("A1", Range("A1").End(xlDown)))
Columns("C:Z").Clear

lRow = 1
For i = 1 To UBound(vElements)
ReDim vresult(1 To i)
Call PermutationsWR(vElements, i, vresult, lRow, 1, 1)
Next i
End Sub

Sub PermutationsWR(vElements As Variant, p As Long, vresult As Variant, lRow As Long, iElement As Integer, iIndex As Integer)
Dim i As Long, j As Long
Dim b As Boolean

For i = 1 To UBound(vElements)
b = True
For j = 1 To iIndex - 1
If vresult(j) = vElements(i) Then
b = False
Exit For
End If
Next j
If b Then
vresult(iIndex) = vElements(i)
If iIndex = p Then
lRow = lRow + 1
Range("C" & lRow).Resize(, p) = vresult
Else
Call PermutationsWR(vElements, p, vresult, lRow, i + 1, iIndex + 1)
End If
End If
Next i
End Sub

Priklad: pre hodnoty aa, bb, cc urobí tento kód toto:

aa
bb
cc
aa bb
aa cc
bb aa
bb cc
cc aa
cc bb
aa bb cc
aa cc bb
bb aa cc
bb cc aa
cc aa bb
cc bb aa

Takže bude potrebné najprv vymazať tie riadky, ktoré neobsahujú kompletne všetky hodnoty. Potom v ďalšom stĺpci môžeš hodnoty spojiť funkciou =CONCATENATE(C11;D11;E11) - kde C11, D11, E11 sú bunky, ktoré chceš spojiť.

mzmz díky, prelúskam si to dodatočne, to volanie s viacerými argumentami a ich využitie je pre mňa zatiaľ neznámou...

Katkaa, keďže neviem upraviť priložené makro, použil by som trik:

namiesto niektorého z opakujúcich sa čísel by som použil iné, napr namiesto 1,1,2,3 by som jednu z jedničiek nahradil napr 9, takže by sa vyrobili variácie vytvorené z číslic 1,9,2,3.
Potom by som označil všetky naplnené stĺpce a dal nahradiť 9-u 1-ou. Musíš si však uvedomiť, že Ti tam vzniknú duplicity ALE excel duplicity odstrániť VIE. Takže najprv z vytvorených variácií, kde už máš nahradené všetky 9-y 1-ami vyhodíš všetky neúplné, do nového stĺpca dáš funkciu concatenate a odstrániš duplicity v stĺpci funkcie concatenate. Potom aplikuješ funkciu, ktorej výsledok potrebuješ zistiť, aby si porovnala s výsledkami iného rozpisu.

Ak budeš mať viac opakujúcich sa čísel (číslic), je treba ich zas na začiatku rozlíšiť, teda napr namiesto 1,1,2,3,1 nahraď trebárs za: 1x,1y,2,3,1z
potom v rozpisoch nahradíš všetky 1x za 1, 1y za 1 a 1z za 1 a podobne pri iných opakujúcich sa vstupných hodnotách...

Zpět do poradny Odpovědět na původní otázku Nahoru