Mit a baj a kóddal? (c#)
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.
szam = szam; <-- na ennek megmondod-e mi az értelme? :)
egy változó legyen egyenlő önmagával???
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);
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
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.
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);
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!