using System;
using System.Collections .Generic ;
using System.Linq ;
using System.Text ;
namespace sinValidator
{
class Program
{
static void Main( string[ ] args)
{
//Variables
int numbers1, numbers2, numbers3, numbers4, numbers5, numbers6, numbers7, numbers8, numbers9;
bool valid;
int sum;
int product;
double test;
int numberOfValidation = 0 ;
do {
numberOfValidation++;
Console.WriteLine ( string.Format ( "Validation #{0}" , numberOfValidation ) ) ;
// Prompt for user input
Console.WriteLine ( "\n Enter SIN: " ) ;
sin = Int32.
Parse ( Console.
ReadLine ( ) ) ;
// spliting the SIN into 9 seperate digits in different variables, and then printing them.
Console.
WriteLine ( "The first digit is {0}" , numbers1
= ( sin / 100000000 ) ) ; Console.
WriteLine ( "The second digit is {0}" , numbers2
= ( sin % 100000000 / 10000000 ) ) ; Console.
WriteLine ( "The third digit is {0}" , numbers3
= ( sin % 10000000 / 1000000 ) ) ; Console.
WriteLine ( "The fifth digit is {0}" , numbers4
= ( sin % 1000000 / 100000 ) ) ; Console.
WriteLine ( "The sixth digit is {0}" , numbers5
= ( sin % 100000 / 10000 ) ) ; Console.
WriteLine ( "The seventh digit is {0}" , numbers6
= ( sin % 10000 / 1000 ) ) ; Console.
WriteLine ( "The eighth digit is {0}" , numbers7
= ( sin % 1000 / 100 ) ) ; Console.
WriteLine ( "The ninth digit is {0}" , numbers8
= ( sin % 100 / 10 ) ) ; Console.
WriteLine ( "The tenth digit is {0}" , numbers9
= ( sin % 10 ) ) ;
// Beginning of validation
//obtaining product of the sin using provided multipliers
product = ( ( numbers1 * 1 ) + ( numbers2 * 2 ) + ( numbers3 * 1 ) + ( numbers4 * 2 ) + ( numbers5 * 1 ) + ( numbers6 * 2 ) + ( numbers7 * 1 ) + ( numbers8 * 2 ) ) ;
Console.WriteLine ( "The product {0}" , product) ;
// using div and mod to get numbers for the sum of digits
sum = ( ( ( numbers1 * 1 ) + ( numbers2 * 2 ) % 10 ) + ( ( numbers2 * 2 ) / 10 ) + ( numbers3 * 1 ) + ( ( numbers4 * 2 ) % 10 ) + ( ( numbers4 * 2 ) / 10 ) + ( numbers5 * 1 ) + ( ( numbers6 * 2 ) % 10 ) + ( ( numbers6 * 2 ) / 10 ) + ( numbers7 * 1 ) + ( ( numbers8 * 2 ) % 10 ) + ( ( numbers8 * 2 ) / 10 ) ) ;
//Test to see if sum % 10 subtracted by 10 will give final digit
test = ( 10 - ( sum % 10 ) ) ;
valid = false ;
if ( test > numbers9)
{
if ( test == numbers9)
valid = true ;
}
Console.WriteLine ( "{0}" , valid) ;
valid = false ;
if ( numbers9 > test && test < numbers9)
{
valid = true ;
}
Console.WriteLine ( "{0}" , valid) ;
} while ( ! valid && numberOfValidation <= 2 ) ;
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CnVzaW5nIFN5c3RlbS5UZXh0OwoKbmFtZXNwYWNlIHNpblZhbGlkYXRvcgp7CiAgICBjbGFzcyBQcm9ncmFtCiAgICB7CiAgICAgICAgc3RhdGljIHZvaWQgTWFpbihzdHJpbmdbXSBhcmdzKQogICAgICAgIHsKICAgICAgICAgICAgLy9WYXJpYWJsZXMKICAgICAgICAgICAgaW50IG51bWJlcnMxLCBudW1iZXJzMiwgbnVtYmVyczMsIG51bWJlcnM0LCBudW1iZXJzNSwgbnVtYmVyczYsIG51bWJlcnM3LCBudW1iZXJzOCwgbnVtYmVyczk7CiAgICAgICAgICAgIGludCBzaW47CiAgICAgICAgICAgIGJvb2wgdmFsaWQ7CiAgICAgICAgICAgIGludCBzdW07CiAgICAgICAgICAgIGludCBwcm9kdWN0OwogICAgICAgICAgICBkb3VibGUgdGVzdDsKCgkJCWludCBudW1iZXJPZlZhbGlkYXRpb24gPSAwOwogICAgICAgICAgICBkb3sKICAgICAgICAgICAgCW51bWJlck9mVmFsaWRhdGlvbisrOwogICAgICAgICAgICAJQ29uc29sZS5Xcml0ZUxpbmUoIHN0cmluZy5Gb3JtYXQoICJWYWxpZGF0aW9uICN7MH0iLCBudW1iZXJPZlZhbGlkYXRpb24gKSApOwogICAgICAgICAgICAgICAgLy8gUHJvbXB0IGZvciB1c2VyIGlucHV0CiAgICAgICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZSgiXG5FbnRlciBTSU46ICIpOwogICAgICAgICAgICAgICAgc2luID0gSW50MzIuUGFyc2UoQ29uc29sZS5SZWFkTGluZSgpKTsKCiAgICAgICAgICAgICAgICAvLyBzcGxpdGluZyB0aGUgU0lOIGludG8gOSBzZXBlcmF0ZSBkaWdpdHMgaW4gZGlmZmVyZW50IHZhcmlhYmxlcywgYW5kIHRoZW4gcHJpbnRpbmcgdGhlbS4KICAgICAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCJUaGUgZmlyc3QgZGlnaXQgaXMgezB9IiwgbnVtYmVyczEgPSAoc2luIC8gMTAwMDAwMDAwKSk7CiAgICAgICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZSgiVGhlIHNlY29uZCBkaWdpdCBpcyB7MH0iLCBudW1iZXJzMiA9IChzaW4gJSAxMDAwMDAwMDAgLyAxMDAwMDAwMCkpOwogICAgICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoIlRoZSB0aGlyZCBkaWdpdCBpcyB7MH0iLCBudW1iZXJzMyA9IChzaW4gJSAxMDAwMDAwMCAvIDEwMDAwMDApKTsKICAgICAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCJUaGUgZmlmdGggZGlnaXQgaXMgezB9IiwgbnVtYmVyczQgPSAoc2luICUgMTAwMDAwMCAvIDEwMDAwMCkpOwogICAgICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoIlRoZSBzaXh0aCBkaWdpdCBpcyB7MH0iLCBudW1iZXJzNSA9IChzaW4gJSAxMDAwMDAgLyAxMDAwMCkpOwogICAgICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoIlRoZSBzZXZlbnRoIGRpZ2l0IGlzIHswfSIsIG51bWJlcnM2ID0oc2luICUgMTAwMDAgLyAxMDAwKSk7CiAgICAgICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZSgiVGhlIGVpZ2h0aCBkaWdpdCBpcyB7MH0iLCBudW1iZXJzNyA9IChzaW4gJSAxMDAwIC8gMTAwKSk7CiAgICAgICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZSgiVGhlIG5pbnRoIGRpZ2l0IGlzIHswfSIsIG51bWJlcnM4ID0oc2luICUgMTAwIC8gMTApKTsKICAgICAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCJUaGUgdGVudGggZGlnaXQgaXMgezB9IiwgbnVtYmVyczkgPSAoc2luICUgMTApKTsKCiAgICAgICAgICAgICAgICAvLyBCZWdpbm5pbmcgb2YgdmFsaWRhdGlvbiAKICAgICAgICAgICAgICAgIC8vb2J0YWluaW5nIHByb2R1Y3Qgb2YgdGhlIHNpbiB1c2luZyBwcm92aWRlZCBtdWx0aXBsaWVycwoKICAgICAgICAgICAgICAgIHByb2R1Y3QgPSAoKG51bWJlcnMxICogMSkgKyAobnVtYmVyczIgKiAyKSArIChudW1iZXJzMyAqIDEpICsgKG51bWJlcnM0ICogMikgKyAobnVtYmVyczUgKiAxKSArIChudW1iZXJzNiAqIDIpICsgKG51bWJlcnM3ICogMSkgKyAobnVtYmVyczggKiAyKSk7CiAgICAgICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZSgiVGhlIHByb2R1Y3QgezB9IiwgcHJvZHVjdCk7CgogICAgICAgICAgICAgICAgLy8gdXNpbmcgZGl2IGFuZCBtb2QgdG8gZ2V0IG51bWJlcnMgZm9yIHRoZSBzdW0gb2YgZGlnaXRzCiAgICAgICAgICAgICAgICBzdW0gPSAoKChudW1iZXJzMSAqIDEpKyAobnVtYmVyczIgKiAyKSAlIDEwKSArKChudW1iZXJzMiAqIDIpIC8gMTApICsgKG51bWJlcnMzICogMSkgKyAoKG51bWJlcnM0ICogMiklMTApICsgKChudW1iZXJzNCAqIDIpLzEwKSArIChudW1iZXJzNSAqIDEpICsgKChudW1iZXJzNiAqIDIpJTEwKSsoKG51bWJlcnM2ICogMikvMTApICsgKG51bWJlcnM3ICogMSkgKyAoKG51bWJlcnM4ICogMiklMTApICsgKChudW1iZXJzOCAqIDIpLzEwKSk7CgogICAgICAgICAgICAgICAgLy9UZXN0IHRvIHNlZSBpZiBzdW0gJSAxMCBzdWJ0cmFjdGVkIGJ5IDEwIHdpbGwgZ2l2ZSBmaW5hbCBkaWdpdAogICAgICAgICAgICAgICAgdGVzdCA9ICgxMCAtKHN1bSAlIDEwKSk7CiAKICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7CiAgICAgICAgICAgICAgICBpZiAodGVzdCA+IG51bWJlcnM5KQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGlmICh0ZXN0ID09IG51bWJlcnM5KQogICAgICAgICAgICAgICAgICAgICAgICB2YWxpZCA9IHRydWU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoInswfSIsIHZhbGlkKTsKCiAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgaWYgKG51bWJlcnM5ID4gdGVzdCAmJiB0ZXN0IDwgbnVtYmVyczkpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgdmFsaWQgPSB0cnVlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCJ7MH0iLCB2YWxpZCk7CiAgICAgICAgCX13aGlsZSggIXZhbGlkICYmIG51bWJlck9mVmFsaWRhdGlvbiA8PSAyICk7CiAgICAgICAgfQogICAgfQp9