/* @note main context */ void gpsFhRxEvent(char c) { switch (state) { case WAIT: if (c == '$') setState(RECEIVING); break; case RECEIVING: switch (c) { CASE_FRAME_ERROR case '*': setState(CHECKSUM_H); break; default: checksum ^= c; if (ptr < &sentence[SENTENCE_LEN]) *ptr++ = c; } break; case CHECKSUM_H: switch (c) { CASE_FRAME_ERROR default: checksum ^= n2b(c) << 4; setState(CHECKSUM_L); } break; case CHECKSUM_L: switch (c) { CASE_FRAME_ERROR default: checksum ^= n2b(c); setState(WAIT); if (checksum != 0) { error(GPS_ERR_CHECKSUM_ERROR, &checksum); break; } if (ptr >= &sentence[SENTENCE_LEN]) { error(GPS_ERR_BUFFER_OVERFLOW, NULL); break; } *ptr = 0; gpsActivity(); gpsFrameEvent(sentence, ptr - sentence); } break; } }
int main(){ Node head1(3); Node n1(2); Node n2(1); Node n3(5); Node n4(6); head1.Left=&n1; head1.Right=&n3; n1.Left=&n2; n3.Right=&n4; Node head2(9); Node n1b(8); Node n2b(2); Node n3b(10); Node n4b(11); head2.Left=&n1b; head2.Right=&n3b; n1b.Left=&n2b; n3b.Right=&n4b; std::cout << " the median of the two arrays is : " << std::setprecision( 2 )<< arrayMedian(&head1,&head2)<<std::endl; return 0; }