Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Stránky: 1
Ahoj,
chtěl jsem se zeptat jestli mi někdo neporadí jak V PASCALU mám generovat všechny variace operátorů +,-,*,/ tak aby neztratili svojí funkční hodnotu když je nemůžu do ničeho přiřadit.
Čili :
+ - * /
+ - / *
atd.
ale potřebuju aby potom jsem je mohl vložit mezi čísla a pořád to dělalo že 3 + 3 = 6
Zkoušel jsem to přes char, holý nesmysl, přes předávání ascii hodnoty, taky mi to nejde. Nejlepší by bylo kdybych je dostal do pole, ale jak je mám do pole načíst?
V C++ by šli asi použít na toto makra(možná?) ale PASCAL.
Díky za rady či postřehy
Offline
dejme tomu že budu mít tak 20 čísel potřeboval bych v tom případě udělat variaci těchto 4 operátorů na 19 a pak to rozházt mezi ty čísla a spočítat výsledky všech čísel, nevím jak bych to lépe popsal zajímá mě jestli jde nějak uložit v pascalu + do proměné aby pořád sčítalo, protože nevím jak mám vygenerovat všechny variace bez toho aby to bylo v poli
Offline
↑ r2d2:Bohužel toto nejde v žádném komplilovaném jazyku, co znám (PASCAL,C/C++,Java). Pro tento typ úloh je lepší např. PHP nebo Bash, možná Javascript. Musí to být v Pascalu? Pokud ne, jaké jazyky můžeš/umíš používat?
Offline
musí tak v tom případě se to msí dát vyřešit nějak jinak, abch se přiznal je to úkol do školy a se zadáním následujícím:
Na prvním řádku dostane program dvě čísla N a K. Na druhém řádku pak následuje N přirozených čísel.
Program by měl vygenerovat všechny posloupnosti operátorů takové, že když se jednotlivé operátory vloží mezi zadaná čísla, bude hodnota takto vytvořeného výrazu rovna číslu K.
Operátory jsou přípustné pouze tyto: '+', '-', '*' a '/' (celočíselné dělení).
Každý nalezený výraz by měl být na samostatném řádku.
Příklad:
Vstup:
5 5
1 8 2 5 4
Výstup:
1+8+2/5-4
1+8-2/5-4
1+8/2/5+4
1-8*2+5*4
1-8/2/5+4
1*8-2-5+4
1*8-2-5/4
1*8/2+5-4
1*8/2+5/4
1*8/2*5/4
ale žádný jiný postup mě nenapadl. cokdyby těch čísel bylo třeba 20, co pak?
Offline
Do jaké míry je v pascalu možné pracovat s bity?
Kdyby sis označil např.
'*' jako 00
'/' jako 01
'+' jako 10 a
'-' jako 11
A potřeboval bys např. kombinace 4 operátorů, stačilo by ti pak číst po dvojicích bity všech hodnot, které jsou možné uložit do bytu.
Asi existuje nějaký jednoduchý algoritmus pro nalezení variací, zkus google.
Offline
↑ r2d2:Když těch čísel bude 20, tak si na výsledek počkáš nějaký ten měsíc,rok :)
Kdybych to programoval, tak bych generoval všechny N-1-prvkové variace čísel od 1 do 4 (odpovídají operátorům +,-,*,/) a pro každou z těchto variací zkusil vyhodnotit daný výraz. Generování variací je snadné, vyhodnocování výrazu bych dělal pomocí pomocného pole souciny.
Když chci vyhodnotit např. 3+4*5-9/5*4 tak: první číslo uložím do souciny[1]. Následující operace je +, založím proto nový součin. Do něj uložím následující číslo, tedy souciny[2]:=4. Další operace je *, proto souciny[2] vynásobím 5. Další operace je -, do souciny[3] uložím -9. Následně -9 celočíselně vydělím 5 a vynásobím 4. Nakonec všechny hodnoty v poli souciny posčítám.
Offline
Stránky: 1