int main(void) { int turn = 1; int opponent; printf("************************************\nWelcome to Rodney's guessing game !\n************************************\n\n"); printf("Enter a range of numbers from low to high \n"); printf("Low: "); scanf("%d", &low); printf("High: "); scanf("%d", &high); bigNum(); // checks which number is bigger int guess = (low + high)/2;// starts the guess in the middle printf("I will guess your number in %d turns or less\n\n", logBase2(high - low, 2));// teslls how many turns at max needed logbase2(n) printf("Choose a number between %d and %d\n\n", low, high); do { printf("#%d) Is your number %d (1)yes (2)Higher (3)Lower ? ", turn, guess); scanf("%d", &opponent); if(opponent == 2) // if higher { low = guess; double x = (((double)guess + (double)high)/2.0); guess = x; if(x > guess)// if (double)x is a number higher than integer guess round up { guess +=1; } } else if(opponent == 3) // if lower { high = guess; guess = ((low + guess)/2);// always round down } turn++; }while(opponent != 1 ); printf("\n\nYeah I guessed it right, I'm a computer that guessed your number in %d turns !!\n", turn-1); system("pause"); }
BigNum<T> operator*(BigNum<T>& bigNum1, BigNum<T>& bigNum2) { std::vector<T> vec; T sz = bigNum1.vec().size()+bigNum2.vec().size()-1; vec.reserve(sz); //initialize for (T i = 0; i < sz; ++i) { vec.push_back(0); } for (T i=0; i < bigNum2.vec().size(); ++i) { for (T j=0; j < bigNum1.vec().size(); ++j) { T val = bigNum2.vec()[i] * bigNum1.vec()[j]; vec[i+j] += val; } } T carry = 0; for (T i = 0; i < sz; ++i) { vec[i] += carry; carry = vec[i]/10; vec[i] = vec[i]%10; } while (carry > 0) { vec.push_back(carry%10); carry = carry/10; } BigNum<T> bigNum(vec); return bigNum; }
Point* HitProtein::fetchSubjectAlignedPart3DPointsForQuery(int queryStart, int queryEnd, string queryPart, int subjectStart, int subjectEnd, string subjectPart) { int sizeOfAlignment = subjectPart.size(); //cout << "align size" << sizeOfAlignment << endl; Point* subjectPoints = (Point*) malloc(sizeof(Point) * sizeOfAlignment); int numOfGapsInSubjectPart = 0; for (int i = 0; i < sizeOfAlignment; i++) { if (subjectPart[i] == '-') { Point bigNum(10000, 10000, 10000); subjectPoints[i] = bigNum; numOfGapsInSubjectPart++; } else { subjectPoints[i] = CAlpha_XYZ[subjectStart + i - numOfGapsInSubjectPart - 1]; } } /* cout << "subjectPoints:" << endl; for (int i = 0; i < sizeOfAlignment; i++) { if (i % 10 == 0) { cout << endl; } cout << subjectPoints[i].getX() << " "; } cout << endl; for (int i = 0; i < sizeOfAlignment; i++) { if (i % 10 == 0) { cout << endl; } cout << subjectPoints[i].getY() << " "; } cout << endl; for (int i = 0; i < sizeOfAlignment; i++) { if (i % 10 == 0) { cout << endl; } cout << subjectPoints[i].getZ() << " "; } cout << endl;*/ int numOfGapsInQueryPart = 0; for (int i = 0; i < queryPart.size(); i++) { if (queryPart[i] == '-') { numOfGapsInQueryPart++; } } int candidateQueryAlignedPartLength = queryEnd - queryStart + 1; Point* candidateQueryAlignedPart3DCoords = (Point*) malloc( sizeof(Point) * candidateQueryAlignedPartLength); int gapOffset = 0; for (int i = 0; i < queryPart.size(); i++) { if (queryPart[i] == '-') { gapOffset++; } else { candidateQueryAlignedPart3DCoords[i - gapOffset] = subjectPoints[i]; } } /* cout<<"query Part All XYZs:"<<endl; for (int i = 0; i < sizeOfAlignment - numOfGapsInQueryPart; i++) { if (i % 10 == 0) { cout << endl; } cout << candidateQueryAlignedPart3DCoords[i].getX() << " "; } cout << endl; for (int i = 0; i < sizeOfAlignment - numOfGapsInQueryPart; i++) { if (i % 10 == 0) { cout << endl; } cout << candidateQueryAlignedPart3DCoords[i].getY() << " "; } cout << endl; for (int i = 0; i < sizeOfAlignment - numOfGapsInQueryPart; i++) { if (i % 10 == 0) { cout << endl; } cout << candidateQueryAlignedPart3DCoords[i].getZ() << " "; } cout << endl; */ return candidateQueryAlignedPart3DCoords; }