
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.
Také nechápu co má ten program dělat, zkus to lépe popsat/ukázat nějaký příklad.
Třeba je to práce na 5 minut a někdo hodný to vytvoří.
Ako je myslene to nasobenie 65-mi a v druhom priklade 3-mi?
To ma byt nasobene len to posledne cislo? A co tie ostatne? To 2, 3, 6, 5, 4 su cifry 5 ciferneho cisla alebo co? Asi nie, lebo nizsie pises o dvojcifernych cislach... Chaos...
A porovnavat chces co s cim, ked chces najst rovnaky vysledok... Coho? Medzi cim a cim?
Pocet cifier je premenlivy alebo staly? Hodnoty su vzdy tie iste, len v inom poradi, alebo ako???
Chapes, ze popis je naprosto nedostatocny a nezrozumitelny?
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.
Je to trosku chaoz, omlouvam se. Zatim by mi stacilo to co jsem ted psala. neco co mi vypocita priklad s kombinaci zadanych cisel.
Takže...
Pokud do programu zadáš například 3 čísla číslo A, B, C tak ti program má vyplivnout
A+B+C
A*B*C
A-B-C
A/B/C
Kdy čísel budeš volit N a zvolíš si operátor "+", "-", "/", "-" či všechny?
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.
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 dané?
Ne neni to dane, muze jich byt i deset ale i jen tri. Ale na tri bych nepotrebovala program.
uff, chcel som výpis permutácií cez excel ale nejde mi to, sorry
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
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 naprogramovat, ale to může být až za týden.
Pockam i dva.
Jsem vdecna za jakoukoli pomoc. Dekuji
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 zvládol, ale 8 čísiel už je mimo jeho rozsah.
Stačí Ti Katkaa aj takéto riešenie?
Urcite ano!!
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ť.
do stĺpca A vložiť pod seba čísla, ktoré chceš zamienať a potom spustiť makro (klávesovou skratkou ALT+F8 a Spustiť)
Vyzkousela jsem, je to super. Ale ma to chibicku. Kdyz zadam napr cisla 1,1,2,3 vyhodi mi to kombinace pouze z 1,2,3. Jakmile jsou cisla stejna excel je zhodnoti jen jako jedno.
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...