How do i create a header file in c promgramming code for classic multiplication
ID: 3856875 • Letter: H
Question
How do i create a header file in c promgramming code for classic multiplication algorithm? Please help with a code.
1.1. Classical multiplication algorithm: In positional numeral systems, the natural way of multiplying numbers, known as the classical multiplication algorithm, is by multiplying each digit of the multiplicand by each digit of the multiplier and then adding up all the properly shifted results. This method requires a multiplication table for single digits available to the algorithm. Knuth's classical multiplication algorithm [2] can be stated as shown in Algorithm 1. Algorithm 1 Input: positive integers A-(an,. .-4), having n + 1 base r digits and B-(4-···.4), having m + 1 base r digits. Output: the product A-B-(4"nel, . . . ,G), in base r Note: (uv), are two single-precision digits in base r, indicating the result of the addition (1) For 1 from 0 up to m + ,, + 1 do: G 0. (2) For i from 0 up tom do the following: (21) carry 0 (2.2) For j from 0 up to n do the following: (2.2.1) Compute (uv), = G+jt aj . 4 + carry, set G+,- , and carry u. // u and v are Il single-precision IIl digits in baserExplanation / Answer
<span lang="EN"><span lang="EN"><span lang="EN">
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
namespace From_one_to_another_positional_number_system
{
public partial class MainForm : Form
{
int EnteredNumberBaseMax = 0;
int EnteredNumberBaseMin = 0;
int EnteredNumberBase = 0;
bool EntryIsNumber = false;
const int ConvertToNumberBaseMax = 16;
const int ConvertToNumberBaseMin = 2;
int ConvertToNumberBase = 2;
string [] DecimalFloat = new string [2];
string DecimalPart = "";
string FloatPart = "";
bool IsFloat = false;
string NumberDecimalSeparator = "";
string NumberGroupSeparator = "";
string NumberDecimalDigits = "";
const double exmpl = 1234567890.12345;
bool Change = false;
public MainForm()
{
NumberDecimalSeparator = Application.CurrentCulture.NumberFormat.NumberDecimalSeparator;
NumberGroupSeparator = Application.CurrentCulture.NumberFormat.NumberGroupSeparator;
NumberDecimalDigits = Application.CurrentCulture.NumberFormat.NumberDecimalDigits.ToString();
MessageBox.Show( "Number to convert can be entered " +
"in default or intern number format. " +
"In any way, output shall be in intern number format. " +
"Current culture number format : " +
" " + exmpl.ToString("N") + " " +
"Number decimal separator : " + NumberDecimalSeparator + " " +
"Number group separator : " + NumberGroupSeparator + " " +
"Number of decimal digits : " + NumberDecimalDigits + " " +
"Intern number format : " +
" " + exmpl.ToString() + " " +
"Number decimal separator : " + NumberDecimalSeparator.ToString() + " " +
"Number group separator : none " +
"Number of decimal digits : 0 - 254" ,
" Number Format Information ",
MessageBoxButtons.OK,
MessageBoxIcon.Information );
}
void TextBox1Enter(object sender, EventArgs e)
{
textBox1.Text = "";
textBox1.Refresh();
}
void TextBox1MouseEnter(object sender, EventArgs e)
{
toolTip1.SetToolTip( textBox1,
" Up to 15 digits ! " +
" Program won't convert number with " +
" scientific number format ."
);
toolTip1.ToolTipTitle = "Information";
toolTip1.ToolTipIcon = ToolTipIcon.Info;
toolTip1.Active = true;
}
void TextBox1KeyPress(object sender, KeyPressEventArgs e)
{
if ( e.KeyChar == (char) Keys.Return )
{
label8.Focus();
}
}
void TextBox1Leave(object sender, EventArgs e)
{
string Text = "";
string Letter = "";
string CipherDigits = "1234567890ABCDEF" + NumberDecimalSeparator;
int TextLenght = 0;
int LetterCounter = 0;
int CommaCounter = 0;
EnteredNumberBaseMax = 0;
EnteredNumberBaseMin = 2;
if ( textBox1.Text == "" )
{
textBox1.Text = "2011" + NumberDecimalSeparator + "2013";
}
textBox1.Text = textBox1.Text.ToUpper();
textBox1.Text = textBox1.Text.Replace( " " , "" );
textBox1.Text = textBox1.Text.Replace( NumberGroupSeparator , "");
ClearZeroFromNumber();
textBox1.Refresh();
Text = textBox1.Text;
TextLenght = Text.Length;
while ( LetterCounter < TextLenght )
{
Letter = Text.Substring( LetterCounter, 1 );
if ( CipherDigits.Contains( Letter ) )
{
EntryIsNumber = true;
switch ( Letter )
{
case "0" : if ( EnteredNumberBaseMax < 2 )
{
EnteredNumberBaseMax = 2;
}
break;
case "1" : if ( EnteredNumberBaseMax < 2 )
{
EnteredNumberBaseMax = 2;
}
break;
}
LetterCounter = LetterCounter + 1;
}
else
{
EntryIsNumber = false;
LetterCounter = TextLenght;
}
}
if ( CommaCounter > 1 | EnteredNumberBaseMax == 0 | EntryIsNumber == false )
{
WriteErrorMessage();
}
else
{
switch ( EnteredNumberBaseMax )
{
case 2 :
{
WriteMessage();
ConvertToDecimal();
}
break;
case 3 :
{
WriteMessage();
ConvertToDecimal();
}
break;
case 4 :
{
WriteMessage();
ConvertToDecimal();
}
break;
case 5 :
{
WriteMessage();
ConvertToDecimal();
}
break;
case 6 :
{
WriteMessage();
ConvertToDecimal();
}
break;
case 7 :
{
WriteMessage();
ConvertToDecimal();
}
break;
case 8 :
{
WriteMessage();
ConvertToDecimal();
}
break;
case 9 :
{
WriteMessage();
ConvertToDecimal();
}
break;
case 10 :
{
WriteMessage();
ConvertToDecimal();
}
break;
case 11 :
{
WriteMessage();
ConvertToDecimal();
}
break;
case 12 :
{
WriteMessage();
ConvertToDecimal();
}
break;
case 13 :
{
WriteMessage();
ConvertToDecimal();
}
break;
}
}
}
void ClearZeroFromNumber()
{
IsFloat = false;
if ( textBox1.Text.Contains( NumberDecimalSeparator ) )
{
IsFloat = true;
DecimalFloat = textBox1.Text.Split( NumberDecimalSeparator[0] );
DecimalPart = DecimalFloat[0];
FloatPart = DecimalFloat[1];
DecimalPart = DecimalPart.TrimStart( '0' );
if ( DecimalPart == "" )
{
DecimalPart = "0";
}
FloatPart = FloatPart.TrimEnd( '0' );
if ( FloatPart == "" )
{
FloatPart = "0";
}
if ( DecimalPart == "0" & FloatPart == "0" )
{
textBox1.Text = "0";
IsFloat = false;
}
if ( DecimalPart != "0" & FloatPart == "0" )
{
textBox1.Text = DecimalPart;
IsFloat = false;
}
if ( DecimalPart == "0" & FloatPart != "0" )
{
textBox1.Text = DecimalPart + NumberDecimalSeparator + FloatPart;
IsFloat =true;
}
if ( DecimalPart != "0" & FloatPart != "0" )
{
textBox1.Text = DecimalPart + NumberDecimalSeparator + FloatPart;
IsFloat = true;
}
}
else
{
IsFloat = false;
textBox1.Text = textBox1.Text.TrimStart( '0' );
if ( textBox1.Text == "" )
{
textBox1.Text = "0";
}
}
textBox1.Refresh();
}
void Button1Click(object sender, EventArgs e)
{
if ( EntryIsNumber == true )
{
if ( EnteredNumberBase < EnteredNumberBaseMax )
{
Change = true;
EnteredNumberBase = EnteredNumberBase + 1;
label6.Text = "( " + EnteredNumberBase.ToString() + " )";
ConvertToDecimal();
if ( Change == false )
{
EnteredNumberBase = EnteredNumberBase - 1;
label6.Text = "( " + EnteredNumberBase.ToString() + " )";
WriteE1Message();
}
}
}
}
void Button2Click(object sender, EventArgs e)
{
if ( EntryIsNumber == true )
{
if ( EnteredNumberBase > EnteredNumberBaseMin )
{
Change = true;
EnteredNumberBase = EnteredNumberBase - 1;
label6.Text = "( " + EnteredNumberBase.ToString() + " )";
ConvertToDecimal();
if ( Change == false )
{
EnteredNumberBase = EnteredNumberBase + 1;
label6.Text = "( " + EnteredNumberBase.ToString() + " )";
WriteE2Message();
}
}
}
}
void Button3Click(object sender, EventArgs e)
{
if ( EntryIsNumber == true )
{
if ( RealNumber.ToString().Contains( "E" ) == true )
{
WriteE3Message();
}
else if ( ConvertToNumberBase > ConvertToNumberBaseMin )
{
ConvertToNumberBase = ConvertToNumberBase - 1;
label7.Text = "( " + ConvertToNumberBase.ToString() + " )";
label8.Text = "( " + ConvertToNumberBase.ToString() + " )";
ConvertToDecimal();
}
}
}
void Button4Click(object sender, EventArgs e)
{
if ( EntryIsNumber == true )
{
if ( RealNumber.ToString().Contains( "E" ) == true )
{
WriteE4Message();
}
else if ( ConvertToNumberBase < ConvertToNumberBaseMax )
{
ConvertToNumberBase = ConvertToNumberBase + 1;
label7.Text = "( " + ConvertToNumberBase.ToString() + " )";
label8.Text = "( " + ConvertToNumberBase.ToString() + " )";
ConvertToDecimal();
}
}
}
void ConvertToDecimal()
{
if ( IsFloat == true )
{
DecimalPart = "";
FloatPart = "";
RealNumber = 0;
DecimalFloat = textBox1.Text.Split( NumberDecimalSeparator[0] );
DecimalPart = DecimalFloat[0];
FloatPart = DecimalFloat[1];
Exponent = 0;
BaseExponent = 0;
Cipher = 0;
D = 0;
Index = 0;
Lenght = 0;
Letter = "";
Lenght = DecimalPart.Length;
for( Index = 0; Index < Lenght; Index = Index + 1)
{
Exponent = Lenght - Index - 1;
Letter = DecimalPart.Substring( Index, 1 );
SelectValueForCipher();
BaseExponent = Math.Pow( EnteredNumberBase, Exponent );
D = D + ( Cipher * BaseExponent );
}
Exponent = 0;
BaseExponent = 0;
Cipher = 0;
F = 0;
Index = 0;
Lenght = 0;
Letter = "";
Lenght = FloatPart.Length;
for( Index = 0; Index < Lenght; Index = Index + 1 )
{
Exponent = Index+1;
Letter = FloatPart.Substring( Index, 1 );
SelectValueForCipher();
BaseExponent = Math.Pow( EnteredNumberBase, -Exponent );
F = F + ( Cipher * BaseExponent );
}
RealNumber = D + F ;
Change = true;
}
else if ( IsFloat == false )
{
DecimalPart = "";
Cipher = 0;
D = 0;
Exponent = 0;
RealNumber = 0;
Index = 0;
Lenght = 0;
Letter = "";
DecimalPart = textBox1.Text;
Lenght = DecimalPart.Length;
for( Index = 0; Index < Lenght; Index = Index + 1 )
{
Exponent = Lenght - Index - 1;
Letter = DecimalPart.Substring( Index, 1 );
SelectValueForCipher();
BaseExponent = Math.Pow( EnteredNumberBase, Exponent );
D = D + ( Cipher * BaseExponent );
}
RealNumber = D;
Change = true;
}
if ( ConvertToNumberBase == 10 )
{
textBox2.Text = RealNumber.ToString();
}
if ( EnteredNumberBase == ConvertToNumberBase )
{
textBox2.Text = textBox1.Text
void ConvertDecimalToDifferentNumberBase()
{
DecimalFloat = new string[2];
DecimalPart = "";
FloatPart = "";
Change = false;
if ( RealNumber.ToString().Contains( NumberDecimalSeparator ) == true &
RealNumber.ToString().Contains( "E" ) == false )
{
DecimalFloat = RealNumber.ToString().Split( NumberDecimalSeparator[0] );
DecimalPart = DecimalFloat[0];
DecimalNumber = double.Parse( DecimalPart );
ConvertedToChosenNumberSistem = "";
Integral = 0;
DivisionResult = 0;
MultiplicationResult = 0;
Cipher = 0;
Letter = "";
while ( DecimalNumber != 0 )
{
DivisionResult = DecimalNumber / ConvertToNumberBase;
Integral = Math.Truncate( DivisionResult );
MultiplicationResult = ConvertToNumberBase * Integral ;
Cipher = Math.Truncate( DecimalNumber - MultiplicationResult );
DecimalNumber = Integral;
CipherSelect = int.Parse( Cipher.ToString() );
SelectValueForLetter();
ConvertedToChosenNumberSistem = ConvertedToChosenNumberSistem.Insert( 0, Letter );
}
if ( ConvertedToChosenNumberSistem == "" )
{
ConvertedToChosenNumberSistem = "0";
}
DecimalPart = ConvertedToChosenNumberSistem;
FloatPart = "0"+ NumberDecimalSeparator + DecimalFloat[1];
FloatNumber = double.Parse( FloatPart );
ConvertedToChosenNumberSistem = "";
Integral = 0;
MultiplicationResult = 0;
Cipher = 0;
Letter = "";
Lenght = 0;
while (FloatNumber != 0)
{
MultiplicationResult = FloatNumber * ConvertToNumberBase;
Integral = Math.Truncate( MultiplicationResult );
FloatNumber = MultiplicationResult - Integral ;
Cipher = Integral;
CipherSelect = int.Parse( Cipher.ToString() );
SelectValueForLetter();
ConvertedToChosenNumberSistem = ConvertedToChosenNumberSistem + Letter;
Lenght = ConvertedToChosenNumberSistem.Length;
if ( Lenght > 255 )
{
FloatNumber = 0;
}
}
FloatPart = ConvertedToChosenNumberSistem;
ConvertedToChosenNumberSistem = "";
ConvertedToChosenNumberSistem = DecimalPart +
RealNumber.ToString().Contains( "E" ) == false )
{
DecimalPart = RealNumber.ToString();
DecimalNumber = double.Parse( DecimalPart );
ConvertedToChosenNumberSistem = "";
Integral = 0;
DivisionResult = 0;
MultiplicationResult = 0;
Cipher = 0;
Letter = "";
while ( DecimalNumber != 0 )
{
DivisionResult = DecimalNumber
Integral = Math.Truncate( DivisionResult );
}
if ( ConvertedToChosenNumberSistem == "" )
{
ConvertedToChosenNumberSistem = "0";
}
Change = true;
textBox2.Text = ConvertedToChosenNumberSistem;
}
}
void SelectValueForLetter()
{
switch (CipherSelect)
{
case 0: Letter = "0";
break;
case 1: Letter = "1";
break;
case 2: Letter = "2";
break;
case 3: Letter = "3";
break;
case 15: Letter = "F";
break;
}
}
}
void WriteMessage()
{
MessageBox.Show( " You have entered a number " +
"with possible number system base " +
"in between ( " + EnteredNumberBaseMax.ToString() + " ) and ( 16 )",
" Information ",
MessageBoxButtons.OK,
MessageBoxIcon.Information
);
EnteredNumberBaseMin = EnteredNumberBaseMax;
ConvertToNumberBase = 10;
EnteredNumberBaseMax = 16;
label6.Text = "( " + EnteredNumberBaseMax + " )";
label7.Text = "( " + ConvertToNumberBase + " )";
label8.Text = "( " + ConvertToNumberBase + " )";
EnteredNumberBase = EnteredNumberBaseMax;
}
void WriteHexadecimalMessage()
{
MessageBoxButtons.OK,
MessageBoxIcon.Information
);
ConvertToNumberBase = 10;
EnteredNumberBaseMax = 16;
label6.Text = "( " + EnteredNumberBaseMax + " )";
label7.Text = "( " + ConvertToNumberBase + " )";
label8.Text = "( " + ConvertToNumberBase + " )";
EnteredNumberBase = EnteredNumberBaseMax;
EnteredNumberBaseMin = 16;
}
void WriteErrorMessage()
{
MessageBox.Show( "Warning ! " +
"You did not enter a number " +
"in any of the predicted number systems !?",
" Entry error ",
MessageBoxButtons.OK,
MessageBoxIcon.Error
);
label6.Text = "( )";
label8.Text = "( )";
textBox1.Text = "";
textBox1.Focus();
textBox1.Refresh();
}
void WriteE1Message()
{
toolTip1.SetToolTip( button1,
" Warning ! " +
" Number have too many digits "
);
toolTip1.ToolTipTitle = "Information";
toolTip1.ToolTipIcon = ToolTipIcon.Info;
toolTip1.Active = true;
}
void WriteE2Message()
{
toolTip1.SetToolTip( button2,
" Warning ! "+
" Number have too many digits "
);
toolTip1.ToolTipTitle = "Information";
toolTip1.ToolTipIcon = ToolTipIcon.Info;
toolTip1.Active = true;
}
void WriteE3Message()
{
toolTip1.SetToolTip( button3,
" Warning ! " +
" Number have too many digits "
);
toolTip1.ToolTipTitle = "Information";
toolTip1.ToolTipIcon = ToolTipIcon.Info;
toolTip1.Active = true;
}
void WriteE4Message()
{
toolTip1.SetToolTip( button4,
" Warning ! " +
" Number have too many digits "
);
toolTip1.ToolTipTitle = "Information";
toolTip1.ToolTipIcon = ToolTipIcon.Info;
toolTip1.Active = true;
}
}
}
</span></span></span>
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.