Exemplo n.º 1
0
	void bignum::roundUpToIndex(int index)
	{
		//first checks to see if the number is already rounded
		bignum round_test;
		round_test.setBase(base);
		round_test.setDigit(index, 1);

		//checks to see if number is already rounded without using modulo to prevent stack overflow
		for (int i = 0; i < index; i++)
		{
			if (digits[i] != 0)
				break;

			else if (i == index - 1)
				return;
		}

		for (int i = 0; i < index; i++)
			setDigit(i, 0);

		if (isPositive())
		{
			bignum increment;
			increment.setDigit(index, 1);
			increment.setBase(base);
			*this += increment;
		}

		updateDigits();
	}
Exemplo n.º 2
0
void Max100500::setNumber(int value)
{
    for (int i = 0; i < 2; i++)
    {
        char digit = (value % (int)pow(10, i + 1)) / (int)pow(10, i);
        setDigit(1 - i, digit);
    }
}
Exemplo n.º 3
0
BigInteger::BigInteger(string str) {
// Task 2b. Construct a BigInteger from a string.

    for (int i = 0; i < str.length(); ++i) {

        string lastVal = str.substr(str.length() - 1 - i, 1);
        int convert = atoi(lastVal.c_str());
        setDigit(i, convert);
    }

}
Exemplo n.º 4
0
void MAX7219::setNumber(uint32_t number, int addr) {
	// number = number % (uint32_t) pow(10, maxDevices);
	for (uint8_t i = 0; i < 8; i++) {
		if (number == 0 && i > 0) {
			setChar(i, ' ', addr);
		} else {
			setDigit(i, number % 10, addr);
			number = number / 10;
		}
	}
}
Exemplo n.º 5
0
void TM1638::setNumberHex(uint32_t number, uint8_t offset, uint8_t width, const uint8_t pad)
{
    while (number && width-- && offset != 0xFF)
    {
        setDigit(offset--, number & 0x0F);
        number >>= 4;
    }

    while (width -- && offset != 0xFF)
        setByte(offset--, pad);
}
Exemplo n.º 6
0
void TM1638::setNumberPad(uint32_t number, uint8_t offset, uint8_t width, const uint8_t pad)
{
    while (number && width-- && offset != 0xFF)
    {
        setDigit(offset--, number % 10);
        number /= 10;
    }

    while (width -- && offset != 0xFF)
        setByte(offset--, pad);
}
Exemplo n.º 7
0
void TM1638::setNumber(uint32_t number, uint8_t offset, const uint8_t align)
{
    if (align == TM_LEFT)
        offset += offset_digits(number);

    while (number && offset != 0xFF)
    {
        setDigit(offset--, number % 10);
        number /= 10;
    }
}
Exemplo n.º 8
0
/* showdigits - Function for multiplexing
 * Parameters: int* digits (pointer to array of digits), int ms_d (display time / digit in milliseconds)
 * Description: Multiplexes by turning digits on and of in three pairs.
 *
 * Position of the digits on the Nixie clock (hh,mm,ss)
 * =============================================
 * =   ---   ---     ---   ---     ---   ---   =                  
 * =  | A | | B |   | C | | D |   | E | | F |  =                
 * =   ---   ---     ---   ---     ---   ---   =                 
 * =============================================
 *
 * Pairs(1,2,3) for multiplexing. One pair at a time on 
 * =============================================
 * =   ---   ---     ---   ---     ---   ---   =                  
 * =  | 1 | | 2 |   | 3 | | 1 |   | 2 | | 3 |  =                
 * =   ---   ---     ---   ---     ---   ---   =                 
 * =============================================
*/
void NixieAS::showDigits(int* digits, int ms_d){
	
	int iterations = 50/(ms_d*3+5);
	
	for(int i=0; i<iterations; i++){
		
		/*== Digit Pair 1 ==*/
		setDigit(digits[0],0); //Digit A
		setDigit(digits[3],1); //Digit D
		
		//Switch for pair 1
		digitalWrite(_pinLayout[8],HIGH); 
			delay(ms_d);
		digitalWrite(_pinLayout[8],LOW);

		/*== Digit Pair 2 ==*/
		setDigit(digits[1],0); //Digit B
		setDigit(digits[4],1); //Digit E
		
		//Switch for pair 1
		digitalWrite(_pinLayout[9],HIGH); 
			delay(ms_d);
		digitalWrite(_pinLayout[9],LOW);
		
		/*== Digit Pair 3 ==*/
		setDigit(digits[2],0); //Digit C
		setDigit(digits[5],1); //Digit F
		
		//Switch for pair 1
		digitalWrite(_pinLayout[10],HIGH); 
			delay(ms_d);
		digitalWrite(_pinLayout[10],LOW);
	}

}
Exemplo n.º 9
0
Digit::Digit(string name)
{
 Library l;
 IntVar *v;
 l.Load();
 if((v=(IntVar*)l.Find(name))==0)
 {
  l.Create(name, 69);
  l.Save();
  v=(IntVar*)l.Find(name);
 }
 setDigit(v->getValue());
}
Exemplo n.º 10
0
BigInteger::BigInteger(int val) {
// Task 2a. Construct a BigInteger from an int value

    int counter = 0;

    while (val != 0) {
        int modVal = val%10;

        setDigit(counter, modVal);
        val = val/10;
        ++counter;
    }

}