Write a C program.
Standard library defines alibrary function atoi. This function converts an array of digit characters, which represents a decimal integer literal, into the
corresponding decimal integer. For example, given a char array (string) of “134”, atoi returns an integer 134.Implement your version of atoi called
my_atoi, which does exactly the same thing.
Your program keeps on reading from the user until “quit” is entered.
A more intuitive approach, which you should implement here, is to calculate by traversing the array from right to left and convert following the traditional concept of …. 10^310^210^110^0
Sampleinput/output
Enter a word of positive number or ‘quit’: 12
12 (014, 0XC)24 144
Enter a word of positive number or ‘quit’: 100
100 (0144, 0X64)200 10000
Enter a word of positive number or ‘quit’:quit
INCOMPLETE CODE
#include <stdio.h>
#include <string.h> /* for strcpy() */
#include <math.h> /* for pow() */
int my_atoi (char c[]); /* function declaration */
int main(){
int a;
char arr [10];
char argu [10];
printf(“Enter a postive number or ‘quit’: ” );
scanf(“%s”, arr);
while( )
{
strcpy(argu, arr);
a = my_atoi(argu);
printf(“%d (%#o, %#X)t%dt%.0fn”, a, a, a, a*2, pow(a,2));
/* read again */
printf(“Enter a postive number or ‘quit’: ” );
scanf(“%s”, arr);
}
return 0;
}
/* convert an array of digit characters into a decimal int */
/*
Here you should scan from right to left. This is a little complicated but more straightforward */
int my_atoi (char c[])
{
}
Expert Answer
Explanation —————————————————————————————————————————–
Suppose the number is 134,
Then it can be written as 100*1 + 10*3 + 1*4
Thus we can see it is the sum of power of 10, multiplied by the number at each position from right to left (start from 0th position)
Position : 0 => 4 -> 1*4 = 4
Position : 1 => 3 -> 10*3 = 30
Position : 2 => 1 -> 100*1 = 100
Add these, we will get 100+30+4 = original number
Here in the program.
temp = c[i] – ‘0’ => will give the actual number at that position, because we are subtracting the number by ascii value of ‘0’
multiplier is the power of 10 at each postion, thus its get multiplied by 10 before moving to next position
Num is the actual result, which is intialized by 0, and gets added in each iteration.
Finaly, we have our desired result stored in num, at the end of the loop
——————————————————————————————————————————————-
*/
int my_atoi(char c[]){
int len = strlen(c);
int i,temp,num = 0,multiplier = 1;
for(i=0;i<len;i++){
temp = c[i]-‘0’;
num = num + multiplier * temp;
multiplier = multiplier*10;
}
return num;
}