Írjunk függvényt, amely két 6 jegyű oktális számot ad össze. A két összeadandó számot ellenőrizze és az összeadásnál jelezze a túlcsordulást, ebben az esetben az eredmény hétjegyű lesz.
A feladat megoldása:
static string oct_read(string oct, out int hiba1,
out int hiba2)
{
int i, h, k;
hiba1 = hiba2 = 0;
h = oct.Length;
if (h == 6)
{
for (i = 0; i < h; i++)
{
k = oct[i] - '0';
if (k > 7)
{
hiba1 = i + 1;
return oct;
}
}
}
else if (h < 6 || h > 6)
{
hiba2 = h;
}
return oct;
}
static int oct_add(string s1, string s2, ref int[] eredm)
{
int carry = 0;
int i, ered;
for (i = 5; i >= 0; i--)
{
ered = carry + (s1[i] - '0') + (s2[i] - '0');
if (ered > 7) carry = 1; else carry = 0;
eredm[i] = ered & 7;
}
return carry;
}
private void button1_Click(object sender, EventArgs e)
{
string okt1="", okt2="", okt1j="", okt2j="";
int i = 1, v;
int hiba1 = 0, hiba2 = 0;
int[] összeg = new int[7] { 0, 0, 0, 0, 0, 0, 0 };
if (textBox1.Text != "" && textBox2.Text != "")
{
okt1 = textBox1.Text;
okt1j = oct_read(okt1, out hiba1, out hiba2);
if (hiba1 != 0)
MessageBox.Show("adat: " + okt1.ToString() + "\n"
+ hiba1.ToString() + ". digit hibás! ",
"Hibajelzés");
if (hiba2 != 0)
MessageBox.Show("adat: " + okt1.ToString() + "\n"
+ "A szám hatjegyű lehet: ez " +
hiba2.ToString(), "Hibajelzés");
if (hiba1 != 0 || hiba2 != 0)
{
textBox1.Text = ""; textBox3.Text = "";
okt1j = "";
}
else
{ textBox1.Text = okt1j; }
okt2 = textBox2.Text;
okt2j = oct_read(okt2, out hiba1, out hiba2);
if (hiba1 != 0)
MessageBox.Show("adat: " + okt2.ToString() + "\n"
+ hiba1.ToString() + ". digit hibás! ",
"Hibajelzés");
if (hiba2 != 0)
MessageBox.Show("adat: " + okt2.ToString() + "\n"
+ "A szám hatjegyű lehet: ez " +
hiba2.ToString(), "Hibajelzés");
if (hiba1 != 0 || hiba2 != 0)
{
textBox2.Text = ""; textBox3.Text = "";
okt2j = "";
}
else
{ textBox2.Text = okt2j; }
}
textBox3.Text = "";
if (okt1j != "" && okt2j != "")
{
v = oct_add(okt1j, okt2j, ref összeg);
if (v == 1)
{
label4.Text = "Túlcsordult: az eredmény 7 jegyű";
textBox3.Text += '1';
for (i = 0; i <= 5; i++)
textBox3.Text += összeg[i].ToString();
}
else
{
label4.Text = "Az eredmény 6 jegyű";
for (i = 0; i <= 5; i++)
textBox3.Text += összeg[i].ToString();
}
}
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
textBox3.Text = ""; label4.Text = "";
}
private void textBox2_TextChanged(object sender, EventArgs e)
{
textBox3.Text = ""; label4.Text = "";
}
A program futási eredményei: