예제 #1
0
boost::tuple< fit_tuple_t, fit_tuple_t >
find_grad( const fitness_f &f, const fit_tuple_t &current,
           const double x2, const double delta ) {
    // Declare our first and 2nd derivatives
    int psize = current.get<0>().size();
    int nsize = current.get<1>().size();
    vector_t pgrad( psize );
    vector_t ngrad( nsize );
    vector_t plapl( psize );
    vector_t nlapl( nsize );

    // Protons
    for ( int i = 0; i < psize; ++i ) {
        fit_tuple_t plus( current );
        fit_tuple_t minus( current );
        plus.get<0>()[i]  += delta;
        minus.get<0>()[i] -= delta;
        double x2plus  = f( plus );
        double x2minus = f( minus );
        pgrad[i] = ( x2plus - x2minus ) / ( 2 * delta );
        plapl[i] = ( x2plus + x2minus - 2 * x2 ) / bm::pow<2>(delta); }
    // Neutrons
    for ( int i = 0; i < nsize; ++i ) {
        fit_tuple_t plus( current );
        fit_tuple_t minus( current );
        plus.get<1>()[i]  += delta;
        minus.get<1>()[i] -= delta;
        double x2plus  = f( plus );
        double x2minus = f( minus );
        ngrad[i] = ( x2plus - x2minus ) / ( 2 * delta );
        nlapl[i] = ( x2plus + x2minus - 2 * x2 ) / bm::pow<2>(delta); }

    return boost::make_tuple( fit_tuple_t( pgrad, ngrad ),
                              fit_tuple_t( plapl, nlapl ) ); }
예제 #2
0
BigNumber addit(BigNumber A, BigNumber B) {
	if(A.neg == 0 && B.neg == 1) {
		B.neg = 0;return minus(A, B);
	}
	else if(A.neg == 1 && B.neg == 0) {
		A.neg = 0;return minus(B, A);
	}
	int a, p, h;
	BigNumber C;
	C.neg = A.neg;
	for(a = 0; a < L; a++)	C.pv[a] = C.hv[a] = 0;
	for(a = 0; a <= A.pl; a++)	C.pv[a] += A.pv[a];
	for(a = 0; a <= B.pl; a++)	C.pv[a] += B.pv[a];
	for(a = 0; a <= A.hl; a++)	C.hv[a] += A.hv[a];
	for(a = 0; a <= B.hl; a++)  C.hv[a] += B.hv[a];
	h = (A.hl < B.hl) ? A.hl : B.hl;/*min*/
	for(a = h; a >= 1; a--)
		C.hv[a-1] += C.hv[a]/10, C.hv[a] %= 10;
	C.pv[0] += C.hv[0]/10, C.hv[0] %= 10;
	p = (A.hl > B.hl) ? A.hl : B.hl;/*max*/
	for(a = 0; a <= p; a++)
		C.pv[a+1] += C.pv[a]/10, C.pv[a] %= 10;
	p = L-1, h = L-1;
	while(C.pv[p] == 0 && p >= 0) p--;
	while(C.hv[h] == 0 && h >= 0) h--;
	C.pl = p, C.hl = h;
	return C;
}
예제 #3
0
int main(void)
{
    /* 28 Oct 2018 */
    dt d2 = {28, 10, 2018};

    /* 30 June 2006 */
    dt d1 = {30, 6, 2006};

    int days; 

    int d1_pt = 0, d2_pt = 0;

    if (d1.year  > d2.year)     d1_pt += 100;
    else                        d2_pt += 100;
    if (d1.month > d2.month)    d1_pt += 10;
    else                        d2_pt += 10;
    if (d1.day   > d2.day)      d1_pt += 1;
    else                        d2_pt += 1;

    days = (d1_pt > d2_pt) ? minus(d1, d2) : minus(d2, d1);

    print_dt(d1);
    print_dt(d2);
    printf("number of days: %d \n", days);

    return 0;
}
예제 #4
0
파일: j.cpp 프로젝트: bdepwgjqet/fondue
int main() {
	int n;
	while(scanf("%d",&n)+1) {
		if(n==0) break;
		printf("%d %d\n",(minus(f(6,n-1),1)*f(5,MOD-2)+1)%MOD,minus(f(6,n),1)*f(5,MOD-2)%MOD);
	}
	return 0;
}
예제 #5
0
		// date := year minus month minus day .
		void date()
		{
			year();
			minus();
			month();
			minus();
			day();
		}
예제 #6
0
 int calculate(string s) {
     if(s == "") return 0;
     vector<int> numRow;
     vector<char> symbol;
     int count = 0;
     bool flag = true;
     for(auto c : s){
         if(c >= '0' && c <= '9'){
             count = int(c-'0') + count * 10;
             if(flag) flag = false;
         }else if(c == '+' || c == '-'){
             if(!flag){
                 numRow.push_back(count);
                 flag = true;
                 count = 0;
             }
             if( symbol.size() != 0){
                 if(symbol.back() == '-'){
                     minus(numRow);
                     symbol.pop_back();
                 }else if(symbol.back() == '+'){
                     plus(numRow);
                     symbol.pop_back();
                 }
             }
             symbol.push_back(c);
         }else if(c == '('){
             symbol.push_back(c);
         }else if(c == ')'){
             if(!flag){
                 numRow.push_back(count);
                 flag = true;
                 count = 0;
             }
             if(symbol.back() == '-'){
                 minus(numRow);
                 symbol.pop_back();
             }else if(symbol.back() == '+'){
                 plus(numRow);
                 symbol.pop_back();
             }
             symbol.pop_back();
         }
     }
     if(!flag) numRow.push_back(count);
     if(symbol.size() == 0) return numRow.back();/*
     for(auto i = symbol.rbegin(); i != symbol.rend();i++){
         if(*i == '-') minus(numRow);
         else plus(numRow);
     }*/
     else{
         cout<<"out"<<endl;
         if(symbol.back() == '+') plus(numRow);
         else minus(numRow);
     }
     return numRow.back();
 }
예제 #7
0
// Arithmetic binary operator-
LongInt LongInt::operator-(const LongInt &rhs)
{
	LongInt result, a = *this, b = rhs;

	// Positive Lhs - Negative Rhs
	if (a.sign == true && b.sign == false)
	{
		b.sign = true;
		return a + b;
	}
	// Negative Lhs - Positive Rhs
	else if (a.sign == false && b.sign == true)
	{
		b.sign = false;
		return a + b;
	}
	// Negative Lhs - Negative Rhs
	else if (a.sign == false && b.sign == false)
	{
		a.sign = true, b.sign = true;
		if (a < b)
		{
			minus(result, b, a, a.digits.size() - 1, b.digits.size() - 1);
			result.sign = true;
		}
		else if (a > b)
		{
			minus(result, a, b, b.digits.size() - 1, a.digits.size() - 1);
			result.sign = false;
		}
		else
		{
			result.digits.push_back(0 + '0');
			result.sign = true;
		}
	}
	// Positive Lhs - Positive Rhs
	else if (a.sign == true && b.sign == true)
	{
		if (a > b)
		{
			minus(result, a, b, b.digits.size() - 1, a.digits.size() - 1);
			result.sign = true;
		}
		else if (a < b)
		{
			minus(result, b, a, a.digits.size() - 1, b.digits.size() - 1);
			result.sign = false;
		}
		else
		{
			result.digits.push_back(0 + '0');
			result.sign = true;
		}
	}
	return result;
}
예제 #8
0
int main(void) {
	char a[50];
	char b[50];
	scanf("%s", a);
	scanf("%s", b);
	printf("%d %d", (int) strlen(a), (int) strlen(b));
	int a_length = (int) strlen(a);
	int b_length = (int) strlen(b);
	int a_tag = 1;
	int i;
	if (a[0] == '-') {
		a_tag = -1;
		for (i = 1; i < a_length; i++) {
			a[i - 1] = a[i];
		}
		a_length -= 1;
	}
	int b_tag = 1;
	if (b[0] == '-') {
		b_tag = -1;
		for (i = 1; i < b_length; i++) {
			b[i - 1] = b[i];
		}
		b_length -= 1;
	}
	char c[51];
	int i;
//	for (i = 0; i < 50; i++) {
//		printf("%c", a[i]);
//		printf("%c", b[i]);
//	}
	if (a_tag > 0) {
		if (b_tag > 0) {
			//+
			printf("%s", add(a, b));
			//-
			if (a > b) {
				printf("%s", add(a, b));
			} else {
				printf("%s", minus(b, a));
			}
			//*
			printf("%s", minus(b, a));
		} else {

		}
	} else {
		if (b_tag > 0) {

		} else {

		}
	}
}
예제 #9
0
void working()
{
    int tmp;
    for ( ; i < end; i++)
        switch ( input[i] )
        {
            case '>' : p = plus(p); break;
            case '<' : p = minus(p); break;
            case '|' : p = 0; break;
            case ',' : scanf("%d",&tmp ); tape[p] = tmp; break;
            case '.' : printf("%u\n", tape[p]); break;
            case '=' : tape[p] = tape[ minus(p) ]; break;
            case '0' : tape[p] = 0; break;
            case '!' : var = tape[p]; break;
            case '?' : tape[p] = var; break;
            case '*' : tape[p] = ( tape[p] * tape[minus(p)] ) % 256; break;
            case '/' : tape[p] = tape[p] / tape[minus(p)]; break;
            case '+' : tape[p] = (tape[p]==255)?0:(tape[p]+1); break;
            case '-' : tape[p] = (!tape[p])?0:(tape[p]-1); break;
            case '^' : printf("%d", var); break;
            case '$' : var = p;
            case '(' :
                if (!tape[p])
                {
                    tmp = 1;
                    for (i++; tmp; i++)
                        if (input[i]=='(') tmp++;
                        else if (input[i]==')') tmp--;
                    i--;
                }
                break;
            case '[' :
                if ( !tape[p] )
                {
                    tmp = 1;
                    for (i++; tmp; i++)
                        if (input[i]=='[') tmp++;
                        else if (input[i]==']') tmp--;
                    i--;
                }
                else
                {
                    i++;
                    tmp = i;
                    do {
                        i = tmp;
                        working();
                    } while ( tape[p] );
                }
                break;
            case ']' : return;
        }
}
예제 #10
0
파일: part2.c 프로젝트: ssangervasi/shell
void exitUsage(struct rusage * usageBegin){
	struct rusage usageEnd;
	struct timeval userBeg, systemBeg, userEnd, systemEnd;
	if(0 == getrusage(RUSAGE_SELF, &usageEnd)){
		userBeg = (*usageBegin).ru_utime;
		systemBeg = (*usageBegin).ru_stime;
		userEnd = (usageEnd).ru_stime;
		systemEnd = (usageEnd).ru_stime;
		printf("TIME SPENT IN FANTASTIC USER MODE <3 %ld.%ld sec <3\n", minus(userBeg.tv_sec, userEnd.tv_sec), minus(userBeg.tv_usec, userEnd.tv_usec));
		printf("TIME SPENT IN WONDERFUL KERNEL MODE :$ %ld.%ld sec :$ \n", minus(systemBeg.tv_sec, systemEnd.tv_sec), minus(systemBeg.tv_usec, systemEnd.tv_usec));   
	}
	return;	
}
예제 #11
0
namespace boost { namespace hana { namespace test {
    template <typename G>
    auto laws<Group, G> = [] {
        static_assert(models<Group(G)>{}, "");

        laws<Monoid, G>();

        // Instance laws
        {
            for_each(objects<G>, [](auto x) {
                BOOST_HANA_CHECK(equal(
                    plus(x, negate(x)),
                    zero<G>()
                ));

                BOOST_HANA_CHECK(equal(
                    plus(negate(x), x),
                    zero<G>()
                ));
            });
        }

        // minus
        {
            for_each(objects<G>, [](auto x) {
                for_each(objects<G>, [=](auto y) {
                    BOOST_HANA_CHECK(equal(
                        minus(x, y),
                        plus(x, negate(y))
                    ));

                    BOOST_HANA_CHECK(equal(
                        minus(y, x),
                        plus(y, negate(x))
                    ));
                });
            });
        }

        // negate
        {
            for_each(objects<G>, [](auto x) {
                BOOST_HANA_CHECK(equal(
                    negate(negate(x)),
                    x
                ));
            });
        }
    };
}}} // end namespace boost::hana::test
예제 #12
0
파일: 196D.cpp 프로젝트: alxsoares/OI
void dfs(int i, int s1, int s2, bool cling) {
	if ( i == n ) {
		printf("%s\n", cur);
		exit(0);
	}
	for ( int a = cling?str[i]:'a'; a <= 'z'; a ++ ) {
		if ( (i-d+1<0 || plus(mul(s1,BASE),a) != plus(s2,mul(powD,a)))
		  && (i-d<0 || plus(mul(cur[i-d],mul(powD,BASE)),plus(mul(s1,BASE),a)) 
			  != plus(cur[i-d],mul(BASE,plus(s2,mul(powD,a))))) ) {
			cur[i] = (char)a;
			dfs(i+1, minus(plus(mul(s1,BASE),a),i-d+1>=0?mul(powD,cur[i-d+1]):0), 
					mul(plus(minus(s2,(i-d+1>=0?cur[i-d+1]:0)),mul(powD,a)),kInv),
					cling&&a==str[i]);
		}
	}
}
예제 #13
0
int				ft_printf_x(va_list ap, t_flags f)
{
	t_len				lenf;
	unsigned long long	nb;
	char				*print;

	lenf.len = 0;
	lenf.tmp_len = 0;
	nb = unsigned_check(ap, f);
	print = ft_itoa_base(nb, 16);
	if (f.hashtag == 1)
		lenf.tmp_len += 2;
	if ((int)ft_strlen(print) < f.precision)
		lenf.tmp_len += f.precision;
	else
		lenf.tmp_len += ft_strlen(print);
	if (lenf.tmp_len >= (int)f.len_field)
		lenf.len += print_number(print, f, nb, f.precision);
	else if (f.minus == 1)
		lenf.len = minus(f, lenf.len, nb, print);
	else
	{
		while (lenf.len < (int)f.len_field - lenf.tmp_len && f.zero != 1)
			lenf.len += ft_putchar(' ');
		lenf.len += print_number(print, f, nb, (int)f.len_field - lenf.tmp_len);
	}
	return (free_ret(print, lenf.len));
}
예제 #14
0
long_class long_class::operator-(long_class &right)
{
	long_class res, tmp;
	tmp.me = minus(this->me);
	res.me = sum_and_sub(tmp.me, right.me);
	return res;
}
예제 #15
0
파일: Polsk(1).c 프로젝트: vitaminotar/ilab
int main()
{
    int x = 0,a = 0;
    char simvol;
    stack *stek_chisel = constructor(30);

    while ((simvol = getchar())!='\n')
    {
        switch(simvol)
        {
            case ' ':
            break;
            case '+':
             add(stek_chisel);
             break;
            case '*':
             mul(stek_chisel);
             break;
            case '-':
             minus(stek_chisel);
             break;
            case '/':
             div(stek_chisel);
             break;
            default:
             x = simvol-'0';
             push(stek_chisel,x);
        }
    }
    a = pop(stek_chisel);
    printf("%d", a);
    Destroy(stek_chisel);
    return 0;
}
예제 #16
0
파일: calc.cpp 프로젝트: elmirador/calc
calc::calc(QWidget *parent) :
    QMainWindow(parent)
{
    setupUi(this);

    setFixedSize(sizeHint());

    clearall();

    connect (Button1,SIGNAL(clicked()),this,SLOT(add1()));
    connect (Button2,SIGNAL(clicked()),this,SLOT(add2()));
    connect (Button3,SIGNAL(clicked()),this,SLOT(add3()));
    connect (Button4,SIGNAL(clicked()),this,SLOT(add4()));
    connect (Button5,SIGNAL(clicked()),this,SLOT(add5()));
    connect (Button6,SIGNAL(clicked()),this,SLOT(add6()));
    connect (Button7,SIGNAL(clicked()),this,SLOT(add7()));
    connect (Button8,SIGNAL(clicked()),this,SLOT(add8()));
    connect (Button9,SIGNAL(clicked()),this,SLOT(add9()));
    connect (Button0,SIGNAL(clicked()),this,SLOT(add0()));
    connect (backButton,SIGNAL(clicked()),this,SLOT(delnum()));
    connect (pointButton,SIGNAL(clicked()),this,SLOT(insertpoint()));
    connect (plusButton,SIGNAL(clicked()),this,SLOT(plus()));
    connect (minusButton,SIGNAL(clicked()),this,SLOT(minus()));
    connect (multiplyButton,SIGNAL(clicked()),this,SLOT(multiply()));
    connect (divideButton,SIGNAL(clicked()),this,SLOT(divide()));
    connect (equalButton,SIGNAL(clicked()),this,SLOT(equal()));
    connect (CButton,SIGNAL(clicked()),this,SLOT(clearall()));
    connect (actionAbout_Qt,SIGNAL(triggered()),this,SLOT(about()));
    connect (actionExit,SIGNAL(triggered()),this,SLOT(close()));
    connect (pmButton,SIGNAL(clicked()),this,SLOT(togglepm()));
}
예제 #17
0
int main() {
  bignum l1 = from_str("99"),
    l2 = from_str("10");

  printf("%s\n", to_str(from_int(666)));
  printf("%d\n", to_int(from_str("666")));

  bignum sum = plus(l1, l2);
  printf("%s\n", to_str(sum));

  bignum diff = minus(l1, l2);
  printf("%s\n", to_str(diff));

  printf("%i\n", lesser(l1, l2));

  bignum muli = mul_int(l1, 2);
  printf("%s\n", to_str(muli));

  printf("%d\n", mod_int(l1, 10));

  bignum divi = div_int(l1, 10);
  printf("%s\n", to_str(divi));

  bignum mul = multiply(l1, l2);
  printf("%s\n", to_str(mul));

  bignum div = divide(l1, l2);
  printf("%s\n", to_str(div));

  bignum mod = modulo(l1, l2);
  printf("%s\n", to_str(mod));

  return 0;
}
예제 #18
0
void digit_gen(diy_fp_t W, diy_fp_t Mp, diy_fp_t delta,
	       char* buffer, int* len, int* K) {
  uint32_t div; int d,kappa; diy_fp_t one, wp_w;
  wp_w = minus(Mp, W);
  one.f = ((uint64_t) 1) << -Mp.e; one.e = Mp.e;
  uint32_t p1 = Mp.f >> -one.e; /// Mp_cut
  uint64_t p2 = Mp.f & (one.f - 1);
  *len = 0; kappa = 10; div = TEN9;
  while (kappa > 0) {
    d = p1 / div;
    if (d || *len) buffer[(*len)++] = '0' + d; /// Mp_inv1
    p1 %= div; kappa--;
    uint64_t tmp = (((uint64_t)p1)<<-one.e)+p2;
    if (tmp <= delta.f) { /// Mp_delta
      *K += kappa;
      grisu_round(buffer, *len, delta.f, tmp, ((uint64_t)div) << -one.e, wp_w.f);
      return;
    }
    div /= 10;
  }
  uint64_t unit = 1;
  while (1) {
    p2 *= 10; delta.f *= 10; unit *= 10;
    d = p2 >> -one.e;
    if (d || *len) buffer[(*len)++] = '0' + d;
    p2 &= one.f - 1; kappa--;
    if (p2 < delta.f) {
      *K += kappa;
      grisu_round(buffer, *len, delta.f, p2, one.f, wp_w.f*unit);
      return;
    }
  }
}
예제 #19
0
파일: main.c 프로젝트: RYWU/C-Cpp
int *GBB(int *arr1, int *arr2){ //arr1 > arr2;
    int ans = 1;
    while (notZero(arr1)==1 && notZero(arr2)==1) {
        if (arr2[0] % 2 == 0 && arr1[0] % 2 ==0){
            ans *= 2;
            //printf("ans*2\n");
            arr1 = divTwo(arr1);
            arr2 = divTwo(arr2);
            continue;
        }
        else if (arr2[0] % 2 == 0 && arr1[0] %2 == 1){
            arr2 = divTwo(arr2);
            continue;
        }
        else if (arr2[0] % 2 == 1 && arr1[0] %2 == 0){
            arr1 = divTwo(arr1);
            continue;
        }
        if (compare(arr1, arr2) == 1) {
            swap(arr1, arr2);
            //            printf("swap");
        }
        arr1 = minus(arr1, arr2);
        //        printf("minus\n");
    }
    printf("ans: %d\n", ans);
    printf("Final arr2:\n");
    printNum(arr2);
    
    return times(arr2, ans);
}
예제 #20
0
int Viewfinder::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
    _id = QWidget::qt_metacall(_c, _id, _a);
    if (_id < 0)
        return _id;
    if (_c == QMetaObject::InvokeMetaMethod) {
        switch (_id) {
        case 0: processFrames((*reinterpret_cast< int(*)>(_a[1]))); break;
        case 1: processFrame(); break;
        case 2: toggleCube(); break;
        case 3: toggleGourd(); break;
        case 4: paintCube(); break;
        case 5: paintGourd(); break;
        case 6: changeX(); break;
        case 7: changeY(); break;
        case 8: changeZ(); break;
        case 9: rotateX(); break;
        case 10: rotateY(); break;
        case 11: rotateZ(); break;
        case 12: plus(); break;
        case 13: minus(); break;
        case 14: openDirectory(); break;
        default: ;
        }
        _id -= 15;
    }
    return _id;
}
예제 #21
0
main() {
	char x[200], y[20];
	/*freopen("in1.txt", "rt", stdin);   
	freopen("out1.txt", "w+t", stdout);*/
	while(scanf("%s", x) == 1) {
		BigNumber s1, s2, Ans, A;
		sprintf(y, "%d", 1);
		s1 = Change(x), s2 = Change(y);
		A = s1;
		sprintf(y, "%d", 0);
		Ans = Change(y);
		int a, t = 0;
		for(a = 1; a < 300; a += 2, t = 1-t) {
			if(t == 0)
				Ans = addit(Ans, divis(s1, s2));
			else
				Ans = minus(Ans, divis(s1, s2));
			/*Print(s1);
			puts("");			
			Print(s2);
			puts("");*/
			s1 = multi(A, multi(s1, A));
			sprintf(y, "%d", (a+1)*(a+2));
			s2 = multi(s2, Change(y));

		}
		Print(Ans);
		puts("");
	}
	return 0;
}/*
예제 #22
0
파일: proces.c 프로젝트: no1fushi/study
int main(void){

	int kotae;
	int mode;

	puts("足し算(1)と引き算(2)掛け算(3)割り算(4)どの計算する?");
	puts("()の中の数字を入力してね!");
	scanf("%d", &mode);

	switch(mode){
		case 1:kotae = plus();
			break;
		case 2:kotae = minus();
			break;
		case 3:kotae = multi();
			break;
		case 4:kotae = div();
	}

	printf("答えは%dです",kotae);
	scanf("%d", &kotae);
	

	return 0;
}
예제 #23
0
int main(){
	FILE *fp = NULL;
	int operand1, operand2;
	char operator = ' ';
	int result, line = 0;

	fp = fopen("read.txt","r");
	if(fp!=NULL){
		fscanf(fp, "%d", &line);
	
		for(int i=0; i<line; i++) {
			fscanf(fp, "%d %c %d",&operand1, &operator, &operand2);
			switch(operator) {
				case '+':
				result = add(operand1, operator);
				break;
				case '-':
				result = minus(operand1, operator);
				break;
				case '*':
				result = mul(operand1, operator);
				case '/':
				result = div(operand1, operator);
				break;
			}		
			printf("%d %c %d = %d\n",
				 operand1, operator, operand2, result);
		}
	}
	return 0;
}
int main(){

	int i,j,k,l,test,t=1;

//	freopen("in.txt","r",stdin);

	scanf("%d",&test);

	while(test--){

		scanf("%d %d %d %d",&A,&B,&S1,&S2);

		node ans1=node(S2*B,A-S2);
		node ans2=node(S1*B,A-S1);
		
		node ans=minus(ans1,ans2);
		if(ans.num<0) ans.num*=-1;
		if(ans.den<0) ans.den*=-1;
		printf("Case %d: %d/%d\n",t++,ans.num,ans.den);
	
	}

	

	return 0;
}
예제 #25
0
int main()
{
	char input[10000] = {0,};
	char fir[100][100] = {0,}, sec[100] = {0,};
	int i, j, k, m;

	printf("수를 입력하세요 : ");
	gets(input);	
	printf("input:%s\n", input);
        
    for(i=0, j=0, k=0, m=0; input[i] != '\0'; i++){
		if((input[i] >= '0')&&(input[i] <= '9')||(input[i] == '.')){
			fir[j][k] = input[i];
			k++;
				if((input[i+1] < '0')||(input[i+1] > '9')){
					fir[j][k] = '\0';
					j++;
					k = 0;
				}
		}
		else if(input[i] != ' '){
			sec[m] = input[i];
			m++;
		}
    }
    sec[m] = '\0';

	int s = 0;
	if (sec[s] == '+') 
       plus(s);

printf("%d", minus(fir));
	return 0;
}
예제 #26
0
int				ft_printf_o2(unsigned long nb, t_flags f)
{
	int					len;
	char				*print;
	int					tmp_len;

	len = 0;
	tmp_len = 0;
	print = ft_itoa_base(nb, 8);
	if (f.hashtag == 1 && nb > 0 && f.precision < (int)ft_strlen(print))
		tmp_len += 1;
	if ((int)ft_strlen(print) < f.precision && f.precision >= 0)
		tmp_len += f.precision;
	else
		tmp_len += ft_strlen(print);
	if (tmp_len >= (int)f.len_field)
		len += print_number(print, f, nb);
	else if (f.minus == 1)
		len = minus(len, print, f, nb);
	else
	{
		while (len < (int)f.len_field - tmp_len)
			len += ft_putchar(' ');
		len += print_number(print, f, nb);
	}
	free(print);
	return (len);
}
예제 #27
0
int main () {
    int num;
    int j = 0;
    int k = i; // 증감된 i의 값을 k값에 대입

    printf("2진수로 바꿀 숫자를 입력해주세요. : ");
    scanf("%d",&num); // 매개변수에 값 입력

    if (num>=0){ // 입력받은 숫자가 양수일때
    plus(num);
    printf("\n");
    }
    else if(num<0){ // 입력받은 숫자가 음수일떼
        num = -num; // 입력받은 음수를 양수로 변환
        minus(num); 

        int l=i; // i값을 불러옴
        for (int l=i; l>=0; l--){ 
            if (story[l] == 0){ // 자리가 0이면 1을 더해줌
                story[l] = story[l] + 1;
                break; // 반복문 탈출
            }
                else if (story[l] == 1){ // 자리가 1이면 0으로                             // 바꿔줌
                    story[l] = 0;
                }
        }
        if (story[k] == 0) // 15와 같이 1111의 음수인 -15와 같은                       // 수를 2진법으로 표현하기 위해 앞자리를                        // 추가하고 1로 바꿔줌
                story[k] = 1;
        print(j); // 재귀함수를 이용해 출력
    }
    return 0;
}
예제 #28
0
int main()
{
	int num1;
	int num2;
	int result;
	char flag;
	printf("please input first number\n");
	scanf("%d",&num1);
	printf("please input char\n");
	scanf("%c",&flag);
	printf("please input second number\n");
	scanf("%d",&num2);
	switch(flag){
		case '+':
			result = sum(num1,num2);
		break;
		case '-':
			result = minus(num1,num2);
		break;
		case '*':
			result = multi(num1,num2);
		break;
		case '/':
			result = devide(num1,num2);
		break;
		default:
		break;
	}
	printf("result is : %d\n",result);
	return 0;
}
예제 #29
0
CalculatorDialog::CalculatorDialog(QWidget *parent): QDialog(parent),
        lastResult(0) {
    setWindowTitle(tr("Calculator with log"));

    //generating
    QVBoxLayout * mainLayout = new QVBoxLayout(this);
    QHBoxLayout * buttonsLayout = new QHBoxLayout();

    numberInput = new QLineEdit(this);
    QDoubleValidator * inputValidator = new QDoubleValidator( numberInput);
    numberInput->setValidator( inputValidator);

    QPushButton * plusB = new QPushButton("+",this);
    QPushButton * minusB = new QPushButton("-",this);
    QPushButton * multiplyB = new QPushButton("*",this);
    QPushButton * divideB = new QPushButton("/",this);

    //positioning
    mainLayout->addWidget( numberInput);
    mainLayout->addLayout( buttonsLayout);
    buttonsLayout->addWidget( plusB);
    buttonsLayout->addWidget( minusB);
    buttonsLayout->addWidget( multiplyB);
    buttonsLayout->addWidget( divideB);

    //connecting
    connect(plusB,SIGNAL(     clicked() ),SLOT( plus() ));
    connect(minusB,SIGNAL(    clicked() ),SLOT( minus() ));
    connect(multiplyB,SIGNAL( clicked() ),SLOT( multiply() ));
    connect(divideB,SIGNAL(   clicked() ),SLOT( divide() ));
    connect(plusB,SIGNAL(     clicked() ), numberInput, SLOT( setFocus() ));
    connect(minusB,SIGNAL(    clicked() ), numberInput, SLOT( setFocus() ));
    connect(multiplyB,SIGNAL( clicked() ), numberInput, SLOT( setFocus() ));
    connect(divideB,SIGNAL(   clicked() ), numberInput, SLOT( setFocus() ));
}
예제 #30
0
int main()
{
    add();
    minus();
    mutilplication();
    divide();
    return 0;
}