I've been trying to put together a program that can recognise credit card numbers from different companies- I've been building it piecemeal, and I've managed to get almost every section to work. All the code seems to work up until the final section where I try to make sure that the input is between certain numbers to decide which company a card belongs to. The error I receive is on the line if (f == 0) && (number > 339999999999999) && (number < 380000000000000)
, apparently it expects an identifier for "number" - I thought the fact that I had declared it at the very top would circumvent this, but apparently not.
long long number;
int main(void)
{
long long i = 0;
long long b;
long long m = 10;
long long n = 1;
number = get_long_long("Number?\n");
do
{
long long a = number % m;
b = number - a;
long long c = b % (m * 10);
long long d = c / m;
long long e = d *2;
if (e < 9)
{
i = i + e;
}
else
{
i = i + (e - 10 + 1);
}
{
m = m * 100;
}
}
while (b > 0);
do
{
long long a = number % n;
b = number - a;
long long c = b % (n * 10);
long long d = c / n;
long long e = d *2;
if (e < 9)
{
i = i + e;
}
else
{
i = i + (e - 10 + 1);
}
{
n = n * 100;
}
}
while (b > 0);
int f = i % 10;
if (f == 0) && (number > 339999999999999) && (number < 380000000000000)
{
printf("AMEX\n");
}
else
if (f == 0) && (number > 1099999999999999) && (number < 5600000000000000)
{
printf("Mastercard\n");
}
else
if (f == 0) && ((number > 3999999999999999) && (number < 5000000000000000) || (number > 3999999999999) && (number < 5000000000000))
{
printf("Visa\n");
}
else
{
printf("invalid\n");
}
}