Permalänk

ändra rälnesättet Java

hej har ett problem som jag behöver ha till mitt program.

Java!!!!

ni vet ju matte

där rälnar man ju 1+1+1+1+1+1 osv......
men om man räknar så kommer det ju bli:
1
10
100

så alltså efter nio kommer tio och blir det 10 alltså från 1 nummer till 2 nummer.

nu beöver jag så att den ska räkna till 36 sen byta nr..... så alltså står det som t.ex. följande
34
35
36
10 //efter 36 blir det en 1 och den börjar räkna från 0 igen till 36
11
12
13
14
15
16
17
18
19
110
111

fattar ni? så 200 kommer efter 136.
man kan alltså dela upp det också
typ:

34
35
36

"1" "0"
"1" "1"
snälla hoppas ni förstår......

OBS! har ej någon kod att vissa då detta är tankar bara som jag tänker mig i ett program och stötte på detta problem som måste lössas.

Permalänk
Festpilot 2020, Antiallo
Skrivet av erikpetersen97:

hej har ett problem som jag behöver ha till mitt program.

Java!!!!

ni vet ju matte

där rälnar man ju 1+1+1+1+1+1 osv......
men om man räknar så kommer det ju bli:
1
10
100

så alltså efter nio kommer tio och blir det 10 alltså från 1 nummer till 2 nummer.

nu beöver jag så att den ska räkna till 36 sen byta nr..... så alltså står det som t.ex. följande
34
35
36
10 //efter 36 blir det en 1 och den börjar räkna från 0 igen till 36
11
12
13
14
15
16
17
18
19
110
111

fattar ni? så 200 kommer efter 136.
man kan alltså dela upp det också
typ:

34
35
36

"1" "0"
"1" "1"
snälla hoppas ni förstår......

OBS! har ej någon kod att vissa då detta är tankar bara som jag tänker mig i ett program och stötte på detta problem som måste lössas.

Dold text

Detta är ett jättegrundläggande problem, smidigast är att lösa det med en if sats som kollar om resten blir 0 när man delar på 36 på räknaren, sedan skriver man ut
system.out.print(a + raknade)
a innehåller alla gånger du har räknat upp till 36 i 100tal och raknade innehåller din räknare som går upp till 36.

Annars skulle du kunna räkna med en talbas på 36 och representera endast den koverterade decimala representationen på räknare och talbas 36 på den som visar hur många gånger du nått 36 (a).

Visa signatur

 | PM:a Moderatorerna | Kontaktformuläret | Geeks Discord |
Testpilot, Skribent, Moderator & Geeks Gaming Huvudadmin

Permalänk
Hedersmedlem

Det låter som att du vill räkna med talbas 36. Notera att det finns en exempel-Javaimplementation på Wikipediasidan.

Eftersom du inte säger vad det faktiskt är tänkt att användas till så sätter jag en varningsflagg för att tråden är ute och seglar i hårda XY-problemvindar. Jag citerar mig själv för lite referenser :

Visa signatur

Nu med kortare användarnamn, men fortfarande bedövande långa inlägg.

Permalänk
Skrivet av DavidtheDoom:

Detta är ett jättegrundläggande problem, smidigast är att lösa det med en if sats som kollar om resten blir 0 när man delar på 36 på räknaren, sedan skriver man ut
system.out.print(a + raknade)
a innehåller alla gånger du har räknat upp till 36 i 100tal och raknade innehåller din räknare som går upp till 36.

Annars skulle du kunna räkna med en talbas på 36 och representera endast den koverterade decimala representationen på räknare och talbas 36 på den som visar hur många gånger du nått 36 (a).

ahh men sen ska (a) isåfall också bara bli 36 sen bli ytterliggare en siffra som börjar på 1 och så ska den fortsätta räkna tills den kommer upp i 10^37

Permalänk
Festpilot 2020, Antiallo
Skrivet av erikpetersen97:

ahh men sen ska (a) isåfall också bara bli 36 sen bli ytterliggare en siffra som börjar på 1 och så ska den fortsätta räkna tills den kommer upp i 10^37

Bara att använda nästlade if-satser, eller varför inte skicka både a och raknade till en underfunktion(klass) med funktionaliteten.

Låter dock som att detta är en talbas-36 räkning, så använd det? Bortse från föregående exempel jag har skrivit då du har kommit med mer relevant fråga. Säger precis som phz ovan, lite XY-problem är. Försök förklara vad exakt som skall göras för dig själv. Formulera sedan en problemförklaring och be sedan om hjälp efter du själv letat.

Nu finns implementationsexempel på Wikipedia sidan som sagt. Kika där.

Dock förstår jag inte vad du menar med 10^37. Du menar inte möjligen 36^10?

Eller menar du att du ska räkna i talbas 37? 36+0 = 37 siffror? Eller ska 36 bli 10? Du måste nog jobba lite på tankeställningen och framförandet av problemet.

Visa signatur

 | PM:a Moderatorerna | Kontaktformuläret | Geeks Discord |
Testpilot, Skribent, Moderator & Geeks Gaming Huvudadmin

Permalänk
Skrivet av DavidtheDoom:

Bara att använda nästlade if-satser, eller varför inte skicka både a och raknade till en underfunktion(klass) med funktionaliteten.

Låter dock som att detta är en talbas-36 räkning, så använd det? Bortse från föregående exempel jag har skrivit då du har kommit med mer relevant fråga. Säger precis som phz ovan, lite XY-problem är. Försök förklara vad exakt som skall göras för dig själv. Formulera sedan en problemförklaring och be sedan om hjälp efter du själv letat.

Nu finns implementationsexempel på Wikipedia sidan som sagt. Kika där.

Dock förstår jag inte vad du menar med 10^37. Du menar inte möjligen 36^10?

Eller menar du att du ska räkna i talbas 37? 36+0 = 37 siffror? Eller ska 36 bli 10? Du måste nog jobba lite på tankeställningen och framförandet av problemet.

jag har kollat lite och ett java program som ska räkna till 1*10^37 med en talbas på 36 så tar det 100år även om jag använder mig av flera miljoner program som sammarbetar..... tackar för all hjälp men just nu e jag nog på för konstig uppgift......

Ps. 10^37 == 1000000000000000000000000000000000000

Permalänk
Festpilot 2020, Antiallo
Skrivet av erikpetersen97:

jag har kollat lite och ett java program som ska räkna till 1*10^37 med en talbas på 36 så tar det 100år även om jag använder mig av flera miljoner program som sammarbetar..... tackar för all hjälp men just nu e jag nog på för konstig uppgift......

Ja varför använda dig av flera miljoner program? Du kan ju skriva allt i en klass. Dock tar räknandet tid såklart. Framförallt då JAVA skall realtidskompileras. C++ hade varit effektivare.

Dock är problemet inga konstigheter, går ganska lätta att skriva programmet på ett par tiotal rader kod bara.

Visa signatur

 | PM:a Moderatorerna | Kontaktformuläret | Geeks Discord |
Testpilot, Skribent, Moderator & Geeks Gaming Huvudadmin

Permalänk
Medlem

Värdet på talet blir ju samma oberoende på hur du representerar det. För representation kan du använda bokstäver, likt man gör för hexadecimala tal:
bas 36 <-> dec
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
a 10
b 11
c 12
d 13
e 14
f 15
g 16
h 17
i 18
j 19
k 20
l 21
m 22
n 23
o 24
p 25
q 26
r 27
s 28
t 29
u 30
v 31
x 32
y 33
z 34
å 35
10 36
11 37
etc

Så har du ex talet 10000 decimalt, blir det:
7*36^2 + 25*36^1 + 28*36^0
= 700 + p0 + s = 7ps
enligt ovanstående

Visa signatur

Redbox: Asrock B650 Lightning ATX, 7800x3D -20CCO, XFX 6950XT, 2x32GB Corsair Vengence 6400 CL32, WD SN770 2TB, Corsair RMe 1000, Lian Li Lancool 216, Peerless Assassin 120 SE
Purpbox: Z87-Pro, I5 4670K@4.2, Sapphire 290 TRI-X, 2x8GB Crucial Tactical@stock, Deep Silence 1
Samsung Evo 250+500GB + QVO 1TB, 2x1TB 7200RPM backup/lagring
Det var bättre förr: E5300 2600MHz -> 3640MHz, Celeron 300A -> 450MHz

Permalänk
Medlem

Det är lite oklart om du är ute efter att räkna upp något eller om det bara är själva konverteringen du är ute efter.
Att räkna upp från 0 till 10^37 tar ju ett tag men att räkna ut vad 10^37 blir i bas36 går ju på nolltid med modular exponentiation som används supermycket inom kryptografi.

Att programmera ihop något där man kan testa sig fram är inte särskilt svårt. Här under har jag gjort det i Haskell och det kan du ganska lätt skriva om i Java om du verkligen är intresserad av att lösa problemet.

newtype B36 = B36 (Int, Int) reprB36 :: B36 -> Int reprB36 (B36 (x, y)) | y < 10 = x * 10 + y | otherwise = x * 100 + y b36ToDec :: B36 -> Int b36ToDec (B36 (x, y)) = x * 36 + y decToB36 :: Int -> B36 decToB36 x = B36 (divMod x 36) nextB36 :: B36 -> B36 nextB36 (B36 (x, y)) | y < 36 = B36 (x, y + 1) | y == 36 = B36 (x + 1, 0) | otherwise = error "Invalid number!" doubleConv = b36ToDec . decToB36 doubleConvNext = b36ToDec . nextB36 . decToB36 testConv = all (\x -> doubleConv x == x) [0..100] testNext = all (\x -> doubleConv x + 1 == doubleConvNext x) [0..100] main = print $ testConv && testNext

Visa signatur

I'm Winston Wolfe. I solve problems.

Permalänk

jag tackar för alla svar och kunnat lösa mitt problem nu.