Kezdőoldal » Számítástechnika » Programozás » Mit a baj a kóddal? (c#)

Mit a baj a kóddal? (c#)

Figyelt kérdés

A forráskód célja az lenne, hogy a textbox karaktereit külön megvizsgálja, hogy egy-e az értéke és ha igen akkor hatványozza 2 az i-edikenre. Először ezt a kódot írtam:


hossz=textBox1.Text.Length;

for (int i = 0; i <hossz; i++)

{

if (textBox1.Text[i] == '1')

{


resz = System.Math.Pow(2, i);

szam = szam + Convert.ToInt32(resz);

}

else if (textBox1.Text[i] == '0')

{

szam = szam;

}

}

label1.Text = Convert.ToString(szam);


De ez nem volt jó mert a kiírt eredmény nem lett jó. Illetve helyes csak fordítva számolt. A program lényege az lenne h bináris számokat váltson át decimálisba. A 100 al próbálkoztam ami binárisan 1100100 és ezt váltotta át 19 re, ami végül is helyes csak pont fordítva.(1100100=100 és 0010011=19) Szóval fordítva olvassa be az adatokat mint ahogy kéne. :) Emiatt kicsit átalakítottam a for ciklust így:


hossz=textBox1.Text.Length;

for (int i = hossz - 1; i >= 0; i--)

{

if (textBox1.Text[i] == '1')

{


resz = System.Math.Pow(2, i);

szam = szam + Convert.ToInt32(resz);

}

else if (textBox1.Text[i] == '0')

{

szam = szam;

}

}

label1.Text = Convert.ToString(szam);


De így is ugyan az a baj. :/ A bináris értéket jobbról balra kéne beolvasnia valamilyen úton-módon és nem balról jobbra. De nem jövök rá hogy kellene ezt megoldani. Ha tudtok akkor légy szíves segítsetek. Remélem érthetően vázoltam fel a problémát. :) Köszi előre.


2011. jún. 19. 19:02
 1/8 anonim ***** válasza:

szam = szam; <-- na ennek megmondod-e mi az értelme? :)

egy változó legyen egyenlő önmagával???

2011. jún. 19. 19:17
Hasznos számodra ez a válasz?
 2/8 A kérdező kommentje:
tudom hogy annak nincs értelme ne azon akadj fent nem szól bele a kimenetelbe az a lényeg xD a problémát oldjuk már meg valahogy mert agyamra megy hogy ilyen idióta vok hogy nem tom megoldani xD
2011. jún. 19. 19:18
 3/8 anonim ***** válasza:

Azért nem lett jó amúgy, mert ugyan megfordítottad a beolvasást, de a hatványozást is. Magyarán nem változtattál semmit.

Hatványozásnál az eredeti ciklus plusz:

resz = System.Math.Pow(2, hossz - i);

2011. jún. 19. 19:20
Hasznos számodra ez a válasz?
 4/8 A kérdező kommentje:

Most pedig ezzela kóddal:


hossz=textBox1.Text.Length;

for (int i = hossz - 1; i >= 0; i--)

{

if (textBox1.Text[i] == '1')

{


resz = System.Math.Pow(2, hossz - i);

szam = szam + Convert.ToInt32(resz);

}

else if (textBox1.Text[i] == '0')

{

szam = szam;

}

}

label1.Text = Convert.ToString(szam);


1100100 ra a 200 at adja ki :/ a 100 helyett

2011. jún. 19. 19:25
 5/8 anonim ***** válasza:
Akkor hossz - i helyett, hossz - i - 1 .. nem teszteltem le a kódod. De ezek alap dolgok, csak kell hozzá logika hogy átlásd. Jó tanulást.
2011. jún. 19. 19:28
Hasznos számodra ez a válasz?
 6/8 anonim ***** válasza:

Kezdetben:

int i = hossz - 1


Első számnak 0-nak kell lennie, tehát:

hossz - i - 1


Mert:

hossz - (hossz - 1) - 1


hossz - hossz + 1 - 1 = 0 lesz.

2011. jún. 19. 19:31
Hasznos számodra ez a válasz?
 7/8 A kérdező kommentje:
Köszönöm így működött :) És remélem sokat fejlődök még :)
2011. jún. 19. 19:32
 8/8 anonim ***** válasza:

ha nem az a cél, hogy gyakorold a kettes számrendszerből való átváltást, akkor sokkal egyszerűbb, ha így csinálod:

int szam = Convert.ToInt32(textBox1.Text, 2);

2011. jún. 19. 20:58
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!

Adataid védelme fontos számunkra!

Mint a weboldalak többsége az interneten, honlapunk működéséhez és célzott hirdetések megjelenítéséhez mi és hirdetési partnereink is cookie-kat tárolunk az általad használt eszközön. Ahhoz, hogy ezt megtehessük, a hozzájárulásod szükséges. Erről az adatvédelmi tájékoztatónkban részletes információkhoz juthatsz, illetve bizonyos cookie-k használatával kapcsolatban további lehetőségeid vannak.