Reputation: 13
I am finding the sum of the numbers 1 to 1000 written (Euler project 17), but I can't see what's wrong.
This is the note from the project page: NOTE: Do not count spaces or hyphens. For example, 342 (three hundred and forty-two) contains 23 letters and 115 (one hundred and fifteen) contains 20 letters. The use of "and" when writing out numbers is in compliance with British usage.
#include <stdio.h>
int intToLetter(int x)
{
int output = 0;
if (x == 1000) {
return 11;
}
if (x / 100 != 0) {
switch (x / 100)
{
case 1:
output += 3;
break;
case 2:
output += 3;
break;
case 3:
output += 5;
break;
case 4:
output += 4;
break;
case 5:
output += 4;
break;
case 6:
output += 3;
break;
case 7:
output += 5;
break;
case 8:
output += 5;
break;
case 9:
output += 4;
break;
}
output += 7;
if (((x / 10) % 10) * 10 + x % 10 != 0)
{
output += 3;
}
}
if (((x / 10) % 10) * 10 + x % 10 >= 10 && ((x / 10) % 10) * 10 + x % 10 <= 19) {
switch (((x / 10) % 10) * 10 + x % 10) {
case 10:
output += 3;
break;
case 11:
output += 6;
break;
case 12:
output += 6;
break;
case 13:
output += 8;
break;
case 14:
output += 8;
break;
case 15:
output += 7;
break;
case 16:
output += 7;
break;
case 17:
output += 10;
break;
case 18:
output += 8;
break;
case 19:
output += 8;
break;
}
}
else {
switch ((x / 10) % 10)
{
case 2:
output += 6;
break;
case 3:
output += 5;
break;
case 4:
output += 5;
break;
case 5:
output += 5;
break;
case 6:
output += 5;
break;
case 7:
output += 7;
break;
case 8:
output += 6;
break;
case 9:
output += 6;
break;
}
switch (x % 10)
{
case 1:
output += 3;
break;
case 2:
output += 3;
break;
case 3:
output += 5;
break;
case 4:
output += 4;
break;
case 5:
output += 4;
break;
case 6:
output += 3;
break;
case 7:
output += 5;
break;
case 8:
output += 5;
break;
case 9:
output += 4;
break;
}
}
return output;
}
int main(void) {
int sum = 0;
for (int i = 1; i <= 1000; i++) {
sum+=intToLetter(i);
}
printf("%i\n",sum);
return 0;
}
Upvotes: -1
Views: 36
Reputation: 154255
At least this problem:
`"thirty" has 6 characters
// case 3: output += 5;
case 3: output += 6;
Upvotes: 0