I am having trouble running the following code. I got this: error C2668: 'pow': ambiguous call to an overloaded function. I tried to manually apply the arguments to the corresponding type using static_cast, but I think I'm getting some pointer errors ?!
The program should convert the number from base 16 to base 10.
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <string.h> #include <math.h> //base 16 to base 10 int convert(char *n){ int result = 0; for (int i = strlen(n) - 1; i >= 0; i--){ if (n[i] >= 'a') result += (n[i] - 'a' + 10)* pow(16, strlen(n) - i - 1); else if (n[i] >= 'A') result += (n[i] - 'A' + 10)* pow(16, strlen(n) - i - 1); else if (n[i] >= '0') result += (n[i] - '0')* pow(16, strlen(n) - i - 1); } return result; } void main(void){ char n[10]; printf("Introduceti numarul: "); scanf("%s", n); printf("Numarul in baza 10 este: %d", convert(n)); _getch(); }
These are all errors.
1>------ Build started: Project: pr8, Configuration: Debug Win32 ------ 1> pr8.cpp 1> error C2668: 'pow' : ambiguous call to overloaded function 1> could be 'long double pow(long double,int) throw()' 1> or 'long double pow(long double,long double) throw()' 1> or 'float pow(float,int) throw()' 1> or 'float pow(float,float) throw()' 1> or 'double pow(double,int) throw()' 1> or 'double pow(double,double)' 1> while trying to match the argument list '(int, size_t)' 1>'-' : pointer can only be subtracted from another pointer 1> error C2668: 'pow' : ambiguous call to overloaded function 1> could be 'long double pow(long double,int) throw()' 1> or 'long double pow(long double,long double) throw()' 1> or 'float pow(float,int) throw()' 1> or 'float pow(float,float) throw()' 1> or 'double pow(double,int) throw()' 1> or 'double pow(double,double)' 1> while trying to match the argument list '(int, size_t)' 1> error C2668: 'pow' : ambiguous call to overloaded function 1> could be 'long double pow(long double,int) throw()' 1> or 'long double pow(long double,long double) throw()' 1> or 'float pow(float,int) throw()' 1> or 'float pow(float,float) throw()' 1> or 'double pow(double,int) throw()' 1> or 'double pow(double,double)' 1> while trying to match the argument list '(int, size_t)' ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
How can i fix this? Thanks.