# Delete a digit in C

Im sorry if i shouldnt post C related stuff here, I dont like stack overflow so i wanted to try my luck here.

Anyways, I am soposed to return an integer with 1 deleted digit so that i get the maximum possible number.
Its specified that 10 <= n <= 1000000
Examples
input 134 output 34 exp: removed 1, 34 is left, removing 3 would output 14, removing 4 would output 13 34 > 14 > 13.

input 1001 output 101 …
My code so far:

``````#include <math.h>
#include <stdbool.h>
int deleteDigit(int n) {
char number[7];
int lenght = log10(n) + 1; //For any positive integer nn, the number of digits in n is log(base10)n +1
int result,i,j = 0;
bool hasZero = false;
sprintf(number, "%d", n);
while(hasZero == false || j < lenght)
if(number[j++] == '0') hasZero = true;
j--;
if(!hasZero)
for(i = 1; i<lenght;i++)
{
result += number[i] - '0';
result *= 10;
} else if (hasZero)
for(i = 0; i<lenght;i++)
{
if(i == j) i++;
result += number[i] - '0';
result *= 10;
}

return result/10;

}
``````

I would like to ask you some questions:

1. Does this even compile without any errors?
I don’t want to be mean here but if this in fact C it looks like it’s lacking “{ }” brackets in some important places.

2. what is your reasoning for your algorithm and pseudo code?
Explaining someone else line by line your reasoning or a “rubber ducky” might help you clarify your doubts.

3. what is the specific doubt in this case?

It compiles, it just gives a wrong output.
The {} is missing where it just has to execute the next line of the code in the loop(and only that line), that’s not an error.
The algo checks if the number has a 0 digit, if it doesn’t it removes the first digit (the first digit of 1564 would be 1) if it does have a 0 it removes the first 0 in the number by just skipping the number[index] where it found the 0 ( the if(i == j) i++; ).

At smaller numbers it returns the whole input, at bigger numbers it returns a random integer, sometimes negative.

And i just realized the algorithm is very very wrong.