I have declared a function (C++)
int products(char num1, char num2, char num3, char num4, char num5);
but my compiler is giving me this error:
Invalid conversion from 'char' to 'const Char*'
error initializing argument 1 of 'int atoi (const char*)' on line 22
when I attempt to pass num1, num2 etc. as a parameter to atoi.
#include<iostream>
#include<string>
using namespace std;
int Product(char num1, char num2, char num3, char num4, char num5);
const string LargeNum = "7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450";
int main(){
int greatestVal = 0;
for(int i = 0; i + 4 <= LargeNum.length(); i++ ){
if(greatestVal < Product(LargeNum[i], LargeNum[i+1], LargeNum[i+2], LargeNum[i+3], LargeNum[i+4])){
greatestVal = Product(LargeNum[i], LargeNum[i+1], LargeNum[i+2], LargeNum[i+3], LargeNum[i+4]);
}
}
cout << greatestVal << endl;
system("PAUSE");
}
int Product(char num1, char num2, char num3, char num4, char num5){
return (atoi(num1)*atoi(num2)*atoi(num3)*atoi(num4)*atoi(num5));
}
atoitakes aconst char*(i.e. a null terminated sequence of characters). You are supplying it with a singlechar, so the compiler complains. How you fix it depends on exactly what you are trying to do.I would guess that you want to convert a char representing a digit to an integer, ‘0’ to 0, ‘1’ to 1 etc. If so then the correct code would be
This works because chars convert to ints automatically when you do arithmetic on them, and also because the chars ‘0’ to ‘9’ are guaranteed to be in sequence, so all you need to do to convert a digit to an int is subtract ‘0’ from it.