Exemplo n.º 1
0
int isPalindrome(int number)
{
   int digits,      /* Number of digits in the integer */
       first,       /* Digit of the highest place value */
       success = 1; /* True if number is a palindrome */

   digits = numberOfDigits(number);

   while(digits > 1 && success == 1)   
   {
      first = number;
      while(first > 9)
         first *= .1;

      if(first == number % 10)
      {
         success = checkZeroes(&number, digits); /* Checks for leading zero */
         number -= first * powTen(digits - 1);   /* Removes leftmost */
         number *= .1;                           /* Removes rightmost */
      }
      else
         success = 0;

      digits = numberOfDigits(number);
   }

   return success;
}
Exemplo n.º 2
0
void testFunction(){
    assert(sameCase('a', 'b'));
    assert(!(sameCase('a', 'B')));
    assert(sameCase('A','B'));
    assert(numberOfDigits(123)==3);
    assert(numberOfDigits(123456)==6);
    assert(!(numberOfDigits(123)==5));
    assert(fabs(avg(30, 40)-((30+40)/2)<0.0000001));
}
Exemplo n.º 3
0
Arquivo: main.c Projeto: rookie/euler
BOOL isPalindrome(int number){
	int multiplier = 1;
	int digits;
	BOOL palindrome;
	
	//get number of digits to calculate initial multiplier
	digits = numberOfDigits(number);
	for (int i = 1; i<digits; i++) {
		multiplier *= 10;
	}
	palindrome = YES;
	while (digits > 2){
		//check if high digit and low digit are same
		if (number/multiplier != number%10) {
			palindrome = NO;
			break;
		}
		digits -= 2;			 //remove 2 matching new digits
		multiplier /= 100;		 //calc new multiplier
		number /= 10;			 //shift out low digit
		number %= multiplier*10; //cut off high digit
	};
	
	//check that last two digits are the same
	if (digits == 2) {
		if ((number % 10) == (number / 10)) {
			palindrome = YES;
		}else {
			palindrome = NO;
		}
	}
	
	return palindrome;
}
Exemplo n.º 4
0
int getDigit(int num,int index){
    index=numberOfDigits(num)-index-1;
    while (index-->0) {
        num=num/10;
    }
    return num%10;
}
void generateMatrix(int n){
    int i,j,digitsActualNumber,actualNumber,a=0,digitsMaxNumber;
    digitsMaxNumber = numberOfDigits((int)pow(2,2*n-2));
    for(i=0;i<n;i++){
        for(j=0;j<n;j++){
            actualNumber = (int)pow(2,a);
            digitsActualNumber = numberOfDigits(actualNumber);
            int T = digitsMaxNumber - digitsActualNumber;
            printSpaceRepeat(T);
            printf("%d",actualNumber);
            if(j != n-1) printf(" ");
            a++;
        }
        printf("\n");
        a = i + 1;
    }
}
Exemplo n.º 6
0
void numberToArray(int ar[], int num){
    int i=0;
    int digits = numberOfDigits(num);
    while(num){
        ar[digits-i-1] = num%10;
        num = num/10;
        i++;
    }
}
Exemplo n.º 7
0
char InfInt::digitAt(size_t i) const
{//PROFILED_SCOPE
	if (numberOfDigits() <= i)
	{
#ifdef INFINT_USE_EXCEPTIONS
		throw InfIntException("invalid digit index");
#else
		std::cerr << "Invalid digit index: " << i << std::endl;
		return -1;
#endif
	}
	return (val[i / DIGIT_COUNT] / powersOfTen[i % DIGIT_COUNT]) % 10;
}
Exemplo n.º 8
0
void validate(char *str1, char *str2, char *str,int ar1[],int ar2[]){
    
    int num1 = arrayToNumber(ar1, strlen(str1));
    int num2 = arrayToNumber(ar2, strlen(str2));
    int res = num1 + num2;
    int ar[strlen(str)];
    int index1, index2;
    int p;
//    printf("%d + %d = %d\n",num1,num2,res);
    if(numberOfDigits(res) == strlen(str)){
    numberToArray(ar, res);
        if(checkFinalString(str, ar)){
            for(int i=0;i<strlen(str);i++){
                index1 = isExist(str1,str[i]);
                index2 = isExist(str2,str[i]);
//        printf("str1: %s str2: %s ch: %c\n",str1, str2, str[i]);
//        printf("index1: %d index2: %d index: %d\n",index1, index2, index);
                if (index1!=-1) {
                    if (ar1[index1] != ar[i]) {
                        return;
                    }
                }
                else{
                    for (p=0; p<strlen(str1); p++) {
                        if (ar1[p] == ar[i]) {
                            return;
                        }
                    }
                }
                if (index2!=-1) {
                    if (ar2[index1] != ar[i]) {
                        return;
                    }
                }
                else{
                    for (p=0; p<strlen(str2); p++) {
                        if (ar2[p] == ar[i]) {
                            return;
                        }
                    }
                }
            }
            totalRes++;
            printf("%d + %d = %d \t",num1,num2, res);
            if (totalRes%2==0) {
                printf("\n");
            }
        }
    }
}
Exemplo n.º 9
0
int totalNumberOfMatchingNumbers(int num){
    int len = numberOfDigits(num);
    int i=0,j=0,res=0;
    while(i<len){
        j=0;
        while (j<len) {
            if(getDigit(num,i) == getDigit(num,j) && i!=j){
                res++;
            }
            j++;
        }
        i++;
    }
    return res;
}